模拟主从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格式更新,不管主库更新了几个字段,从库都是全行更新。并且主键号与主库保持一致。

my42_Mysql基于ROW格式的主从同步的更多相关文章

  1. 浅析MySQL基于ROW格式的二进制日志

    上文分析的二进制日志实际上是基于STATEMENT格式的,下面我们来看看基于ROW格式的二进制日志,毕竟,两者对应的binlog事件类型也不一样,同时,很多童鞋反映基于ROW格式的二进制日志无法查到原 ...

  2. SQL SERVER 基于数据库镜像的主从同步(数据库镜像实践汇总)

    SQL SERVER 基于数据库镜像的主从同步 Author:chaoqun.guo    createtime:2019-03-26 目录 SQL SERVER 基于数据库镜像的主从同步... 1 ...

  3. MySQL基于ROW格式的数据恢复

    大家都知道MySQL Binlog 有三种格式,分别是Statement.Row.Mixd.Statement记录了用户执行的原始SQL,而Row则是记录了行的修改情况,在MySQL 5.6以上的版本 ...

  4. Mysql主从同步(1) - 概念和原理介绍 以及 主从/主主模式 部署记录

    Mysql复制概念Mysql内建的复制功能是构建大型高性能应用程序的基础, 将Mysql数据分布到多个系统上,这种分布机制是通过将Mysql某一台主机数据复制到其它主机(slaves)上,并重新执行一 ...

  5. 基于 CentOS Mysql 安装与主从同步配置详解

    CentOS Mysql 安装 Mysql (Master/Slave) 主从同步 1.为什么要使用主从同步 1.如果主服务器出现问题,可以快速切换到从服务器提供的服务 2.可以在从服务器上执行查询操 ...

  6. 基于mysql主从同步的proxy读写分离

    mysql-proxy 简介 MySQL Proxy是一个处于你的client端和MySQL server端之间的简单程序,它可以监测.分析或改变它们的通信.它使用灵活,没有限制,常见的用途包括:负载 ...

  7. Mysql 实现基于binlog的主从同步

    工作原理 1.主节点必须启用二进制日志,记录任何修改了数据库数据的事件.2.从节点开启一个线程(I/O Thread)把自己扮演成 mysql 的客户端,通过 mysql 协议,请求主节点的二进制日志 ...

  8. 基于xtrabackup的主从同步

    基于xtrabackup的主从同步 作者 刘畅 时间 2020-9-21 服务器版本:CentOS Linux release 7.5.1804 主机名 ip地址 服务器配置 安装软件 密码 mysq ...

  9. Mysql主从同步(复制)

    目录: mysql主从同步定义      主从同步机制 配置主从同步      配置主服务器      配置从服务器 使用主从同步来备份      使用mysqldump来备份      备份原始文件 ...

随机推荐

  1. 端口被占用(启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法)

    一.问题描述 在IntelliJ IDEA 中启动Tomcat服务器时就出现了如下图所示的错误: 错误: 代理抛出异常错误**: java.rmi.server.ExportException: Po ...

  2. Unity——技能系统(三)

    Unity技能系统(三) Unity技能系统(一) Unity技能系统(二) Demo展示 六.Buff系统 buff分为增益和减益buff,应该区分开来: /// <summary> / ...

  3. centos7.1使用kubeadm部署kubernetes 1.16.2的master高可用

    机器列表,配置域名解析 cat /etc/hosts192.168.200.210 k8s-master1192.168.200.211 k8s-master2192.168.200.212 k8s- ...

  4. myeclipse重写快捷键

    shift+alt+s 点击Override/Implments methods

  5. Java 代码审计 — 1. ClassLoader

    参考: https://www.bilibili.com/video/BV1go4y197cL/ https://www.baeldung.com/java-classloaders https:// ...

  6. HelloWorld与java运行机制

    HelloWorld 新建文件夹存放代码 新建一个java文件 文件后缀为.java Hello.java 注意文件拓展名改为java文件 编写代码 public class Hello{ #类名 p ...

  7. Linux下Zabbix5.0 LTS + Grafana8.2.2图形可视化

    Grafana是一款开源的可视化软件,可以搭配数据源实现一个数据的展示和分析:Grafana功能强大,有着丰富的插件,但Grafana默认没有zabbix作为数据源,需要手动给zabbix安装一个插件 ...

  8. 16-4SUM

    4.30更新,已经AC 18. 4Sum My Submissions QuestionEditorial Solution Total Accepted: 71102 Total Submissio ...

  9. JavaBean内省与BeanInfo

    Java的BeanInfo在工作中并不怎么用到,我也是在学习spring源码的时候,发现SpringBoot启动时候会设置一个属叫"spring.beaninfo.ignore", ...

  10. GraphScope 集群部署

    GraphScope 集群部署 1 k8s集群搭建 大致步骤如下: 安装docker.在ubuntu上,可以简单的通过命令sudo apt install docker.io来安装. 安装kubele ...