mysqlbinlog 做实时增量备份是很有必要的,公司开发层误删过整个data目录,如果没有对binlog做实时备份。也没有从库的环境下,恢复也是很麻烦的。有了binlog再结合全备做基于时间点的恢复还是很方便的。

用法:

mkdir -p /backup_binlog mysqlbinlog -h56.56.56.207 -P3306 -ubackup -p123456 -R --raw --stop-never  mysql-bin.000003 -r /backup_binlog/ &


[root@mysql_duizhang ~]# mysql  -uroot -p123456 -e "show binary logs"
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |       177 |
| mysql-bin.000002 |     93166 |
| mysql-bin.000003 |   1266693 |
| mysql-bin.000004 |   1190364 |
+------------------+-----------+


可以看到,把从3开始的binlog都拉取过来了。


[root@localhost backup_binlog]# ll
total 2404
-rw-r-----. 1 root root 1266693 Dec 29 22:20 mysql-bin.000003
-rw-r-----. 1 root root 1190364 Jan  8 22:42 mysql-bin.000004


源端提交了事务之后,会持续拉取最新的binlog到本地。

参数介绍:

         -R  : --read-from-remote-server 表示开启binlog备份,在对应的主节点上请求binlog到本地。
       --raw : 被复制过来的binlog以二进制的格式存放,如果不加该参数则为text格式。
         -r  : --result-file 指定目录或文件名
          -t : 这个选项代表从指定的binlog开始拉取,直到当前主节点上binlog的最后一个。
--stop-never : 持续连续从主节点拉取binlog,持续备份到当前最后一个.会一直拉取,直到mysql服务停止
--stop-never-slave-server-id : 默认值65535,用于在多个mysqlbinlog进程或者从服务器的情况下,避免id冲突。

mysqlbinlog开始备份后,直到mysql服务关闭或者被强制kill才会结束。