MySQL实现备份(1)

  • 完全备份和部分备份
  • 冷备份、热备份、温备份
    温备份适用于:myisam
    热备份适用于:innodb
  • 物理备份和逻辑备份

  • 完全备份:备份所有数据

  • 部分备份:只备份部分数据内容

两者第一次都需要做一次完全备份。

  • 增量备份:备份上一次备份后发生变化的数据。
  • 差异备份:备份上一次的完全备份后发生变化的数据文件

  • 冷备:读、写操作均不可进行,数据库停止服务

  • 温备:读操作可执行;但写操作不可执行
  • 热备:读、写操作均可执行
 MyISAM:温备,不支持热备
 InnoDB:都支持(一般使用热备)
  • 物理备份:直接复制数据文件进行备份
  • 逻辑备份:导出数据库里面的数据另存到一个文件。
逻辑备份是备份sql语句,在恢复的时候执行备份的sql语句实现数据库数据的重现
  • 用户数据:例如业务数据库
  • 二进制日志、innodb的事务日志
  • 用户账号、权限等(系统的mysql数据库里面)
  • 服务器的配置文件

  • 需要备份哪些数据

  • 多久备份一次(能容忍丢多少数据)
  • 备份产生的数据库负载压力
  • 备份需要花费的时间
  • 数据恢复需要的时间

备份完了要测试一下能否正常使用

  • 物理备份工具:实现冷备份,例如cp、tar、rsync等工具
  • 逻辑卷(LVM)快照功能(不常用)
  • 逻辑备份工具:mysqldump、xtrabackup、mysqlbackup等工具

  • mysqldump:mysql数据库自带的一个客户端工具

  • xtrabackup:一个专业的备份工具
  • MariaDB Backup: 相当于xtrabackup改用给名
  • mysqlbackup:mysql企业版(收费)里面有

  • 基于mysql协议向mysqld发起查询请求,并将查得的所有数据转换成insert等写操作语句保存文本文件中

  • 支持索引存储引擎,对MyISAM存储引擎进行温备,对InnoDB存储引擎支持热备以及完全备份、部分备份等功能。

有三种命令格式:

#格式一
mysqldump [OPTIONS] database [tables]   #支持指定数据库和指定多表的备份,但数据库本身定义不备份

#格式二
mysqldump [OPTIONS] -B DB1 [DB2 DB3...] #支持指定数据库备份,包含数据库本身定义也会备份

#格式三
mysqldump [OPTIONS] -A [OPTIONS]        #备份所有数据库,包含数据库本身定义也会备份
  • 格式一:备份一个数据库里面的所有表:
[root@CentOS8 ~]# mysqldump -u root -p'' hellodb
将hellodb这个数据库的信息查询出来并显示到屏幕

[root@CentOS8 ~]# mysqldump -u root -p'' hellodb  > hellodb.sql
将查询到的数据库信息重定向到一个文件中
  • 格式二:可以同时备份多个数据库
[root@CentOS8 ~]# mysqldump  -B hellodb  > hellodb.sql
  • 格式三:备份所有数据库
    注意:备份所有数据库的时候只会备份业务数据库和mysql数据库。
information_schema:内存里面的内容
performance_schema:记录性能相关的信息
sys:performance_schema的简化版

[root@CentOS8 ~]# mysqldump -A >hello.sql备份所有数据库的时候
-E, --events:#备份相关的所有event scheduler

-R, --routines:#备份所有存储过程和自定义函数

--triggers:#备份表相关触发器,默认启用,用--skip-triggers,不备份触发器

--default-character-set=utf8 #指定字符集

-F, --flush-logs #备份前滚动日志,锁定表完成后,执行flush logs命令,生成新的二进制日志文件,配合-A 或 -B 选项时,会导致刷新多次数据库。建议在同一时刻执行转储和日志刷新,可通过和--single-transaction或-x,--master-data 一起使用实现,此时只刷新一次二进制日志

