当前位置: 代码迷 >> 综合 >> mysqldump (MDP)进行逻辑备份数据库
  详细解决方案

mysqldump (MDP)进行逻辑备份数据库

热度:26   发布时间:2024-02-23 13:31:52.0

优点:
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;    #刷新权限
  相关解决方案