模拟主从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. 用 Node.js 实现的最简单的 HTTP 服务器

    用 Node.js 实现的最简单的 HTTP 服务器 //app.js var http = require('http'); http.createServer(function(req, res) ...

  2. mongo笔记

    获取stats from pymongo import MongoClient client = MongoClient() db = client.test # print collection s ...

  3. 配置Google支付相关参数(client_id, client_secret, refresh_token)

    1. 登陆Google开发者账号,点击左边API权限 Google控制台 创建新项目 转到 Google Play 管理中心的 API 权限页面. 接受<服务条款>. 点击创建新项目. 系 ...

  4. 【数据结构】【图文】【oj习题】 图的拓扑排序(邻接表)

    拓扑排序: 按照有向图给出的次序关系,将图中顶点排成一个线性序列,对于有向图中没有限定次序关系的顶点,则可以人为加上任意的次序关系,由此所得顶点的线性序列称之为拓扑有序序列.显然对于有回路的有向图得不 ...

  5. [loj3069]整点计数

    1.基础知识 定义 定义1.1(高斯整数):$\mathbb{Z}[i]=\{a+bi\mid a,b\in Z\}$(其中$i$为虚数单位,即$i^{2}=-1$) 定义1.2(范数):$N(\al ...

  6. [bzoj1711]吃饭

    由于无法直接将果汁和饮料连边,所以将人放在中间,果汁和饮料放在两侧,然后分别向对应的人连边.同时,为了保证每一个人只被算一次,对每一个人裂点,两个点中间连一条流量为1的边. 1 #include< ...

  7. [atARC070E]NarrowRectangles

    记$len_{i}=r_{i}-l_{i}$,即第$i$个区间的长度 用$f_{i,j}$表示前$i$个区间合法,第$i$个区间位于$[j,j+len_{i}]$的最小代价,暴力dp的时间复杂度为$o ...

  8. [loj3247]Non-Decreasing Subsequences

    分治,考虑分治到[l,r]的区间(设$mid=(l+r)/2$),将询问分为两类:1.在左/右区间,直接递归下去:2.跨越中间,那么处理出两个数组:L[i][j]表示左区间在开头第i个位置,以数字j为 ...

  9. 智能 Request 推荐,K8s 资源利用率提升 252%

    作者 王孝威,FinOps 认证从业者,腾讯云容器服务产品经理,热衷于为客户提供高效的 Kubernetes 使用方式,为客户极致降本增效服务. 余宇飞,FinOps 认证从业者,腾讯云专家工程师,从 ...

  10. Maven pom常用plugins配置说明

    maven-compiler-plugin 编译Java源码,一般只需设置编译的jdk版本 <plugin> <groupId>org.apache.maven.plugins ...