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