--compact        #去掉注释,适合调试,节约备份占用的空间,生产不使用

-d, --no-data    #只备份表结构,不备份数据,即只备份create table

-t, --no-create-info #只备份数据,不备份表结构,即不备份create table

-n,--no-create-db #不备份create database,可被-A或-B覆盖

--flush-privileges #备份mysql或相关时需要使用

-f, --force       #忽略SQL错误,继续执行

--hex-blob        #使用十六进制符号转储二进制列,当有包括BINARY, VARBINARY,BLOB,BIT的数据类型的列时使用,避免乱码

-q, --quick     #不缓存查询,直接输出,加快备份速度

--master-data[=num]: #此选项须启用二进制日志,默认值为1

#1:所备份的数据之前加一条记录为CHANGE MASTER TO语句,适合于主从复制多机使用

#2:记录为被注释的#CHANGE MASTER TO语句,适合于单机使用,适用于备份还原

#此选项会自动关闭--lock-tables功能,自动打开-x | --lock-all-tables功能(除非开启--single-transaction)

MyISAM不支持事务,只能支持温备;不支持热备,所以必须先锁定要备份的库,而后启动备份操作

-x,--lock-all-tables #加全局读锁,锁定所有库的所有表,同时加--single-transaction或--lock-tables选项会关闭此选项功能,

注意:数据量大时,可能会导致长时间无法并发访问数据库

-l,--lock-tables #对于需要备份的每个数据库,在启动备份之前分别锁定其所有表,默认为on,--skip-lock-tables选项可禁用,对备份MyISAM的多个库,可能会造成数据不一致

#注:以上选项对InnoDB表一样生效,实现温备,但不推荐使用

InnoDB 存储引擎支持事务,可以利用事务的相应的隔离级别,实现热备

--single-transaction #备份的时候会开一个单独的事务来进行备份

#此选项Innodb中推荐使用,不适用MyISAM,此选项会开始备份前,先执行START TRANSACTION指令开启
事务

#此选项和--lock-tables(此选项隐含提交挂起的事务)选项是相互排斥.

备份大型表时,建议将--single-transaction选项和--quick结合一起使用
mysqldump -uroot -p -A -F --single-transaction
      --master-data=1 --flush-privileges
      --default-character-set=utf8 --hex-blob
      > ${BACKUP}/fullbak_${BACKUP_TIME}.sql

参数说明:

-u:指定用户名  -p:指定用户密码

-A:使用mysqldump的格式三,备份整个数据库

-F:执行flush logs命令,生成新的二进制日志文件

--single-transaction: #备份的时候会开一个单独的事务来进行备份

--hex-blob:有二进制数据就需要添加这个

${BACKUP}/fullbak_${BACKUP_TIME}.sql:备份文件存放路径,文件夹/文件_备份时间.sql

注意:
1. 有了-A:备份所有的数据库(自然也就备份了时间、存储过程这些)   -E -R --triggers都不需要加了

2.不建议在mysql中创建时间、触发器、函数这些。因为这样会加大mysql的负载
mysqldump -uroot -p -A -F  -x
      --master-data=1 --flush-privileges
      --default-character-set=utf8  --hex-blob
      > ${BACKUP}/fullbak_${BACKUP_TIME}.sql

使用模式:交互式和脚本式

交互式:
mysql [OPTIONS] [database]
脚本式:

mysql [OPTIONS] < /path/somefile.sql

cat /path/somefile.sql | mysql [OPTIONS]

mysql>source &#xA0; /path/from/somefile.sql

