mysql主主模式查看mysqlbinlog是如何记录的
目的,检查mysql主主模式,mysqlbinlog的工作模式
下面按步骤开始,masterA、masterB
1、在masterA上建立数据
create database mytest;
use mytest;
CREATE TABLE `mytest`.`student` ( `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `name` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `age` smallint(5) UNSIGNED NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
insert into student(name , age) values('张三',10 ),('李四',10),('王五',10);
查看masterA上的数据
mysql> use mytest;
Database changed
mysql> select * from student;
+----+------+-----+
| id | name | age |
+----+------+-----+
| 2 | 张三 | 10 |
| 4 | 李四 | 10 |
| 6 | 王五 | 10 |
+----+------+-----+
3 rows in set (0.08 sec)
再查看masterB上的数据
mysql> use mytest;
Database changed
mysql> select * from student;
+----+------+-----+
| id | name | age |
+----+------+-----+
| 2 | 张三 | 10 |
| 4 | 李四 | 10 |
| 6 | 王五 | 10 |
+----+------+-----+
3 rows in set (0.04 sec)
数据同步已完成;
在masterB上执行SQL,继续插入数据
mysql> insert into student(name , age) values('小红' , 6),('小明',7),('小强' ,8);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
masterB上查询
mysql> select * from student;
+----+------+-----+
| id | name | age |
+----+------+-----+
| 2 | 张三 | 10 |
| 4 | 李四 | 10 |
| 6 | 王五 | 10 |
| 7 | 小红 | 6 |
| 9 | 小明 | 7 |
| 11 | 小强 | 8 |
+----+------+-----+
6 rows in set (0.13 sec)
masterA上查询
mysql> select * from student;
+----+------+-----+
| id | name | age |
+----+------+-----+
| 2 | 张三 | 10 |
| 4 | 李四 | 10 |
| 6 | 王五 | 10 |
| 7 | 小红 | 6 |
| 9 | 小明 | 7 |
| 11 | 小强 | 8 |
+----+------+-----+
6 rows in set (0.13 sec)
下面分别查看两个binlog的变化
mysqlbinlog --base64-output=decode-rows -v --start-datetime="2019-10-18 14:40:00" --stop-datetime="2019-10-18 15:10:00" /data/mysql-files/mysql-bin.000004 >/data/masterB_bin.sql
mysqlbinlog --base64-output=decode-rows -v --start-datetime="2019-10-18 14:40:00" --stop-datetime="2019-10-18 15:10:00" /data/mysql/mysql-bin.000003 >/data/masterA_bin.sql
查看还原后的sql,发现每个SQL执行都有server id,mysql-binlog日志下是全部的执行SQL
# at 1412
#191018 14:32:42 server id 10 end_log_pos 1491 CRC32 0xef2d3048 Anonymous_GTID last_committed=4 sequence_number=5 rbr_only=yes
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 1491
#191018 14:32:42 server id 10 end_log_pos 1573 CRC32 0xf2dd3fdb Query thread_id=19 exec_time=0 error_code=0
SET TIMESTAMP=1571380362/*!*/;
BEGIN
/*!*/;
# at 1573
#191018 14:32:42 server id 10 end_log_pos 1635 CRC32 0x4cb22c69 Table_map: `mytest`.`student` mapped to number 98
# at 1635
#191018 14:32:42 server id 10 end_log_pos 1712 CRC32 0xb69ba142 Write_rows: table id 98 flags: STMT_END_F
### INSERT INTO `mytest`.`student`
### SET
### @1=2
### @2='张三'
### @3=10
### INSERT INTO `mytest`.`student`
### SET
### @1=4
### @2='李四'
### @3=10
### INSERT INTO `mytest`.`student`
### SET
### @1=6
### @2='王五'
### @3=10
# at 1712
#191018 14:32:42 server id 10 end_log_pos 1743 CRC32 0xc9db5fe2 Xid = 93
COMMIT/*!*/;
结论,双机热备模式,mysql增量备份在单一某个mysql服务器上也可以使用mysqlbinlog备份所有的数据增量