加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MysqL复制方式对比、复制参数分析

发布时间:2023-09-21 10:15:59 所属栏目:MySql教程 来源:
导读:本小节我们一起来学习 MysqL 复制方式的对比,以及相对比较重要的复制参数。

1. 复制方式对比
除了异步复制和增强半同步复制之外,介于它们之间其实还有一种复制方式,叫半同步复制,只是从MysqL 5.7开始,逐渐被
本小节我们一起来学习 MysqL 复制方式的对比,以及相对比较重要的复制参数。

1. 复制方式对比
除了异步复制和增强半同步复制之外,介于它们之间其实还有一种复制方式,叫半同步复制,只是从MysqL 5.7开始,逐渐被增强半同步所替代。那么这三种复制方式之间有什么异同呢?
异步复制    半同步复制    增强半同步复制
部署难度    低    低    低
维护难度    低    中    中
数据丢失    中    中低    极低
性能影响    低    中    中

1.1 异步复制
在传统的复制中,binlog 的复制是异步的,啥时候复制到从库,以及是否复制成功,MysqL 是不管的,存在丢失数据的风险:

1.2 半同步复制
半同步复制的执行步骤如下:
sql 解析,会话T1(insert into t1 values(1000););
存储引擎处理;
写 binlog;
提交至存储;
等待从库成功接收 binlog 的返回信号;
反馈至客户端。
这种同步方式的最大缺点是会出现丢失数据的风险,在步骤 4 之后,主库出现会话 T2(select * from t1;),可以读取到 1000 这个值,但如果此时步骤 5 失败,从库是不能成功接收到 1000 这个值的,也就意味着表 t1 的 1000 在从库是丢失的。

1.3 增强半同步复制
增强半同步复制的执行步骤如下:
sql 解析,会话 T1(insert into t1 values(1000););
存储引擎处理;
写 binlog;
等待从库成功接收 binlog 的返回信号;
提交至存储;
反馈至客户端。
增强半同步复制,号称无损半同步复制。在步骤 3 之后,如果主库出现会话 T2(select * from t1;),是读取不到 1000 这个值的。如果步骤 4 失败,主从都一样,不能成功提交 1000 这个值,确保数据的一致性。

2. 重要的复制参数
2.1 主库
log-bin

binlog文件名前缀,可以是全路径,不可以动态修改

log-bin = /MysqL//log
server-id

唯一区别 ID,同一个集群内不可重复,从 5.6 开始可以动态修改

推荐使用ip+端口号,
server-uuid

唯一区别 ID,同一个集群内不可重复,从 5.6 开始可以动态修改:

位的GUID,文件路径/MysqL//auto.cn
log-bin-index
binlog索引文件前缀,也可以是全路径,不可以动态修改

binlog_format
binlog日志格式:statement、row、mixed三种,可以动态修改

binlog_cache_size
binlog写入的buffer,推荐1M-4M就足够,可以动态修改

max_binlog_size
限制每个binlog的大小,默认是1G,推荐128M或256M,可以动态修改

expire_logs_days
表示多少天后自动删除binlog,可以动态修改

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读取过来存到本地的日志;

relay-log-index:relaylog 索引文件前缀,也可以是全路径,不可以动态修改;

read-only:设置从库是否只读,但对super权限的用户不起作用,可以动态修改;

log-slave-updates:将 master 传输过来的变更操作,再次记录成本地 binlog,用于做二次复制,当做中继分发节点,不可以动态修改;

max_relay_log_size:限制每个 relaylog 的大小,推荐 128M 或 256M,可以动态修改。

3. 小结
本小节主要介绍了三种复制方式的异同点,以及一些比较重要的复制参数。

在实际应用场景中,MysqL 复制是使用最为广泛的,用来提高系统可用性、扩展性的设计手段,也是MysqL 迅速流行的关键原因。一般来说,从 MysqL 5.7 开始,都推荐使用增强半同步的复制方式,基本可以实现数据 0 丢失。

 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章