MysqL 复制方式对比、复制参数
上两小节从实战的角度介绍了如何搭建异步复制和增强半同步复制,我想您肯定会有疑问,都是 MysqL的主从复制,它们之间究竟有啥不同呢。本小节我们一起来学习 MysqL 复制方式的对比,以及相对比较重要的复制参数。
1. 复制方式对比
除了异步复制和增强半同步复制之外,介于它们之间其实还有一种复制方式,叫半同步复制,只是从MysqL 5.7开始,逐渐被增强半同步所替代。那么这三种复制方式之间有什么异同呢?请参考如下表格
异步复制 | 半同步复制 | 增强半同步复制 | |
---|---|---|---|
部署难度 | 低 | 低 | 低 |
维护难度 | 低 | 中 | 中 |
数据丢失 | 中 | 中低 | 极低 |
性能影响 | 低 | 中 | 中 |
1.1 异步复制
1.2 半同步复制
半同步复制的执行步骤如下:
这种同步方式的最大缺点是会出现丢失数据的风险,在步骤 4 之后,主库出现会话 T2(select * from t1;),可以读取到 1000 这个值,但如果此时步骤 5 失败,从库是不能成功接收到 1000 这个值的,也就意味着表 t1 的 1000 在从库是丢失的。
1.3 增强半同步复制
增强半同步复制的执行步骤如下:
增强半同步复制,号称无损半同步复制。在步骤 3 之后,如果主库出现会话 T2(select * from t1;),是读取不到 1000 这个值的。如果步骤 4 失败,主从都一样,不能成功提交 1000 这个值,确保数据的一致性。
2. 重要的复制参数
2.1 主库
log-bin
log-bin = /MysqL//log
server-id
推荐使用ip+端口号,
server-uuid
- log-bin-index
- binlog_format
- binlog_cache_size
- max_binlog_size
- expire_logs_days
2.2 从库
-
server-id:唯一区别ID,同一个集群内不可重复,从5.6开始可以动态修改,推荐使用ip+端口号,1013306;
-
server-uuid:唯一区别ID,同一个集群内不可重复,从5.6开始可以动态修改;32位的GUID,文件路径/MysqL/3306/auto.cn;
-
relay-log:relaylog文件名前缀,可以是全路径,不可以动态修改;复制进程io_thread读取过来存到本地的日志;
-
log-slave-updates:将 master 传输过来的变更操作,再次记录成本地 binlog,用于做二次复制,当做中继分发节点,不可以动态修改;
-
max_relay_log_size:限制每个 relaylog 的大小,推荐 128M 或 256M,可以动态修改。
3. 小结
本小节主要介绍了三种复制方式的异同点,以及一些比较重要的复制参数。