用Mysqlbinlog备份BinLog文件

默认情况下, mysqlbinlog读取二进制文件【BinLog】并以文本的方式呈现【text format】.mysqlbinlog可以直接地从本地读取Log,也可以读取远程的Log【--read-from-remote-server】,默认是直接输出,当然也可以保存到指定的输出文件中。如:

1.显示有哪些Log文件:

show binary logs;如:

2.Load指定的文件,如 mysqlbinlog --read-from-remote-server --host=host_name --user=user_name --password=user_password --raw  binlog.000002 binlog.000003 [多个用空格分开] 【如果要Dump到指定位置,需要加 --result-file=/var/log/】

也可以Dump从某文件开始的所有BinLog文件,如

 mysqlbinlog --read-from-remote-server --host=host_name --user=user_name --password=user_password --raw --to-last-log binlog.000002[会Load 自000002之后的所有Log文件]

这时如果你想不间断的Load binLog文件,即保持连接不断地从Server上拷贝新的Log文件。

mysqlbinlog --read-from-remote-server --host=host_name --user=user_name --password=password --raw --to-last-log binlog.000002 --stop-never

也可以使用mysqldump来创建一个Dump文件【作为当前ServerData的一个快照】。在生成快照时,要使用--all-databases[如果要Dump所有库],--events[事件],

--routines 同时要--master-data=2[在BinLog中包含坐标位置]。如

mysqldump --host=host_name --all-databases --events --routines --master-data=2> dump_file

 一旦数据丢失,你可以使用Dump文件来恢复,如 mysql --host=host_name -uroot -p < dump_file

然后可以使用备份的BinLog文件找回丢失数据【重做备份之后的数据】

假设数据的BinLog的位置为: File=binLog.001002  Pos=27284

mysqlbinlog --start-position=27284 binlog.001002 binlog.001003 binlog.001004 [这只是输出]

要想重做需使用CHANGE MASTER TO 语句。也请参考:

18.1.3.3 Using GTIDs for Failover and Scaleout

还原Error:http://www.cnblogs.com/zhoujinyi/p/4717951.html

原文地址:https://www.cnblogs.com/itdev/p/6013608.html