Update MySQL_复制.md

This commit is contained in:
heibaiying 2019-12-30 15:57:10 +08:00 committed by GitHub
parent 7aaf9d1e85
commit 406660f682
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -25,10 +25,10 @@
MySQL 二进制日志是进行主从复制的基础,它记录了所有对 MySQL 数据库的修改事件,包括增删改查和表结构修改。当前 MySQL 一共支持三种二进制日志格式,可以通过 binlog-format 参数来进行控制,其可选值如下: MySQL 二进制日志是进行主从复制的基础,它记录了所有对 MySQL 数据库的修改事件,包括增删改查和表结构修改。当前 MySQL 一共支持三种二进制日志格式,可以通过 binlog-format 参数来进行控制,其可选值如下:
+ **STATEMENT**:段格式。是 MySQL 最早支持的二进制日志格式。其记录的是实际执行修改的 SQL 语句,因此在进行批量修改时其所需要记录的数据量比较小,但对于 UUID() 或者其他依赖上下文的执行语句,可能会在主备上产生不一样的结果。 + **STATEMENT**:段格式。是 MySQL 最早支持的二进制日志格式。其记录的是实际执行修改的 SQL 语句,因此在进行批量修改时其所需要记录的数据量比较小,但对于 UUID() 或者其他依赖上下文的执行语句,可能会在主备上产生不一样的结果。
+ **ROW**:行格式,是 MySQL 5.7 版本之后默认的二进制日志格式。其记录的是修改前后的数据因此在批量修改时其需要记录的数据量比较大,因为需要记录每一行语句修改后的结果。但其安全性比较高,不会导致主备出现不一致的情况。同时因为 ROW 格式是在从库上直接应用更改后的数据,其还能减少锁的使用。 + **ROW**:行格式,是 MySQL 5.7 版本之后默认的二进制日志格式。其记录的是修改前后的数据因此在批量修改时其需要记录的数据量比较大,但其安全性比较高,不会导致主备出现不一致的情况。同时因为 ROW 格式是在从库上直接应用更改后的数据,其还能减少锁的使用。
+ **MIXED**:是以上两种日志的混合方式,默认采用段格式进行记录,当段格式不适用时 (如 UUID() ),则默认采用 ROW 格式。 + **MIXED**:是以上两种日志的混合方式,默认采用段格式进行记录,当段格式不适用时 (如 UUID() ),则默认采用 ROW 格式。
通常在主备之间网络情况良好的时,可以优先考虑使用 ROW 格式,此时数据一致性最高,其次是 MIXED 格式。在设置 ROW 格式时,还有一个非常重要的参数 binlog_row_image 通常在主备之间网络情况良好的时,可以优先考虑使用 ROW 格式,此时数据一致性最高,其次是 MIXED 格式。在设置 ROW 格式时,还有一个非常重要的参数 binlog_row_image
### 1.2 binlog_row_image ### 1.2 binlog_row_image
@ -216,7 +216,7 @@ enforce-gtid-consistency = ON
STOP SLAVE IO_THREAD FOR CHANNEL ''; STOP SLAVE IO_THREAD FOR CHANNEL '';
``` ```
建立新的基于 GTID 复制链路,指定 MASTER_AUTO_POSITION = 1 表示由程序来自动确认开始同步的 GTID 的位置: 建立新的基于 GTID 复制链路,指定 `MASTER_AUTO_POSITION = 1` 表示由程序来自动确认开始同步的 GTID 的位置:
```shell ```shell
CHANGE MASTER TO MASTER_HOST='192.168.0.226',\ CHANGE MASTER TO MASTER_HOST='192.168.0.226',\
@ -367,7 +367,7 @@ MHA (Master High Availability) 是由 Perl 实现的一款高可用程序,相
1. 尝试从宕机 Master 中保存二进制日志; 1. 尝试从宕机 Master 中保存二进制日志;
2. 找到含有最新中继日志的 Slave 2. 找到含有最新中继日志的 Slave
3. 把最新中继日志应用到其他实例,实现各实例数据一致; 3. 把最新中继日志应用到其他实例,保证各实例数据一致;
4. 应用从 Master 保存的二进制日志事件; 4. 应用从 Master 保存的二进制日志事件;
5. 提升一个 Slave 为 Master 5. 提升一个 Slave 为 Master
6. 其他 Slave 向该新 Master 同步。 6. 其他 Slave 向该新 Master 同步。