+
80
-

mysql异步复制、半同步复制、增强半同步复制有什么区别不同?

请问mysql异步复制、半同步复制、增强半同步复制有什么区别不同?

网友回复

+
0
-

复制方式对比

除了异步复制和增强半同步复制之外,介于它们之间其实还有一种复制方式,叫半同步复制,只是从MySQL 5.7开始,逐渐被增强半同步所替代。那么这三种复制方式之间有什么异同呢?请参考如下表格

异步复制

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

半同步复制

半同步复制的执行步骤如下:

1、SQL 解析,会话T1(insert into t1 values(1000););

2、存储引擎处理;

3、写 binlog;

4、提交至存储;

5、等待从库成功接收 binlog 的返回信号;

6、反馈至客户端。

这种同步方式的最大缺点是会出现丢失数据的风险,在步骤 4 之后,主库出现会话 T2(select * from t1;),可以读取到 1000 这个值,但如果此时步骤 5 失败,从库是不能成功接收到 1000 这个值的,也就意味着表 t1 的 1000 在从库是丢失的。

增强半同步复制

增强半同步复制的执行步骤如下: 1、SQL 解析,会话 T1(insert into t1 values(1000););

2、存储引擎处理;

3、写 binlog;

4、等待从库成功接收 binlog 的返回信号;

5、提交至存储;

6、反馈至客户端。

增强半同步复制,号称无损半同步复制。在步骤 3 之后,如果主库出现会话 T2(select * from t1;),是读取不到 1000 这个值的。如果步骤 4 失败,主从都一样,不能成功提交 1000 这个值,确保数据的一致性。
我知道答案,我要回答