Original: https://www.cnblogs.com/heyongshen/p/16706435.html
Author: 背对背依靠
Title: MySQL实现备份(1)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578584/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux at命令详解

    大家好,我是良许。 在生活中,我们有太多的场景需要使用闹钟,比如早上7点起床,下午4点开会,晚上8点购物,等等。 [En] In life, we have too many sc…

    Linux 2023年5月27日
    098
  • python入门基础知识一(基于孙兴华python自动化)

    print(‘aaa’)等价于print(“aaa”) 英文单引号和双引号在字符串的输出上并无区别,但如果要打印这么一段话:I&#8…

    Linux 2023年6月7日
    084
  • CH9344 Windows驱动安装与GPIO使用教程

    USB 转四串口芯片 CH9344 用于为 USB 主机扩展 4 路高速异步串口,支持串口波特率高达 12Mbps。芯片内部高度集成,外围精简,提供 VIO 电源引脚,部分串口 I…

    Linux 2023年6月7日
    076
  • 面向对象设计的23种设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是…

    Linux 2023年6月7日
    086
  • 数据结构-表

    顺序表 #ifndef SEQLIST_H #define SEQLIST_H typedef int DataType; struct Node { int MaxNum; in…

    Linux 2023年6月7日
    054
  • npm常用命令

    npm install npm install=npm i。在git clone项目的时候,项目文件中并没有 node_modules文件夹,项目的依赖文件可能很大。直接执行,np…

    Linux 2023年6月13日
    096
  • 大天使之剑H5游戏超详细图文架设教程

    引言 想体验传奇游戏霸服的快乐吗?想体验满级VIP的尊贵吗?想体验一刀99999的爽快吗?各种极品装备、翅膀、宠物通通给你,就在大天使之剑! 本文讲解大天使之剑H5游戏的架设教程,…

    Linux 2023年6月7日
    097
  • Windows下使用ffmpeg录制摄像头+录屏+录系统音+录麦克风音,生成本地视频或推流

    实操: 录屏: ffmpeg.exe -r 1 -f gdigrab -i desktop -vcodec libx264 out.mp4 录制麦克风声音和摄像头的视频: ffmp…

    Linux 2023年6月7日
    076
  • 我们做了一个操作系统,不是Windows,也不是Linux

    这是一个操作系统,有和Windows一样的桌面,通过鼠标和键盘使用图形界面,但是不是Windows。 也有和Linux一样的终端,通过输入字符命令,即能处理本地的工作,还能远程操控…

    Linux 2023年6月6日
    074
  • AI芯片的软件挑战

    本文是记录会议【ICPA联盟微课 | 第1期】燧原科技李彬:AI芯片的软件挑战内容。不得不说,什么叫高屋建瓴。 芯片软件的5个衡量指标:算力利用率、开发效率、生态兼容性、可移植性、…

    Linux 2023年6月7日
    078
  • docker inspect 使用

    获取容器 IP 信息 docker inspect -f {{.NetworkSettings.IPAddress}} centos1 获取容器占用overlay2目录 docke…

    Linux 2023年6月6日
    095
  • 驳”一切不谈考核的管理都是扯淡”

    一、引子 以我个人的从业经验认为,研发人员的量化考核,始终是一个世界难题。正巧不久前在园子里看到了 “一切不谈考核的管理都是扯淡!”一文(下面简称为&#82…

    Linux 2023年6月13日
    082
  • Linux 系统安全加固经验总结

    本文为博主原创,转载请注明出处: 1. 禁止root密码登录 修改 /etc/ssh/sshd_config 中 允许root 用户登录 PermitRootLogin 的值改为 …

    Linux 2023年6月14日
    092
  • 剑指offer计划28(搜索与回溯算法困难)—java

    1.1、题目1 剑指 Offer 37. 序列化二叉树 1.2、解法 这题给我笑死了,我看到题解有个解法,我愿称之为神。 public class Codec { private …

    Linux 2023年6月11日
    087
  • Linux 如何设置开机自启动脚本

    https://blog.csdn.net/weixin_40343504/article/details/82457990 Original: https://www.cnblo…

    Linux 2023年6月13日
    096
  • win10安装redis

    下载地址:https://github.com/MicrosoftArchive/redis/releases 这个太慢了 https://github.com/ServiceSt…

    Linux 2023年5月28日
    0108
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球