数据库备份
备份必加参数:
-R:在备份时,同时备份存储过程和函数,相当于linux的shell脚本
-E:在备份时,同时备份event,相当于linux里的定时备份命令crontab
--triggers:在备份时同时备份触发器,
--master-data=2:记录备份开始时的position号,可作为将来做日志截取的起点,另外还具备备份自动锁表的功能。如果配合参数--single-transaction使用,可以针对innodb引擎的mysql优化锁表备份的锁的时间。
--single-transaction:对于innodb的表实现快照备份,不锁表。
--set-gtid-purged=on:读取原来的gtid号,顺着原来的gtid号往下进行,默认为auto,这个参数主要用在备份主从复制时用到的参数,在日常备份参数中可以不写,如果非要写可以,可以设置为--set-gtid-purged=OFF,写上这个的好处就是屏幕打印没有警告提示信息了,如果不理解可以使用加参数和不加参数的两条语句备份对比一下。
1使用-A进行全库备份
[root@instance-r5y0pf5d ~]# mkdir -p /data/backup
[root@instance-r5y0pf5d ~]# mysqldump -uroot -p123456 -A -R -E --triggers --master-data=2 -- single-transaction -S /tmp/mysql.sock >/data/backup/full.sql
优化后的备份语句(日常):
mysqldump -uroot -p123456 -A -R -E --triggers --master-data=2 -- single-transaction -S /tmp/mysql.sock >/data/backup/full2.sql
优化后的备份语句(主从复制):
mysqldump -uroot -p123456 -A -R -E --triggers --master-data=2 --single-transaction --set-gtid-purged=ON -S /tmp/mysql.sock >/data/backup/full2.sql
2使用-B备份单库或多个库(备份world和wl2020v2这两个库)
[root@instance-r5y0pf5d ~]# mysqldump -uroot -p123456 -B world wl2020v2 -S /tmp/mysql.sock >/data/backup/db.sql
3备份某个库下的一张或者多张表(备份world库下的city和country两张表,不包括建库语句)
[root@instance-r5y0pf5d ~]# mysqldump -uroot -p123456 world city country -S /tmp/mysql.sock >/data/backup/tab.sql
4备份world库下的所有表(不包括建库语句)
[root@instance-r5y0pf5d ~]# mysqldump -uroot -p123456 world -S /tmp/mysql.sock >/data/backup/tab.sql
5--max-allowed-packet=128M
如果要备份的数据表非常的大,报错说超出数据包大小,那么我们在备份的时候就可以加上这个参数,例如设置包的大小为128M
mysqldump -uroot -p123456 -A -R -E --triggers --master-data=2 --max-allowed-packet=128M --single-transaction --set-gtid-purged=ON -S /tmp/mysql.sock >/data/backup/full2.sql
实战:
1备份:
[root@instance-r5y0pf5d ~]# mysqldump -uroot -p123456 -B wl2020v2 -R -E --triggers --master-data=2 --single-transaction -S /tmp/mysql.sock >/data/backup/wl2020v2001.sql
2恢复:
mysql> source /data/backup/wl2020v2001.sql
1
1
1
1
1

浙公网安备 33010602011771号