mysqlbinlog会伪装成一个slave,连接master请求指定的binlog file,
master接收到这个请求之后创建一个binlog dump线程推送binlog给伪装的slave。
[mysql@node01 ~]$ mysql -uroot -pabcd.1234 -hnode01
(root@node01) > create user repl@'%' identified by 'repl';
Query OK, 0 rows affected (0.02 sec)
(root@node01) > grant replication slave on *.* to repl@'%';
Query OK, 0 rows affected (0.02 sec)
(root@node01) > flush privileges;
Query OK, 0 rows affected (0.02 sec)
(root@node01) > show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 188727709 |
| mysql-bin.000002 | 159785045 |
| mysql-bin.000003 | 159789525 |
| mysql-bin.000004 | 159789766 |
| mysql-bin.000005 | 159893537 |
| mysql-bin.000006 | 136245273 |
| mysql-bin.000007 | 136326083 |
| mysql-bin.000008 | 136249690 |
| mysql-bin.000009 | 139036884 |
| mysql-bin.000010 | 138478059 |
| mysql-bin.000011 | 138811338 |
| mysql-bin.000012 | 138553112 |
| mysql-bin.000013 | 138802271 |
| mysql-bin.000014 | 138638672 |
| mysql-bin.000015 | 96156292 |
+------------------+-----------+
15 rows in set (0.00 sec)
通过linux screen实现进程后台执行
[root@node02 ~]# yum -y install screen
[mysql@node02 ~]$ mkdir binlog
[mysql@node02 ~]$ screen -S mysqlbinlog
[mysql@node02 ~]$ mysqlbinlog -R --raw --host=192.168.40.101 --user=repl --password=repl --port=3306 --stop-never mysql-bin.000001 -r /home/mysql/binlog/
ctrl+a+d --后台执行
[mysql@node02 ~]$ screen -ls
There is a screen on:
3074.mysqlbinlog (Detached)
1 Socket in /var/run/screen/S-mysql.
[mysql@node02 ~]$ cd binlog
[mysql@node02 binlog]$ ls -lh
total 2.1G
-rw-r----- 1 mysql mysql 180M Mar 27 16:32 mysql-bin.000001
-rw-r----- 1 mysql mysql 153M Mar 27 16:32 mysql-bin.000002
-rw-r----- 1 mysql mysql 153M Mar 27 16:32 mysql-bin.000003
-rw-r----- 1 mysql mysql 153M Mar 27 16:32 mysql-bin.000004
-rw-r----- 1 mysql mysql 153M Mar 27 16:32 mysql-bin.000005
-rw-r----- 1 mysql mysql 130M Mar 27 16:32 mysql-bin.000006
-rw-r----- 1 mysql mysql 131M Mar 27 16:32 mysql-bin.000007
-rw-r----- 1 mysql mysql 130M Mar 27 16:32 mysql-bin.000008
-rw-r----- 1 mysql mysql 133M Mar 27 16:32 mysql-bin.000009
-rw-r----- 1 mysql mysql 133M Mar 27 16:32 mysql-bin.000010
-rw-r----- 1 mysql mysql 133M Mar 27 16:32 mysql-bin.000011
-rw-r----- 1 mysql mysql 133M Mar 27 16:32 mysql-bin.000012
-rw-r----- 1 mysql mysql 133M Mar 27 16:32 mysql-bin.000013
-rw-r----- 1 mysql mysql 133M Mar 27 16:32 mysql-bin.000014
-rw-r----- 1 mysql mysql 92M Mar 27 16:32 mysql-bin.000015
参数解析
-R, --read-from-remote-server: 代表从远程mysql服务器上读取binlog。
--raw: requires -R. 被复制过来的binlog以二进制的格式存放,如果不加该参数则为text格式。
--stop-never: mysqlbinlog可以只从远程服务器获取指定的几个binlog,也可将不断生成的binlog保存到本地。
指定此选项,代表只要远程服务器不关闭或者连接未断开,mysqlbinlog就会不断的复制远程服务器上的binlog。
--to-last-log:代表mysqlbinlog不仅能够获取指定的binlog,还能获取其后生成的binlog,获取完了,才终止。
如果指定了--stop-never选项则会隐式打开--to-last-log选项。
mysql-bin.000001:代表从哪个binlog开始复制。
--stop-never-slave-server-id:在备份远程服务器的binlog时,mysqlbinlog本质上就相当于一个从服务器,
该选项就是用来指定从服务器的server-id。
-r, --result-file=name: 用于设置远程服务器的binlog,保存到本地的前缀。
例如对于mysql-bin.000001,如果指定--result-file=/test/backup-,则保存到本地后的文件名为/test/backup-mysql-bin.000001。
注意:如果将--result-file设置为目录,则一定要带上目录分隔符“/”。
例如--result-file=/test/,而不是--result-file=/test,否则保存到本地的文件名为/testmysql-bin.000001
标签:8.0,27,binlog,--,32,MySQL,-----,mysql
From: https://blog.51cto.com/dbprofessional/7230223