优点:
1.不需要下载安装
2.备份出来的是SQL,文本格式,可读性高,便于备份处理
3.压缩比较高,节省备份的磁盘空间
缺点:
4.依赖于数据库引擎,需要从磁盘把数据读出
然后转换成SQL进行转储,比较耗费cpu和内存,磁盘资源,数据量大的话效率较低
建议:
100G以内的数据量级,可以使用mysqldump
超过TB以上,我们也可能选择的是mysqldump,配合分布式的系统
1EB =1024 PB = 1000000 TB
参数解析
-A –all-databases:备份全部数据库
例子:实现全库备份
mysqldump -uroot -p123 -R -E --triggers --master-data=2 --single-transaction -A >/home/db.sql
-B–databases:备份几个数据库。参数后面所有名字参量都被看作数据库名。
备份 单个库或多个库数据,备份world和www库
mysqldump -uroot -p123 -R -E --triggers --master-data=2 --single-transaction -B world www >/home/db.sql
例子:备份world数据库下的city和country表
mysqldump -uroot -p123 -R -E --triggers --master-data=2 --single-transaction world city country >/home/db.sql
注意: 此种方法,只会备份建表+插入语句。所以,恢复前需要把库建好,而且要use到库中。
重点!!!!
必加参数讲解
-R 在备份时,同时备份存储过程和函数,如果没有会自动忽略
-E 在备份时,同时备份EVENT,如果没有会自动忽略
–triggers 在备份时,同时备份触发器,如果没有会自动忽略
–master-data=2
记录备份开始时 position号 ,可以作为将来做日志截取的起点。
–single-transaction,减少锁的(innodb引擎)快照功能
其他(不是必加的,了解下功能即可)
–set-gtid-purged=auto
auto , on
off
使用场景:在二进制日志中开启了gtid功能,备份时就需要添加,特别是在主从复制备份的时候,必须开启。
–max-allowed-packet=128M 备份的时候可能会遇到单独的表过大,然后报错,需要添加这个来扩大备份表的空间。
恢复:
mysql> show databases; 查看库
mysql> set sql_log_bin=0; 关闭当前端口的日志记录
mysql> source /tmp/bin.sql 导入
mysql> flush privileges; #刷新权限