结合mysqlbinlog与mysqldump进行MySQL数据备份与恢复(适用于较小的数据量)

通过mysqlbinlog工具备份二进制日志文件

mysqlbinlog  --read-from-remote-server --host=192.168.83.37 --port=55944 --user=us_yanzhaozhang --password --raw --to-last-log VMS00782-bin.000001
mysqlbinlog  --read-from-remote-server --host=192.168.83.37 --port=55944 --user=us_yanzhaozhang --password VMS00782-bin.000001  VMS00782-bin.000002  VMS00782-bin.000003 ...  VMS00782-bin.000017  

上述两条命令会将mysqlbinlog连接到的主机中的由VMS00782-bin.000001开始至最后一个二进制日志文件备份到启动mysqlbinlog的目录中。其中–raw参数表明输出二进制格式的文件而非文本格式,–read-from-remote-serve参数表明要连接至该server请求其二进制日志。需要注意的是即使是在本地也需要列出–read-from-remote-server参数。

默认情况下,上述命令会在备份完成后立即断开连接,若想保持连接进行持续备份可添加–stop-never参数。

mysqlbinlog  --read-from-remote-server --host=192.168.83.37 --port=55944 --user=us_yanzhaozhang --password --raw --stop-never VMS00782-bin.000001

指定了–stop-never参数后无需再指定–to-last-log参数。

默认情况下,mysqlbinlog 备份的二进制日志文件保持原名,且存放在当前目录中。可通过–result-file参数改变这个行为,该参数指定了输出文件名的前缀,假定原名为VMS00782-bin.000009,若指定–result-file=x则输出
为xVMS00782-bin.000001,若指定–result-file=/backup/则输出为/backup/VMS00782-bin.000001,若指定–result-file=/backup/x则输出为/backup/xVMS00782-bin.000001。

使用mysqldump和mysqlbinlog进行备份和恢复

假定欲备份的主机中第一个二进制日志文件为VMS00782-bin.000010
首先使用mysqlbinlog进行二进制日志文件的持续备份

mysqlbinlog  --read-from-remote-server --host=192.168.83.37 --port=55944 --user=us_yanzhaozhang --password --raw --stop-never VMS00782-bin.000010

然后使用mysqldump创建备份文件

mysqldump --host=192.168.83.37 --port=55944 --user=us_yanzhaozhang --password --all-databases --events --routines --master-data=2 > dump.sql

若发生数据丢失则使用最近的备份来恢复数据

mysql --host=192.168.83.37 -uus_yanzhaozhang -p -P55944 < dump.sql

根据dump.sql备份文件中– CHANGE MASTER TO MASTER_LOG_FILE=’VMS00782-bin.000018′, MASTER_LOG_POS=27284语句中的二进制日志文件名和位置重新执行该坐标之后的二进制日志备份文件中的事件。

若最新的二进制日志备份文件为VMS00782-bin.000020,如下重新执行日志事件

mysqlbinlog --start-position=27284 VMS00782-bin.000018 VMS00782-bin.000019 VMS00782-bin.000020| mysql --host=192.168.83.37 -uus_yanzhaozhang -p -P55944
标签:备份MySQL 发布于:2019-11-08 12:15:30