MySQL备份工具之mysqldump使用说明

一、备份分类

根据能否停用数据库,将备份类型分为: 
1. 冷备:数据库服务停止后备份 
2. 温备:只能对数据库进行读操作,不能进行写操作 
3. 热备:在线备份,可以对数据库进行读写操作 
 
根据是直接备份数据库文件还是数据库里面的数据,将备份类型分为:、 
1. 物理备份:直接复制数据库文件 
2. 逻辑备份:将数据导出到文本文件中 
 
根据备份是备份全部内容还是部分内容,将备份类型分为: 
1. 完全备份:full backup,备份全部数据 
2. 差异备份:fidderential backup,只备份上次完全备份以来变化的数据 
3. 增量备份:incrementl backup,只备份上次完全增量备份以后的数据 
注:因此数据库备份策略一般是完全备份+增量备份,或者完全备份+差异备份 

   

二、备份工具

mysqldump:是逻辑备份工具,mysqldump进行温备份,备份时需要加上一个全局锁,客户端只能进行读操作。 
 
mysqlbackup:对于innodb引擎的表mysqlbackup可以进行热备;但是对于非innodb表mysqlbackup就只能温备了。 
 
Xtrabackup: 
1.xtrabackup是一种物理备份工具,通过协议连接到mysql服务端,然后读取并复制innodb底层的"数据块",完成所谓的"物理备份"。 
2.支持对innodb进行热备、增量备份、差量备份。 
3.支持对myisam进行温备,因为在备份myisam表时,会对myisam表添加读锁,而且不能对myisam表进行增量备份,每次备份myisam数据都是全量,即使名义上是增量,但是实际上仍然是全量。 
 
注:innodb引擎热备,myism引擎温备。 

   

三、备份工具mysqldump

常用选项: 
--add-drop-database:每个数据库创建之前添加drop数据库语句 
-A,--all-databases: Dump all the databases 
-B,--databases: --databases db1 db2... 备份指定的多个库 
--x,--lock-all-tables:请求锁定所有表之后在备份 
-l,--lock-tables:锁定指定的表 
--single-transaction:能够对InnoDB存储引擎实现热备 
--events:为备份的数据库备份事件 
--routines:备份routines(存储过程和函数) 
--triggers:为每个备份的表备份trigger 
-q,--quick:快速导出,备份时逐行读取表而非一次全部行后缓冲在内存中。在备份大表时有用。 
-F,--flush-logs:备份前,请求到锁之后滚动日志 
--all-tablespaces,-Y: 备份所有表空间 
--force, -f:即使发现sql错误,仍然继续备份 
--no-data, -d:只导出表结构 
--tables:覆盖 --databases or -B选项,后面所跟参数被视作表名 
--add-drop-table:在每个创建数据库表语句前添加删除数据库表的语句 
--add-locks:备份数据库表时锁定数据库表; 
--comments:添加注释信息; 
--compact:压缩模式,产生更少的输出 
--complete-insert:输出完成的插入语句 
--default-character-set:指定默认字符集 
--host:指定要备份数据库的服务器; 
--lock-tables:备份前,锁定所有数据库表 
--no-create-db:禁止生成创建数据库语句 
--no-create-info:禁止生成创建数据库库表语句 
--password:连接MySQL服务器的密码 
--port:MySQL服务器的端口号 
--user:连接MySQL服务器的用户名 
--socket,-S:指定连接mysql的socket文件位置 
 
--master-data=[0|1|2]:记录二进制日志文件及位置 
0表示不记录 
1表示记录change master语句 
2记录为注释的change master语句 
 
--opt是quick,add-drop-table,add-locks,extended-insert,lock-tables几个参数的合称,一般都要使用 
 
注:备份和恢复的过程比较慢,很难实现差异或增量备份恢复,如果目标库不存在,需要事先手动创建。 
 
本次实验操作用的是mariadb,默认引擎为innodb 
下面用mysqldump工具进行mysql数据库备份操作: 
 
方法一:锁表,滚动日志,备份 
MariaDB [(none)]> flush tables with read lock;  #锁表,只能读不能写 
Query OK, 0 rows affected (0.00 sec) 
 
MariaDB [(none)]> flush logs;  #滚动日志 
Query OK, 0 rows affected (0.00 sec) 
 
mysqldump -uroot -p123456  --databases zabbix | gzip > /opt/zabbix.sql.gz 
 
方法二:适用于MyISAM存储引擎 
mysqldump -uroot -p123456 --database zabbix --lock-all-tables --flush-logs | gzip > /opt/zabbix.sql.gz 
 
方法三:使用于innodb存储引擎,innodb支持热备,mariadb默认支持innodb引擎 
mysqldump -uroot -p123456 --database zabbix --single-transaction --flush-logs | gzip > /opt/zabbix.sql.gz 
 
扩展:既然熟悉了mysqldump命令,那么可不可以写一个mysql的备份脚本呢?同时用邮件的方式发送通知给管理员? 
 
 
总结:mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump备份就不太适合。    

   

四、使用mysqldump进行增量备份


发布评论
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

mysql使用navicat和mysqldump导出数据知识解答
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。