mysql 主从复制 row_my42_Mysql基于ROW格式的主从同步

模拟主从update事务,从库跳过部分update事务后,再次开始同步的现象

主库

mysql> select * from dbamngdb.isNodeOK;

+----+---------------------+-------+

| id | update_time | count |

+----+---------------------+-------+

| 1 | 2019-11-08 18:51:48 | 1 |

+----+---------------------+-------+

1 row in set (0.00 sec)

mysql> update dbamngdb.isNodeOK set count = count + 100;

Query OK, 1 row affected (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 0

从库

将从库的数据重置,相当于丢失了一部分事务

mysql> update dbamngdb.isNodeOK set count = 1;

Query OK, 1 row affected (0.03 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from isnodeok;

+----+---------------------+-------+

| id | update_time | count |

+----+---------------------+-------+

| 1 | 2019-11-08 18:51:48 | 1 |

+----+---------------------+-------+

1 row in set (0.03 sec)

主库

mysql> update dbamngdb.isNodeOK set count = count + 100;

Query OK, 1 row affected (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from dbamngdb.isNodeOK;

+----+---------------------+-------+

| id | update_time | count |

+----+---------------------+-------+

| 1 | 2019-11-08 18:51:48 | 201 |

+----+---------------------+-------+

1 row in set (0.00 sec)

从库

mysql> select * from isnodeok;

+----+---------------------+-------+

| id | update_time | count |

+----+---------------------+-------+

| 1 | 2019-11-08 18:51:48 | 201 |

+----+---------------------+-------+

1 row in set (0.03 sec)

当主库再次update时,从库的数据就跟主库一致了,这是因为ROW格式下,从库的update是全行更新,不管主库更新的有多少个字段。

关于所有列皆更新,实验如下:

从库修改字段

mysql> update dbamngdb.isNodeOK set update_time=now();

Query OK, 1 row affected (0.03 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from isnodeok;

+----+---------------------+-------+

| id | update_time | count |

+----+---------------------+-------+

| 1 | 2019-11-08 19:05:18 | 201 |

+----+---------------------+-------+

1 row in set (0.02 sec)

主库修改另外的字段

mysql> select * from dbamngdb.isNodeOK;

+----+---------------------+-------+

| id | update_time | count |

+----+---------------------+-------+

| 1 | 2019-11-08 18:51:48 | 201 |

+----+---------------------+-------+

1 row in set (0.00 sec)

mysql> update dbamngdb.isNodeOK set count = count + 100;

Query OK, 1 row affected (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from dbamngdb.isNodeOK;

+----+---------------------+-------+

| id | update_time | count |

+----+---------------------+-------+

| 1 | 2019-11-08 18:51:48 | 301 |

+----+---------------------+-------+

1 row in set (0.00 sec)

再次查看从库,我们预期从库的update_time字段值变化为主库的字段值

mysql> select * from isnodeok;

+----+---------------------+-------+

| id | update_time | count |

+----+---------------------+-------+

| 1 | 2019-11-08 18:51:48 | 301 |

+----+---------------------+-------+

1 row in set (0.03 sec)

结果与预期一致,这就是ROW格式更新,不管主库更新了几个字段,从库都是全行更新。并且主键号与主库保持一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值