模拟主从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. git远程仓库、提交代码操作

    初始化仓库 1.初始化 git init #或 git clone 远程仓库地址 git init 后续要添加远程仓库,git clone不需要再添加 2.连接仓库 git remote add 远程 ...

  2. Java学习(二十二)

    学了一个在css中叫font的样式: 感觉还是挺好用的 不过要注意如果把font放在最后,其他会使用默认值,可能会覆盖掉前面的 例如新学的行高 在font中语法是 font:30px/40px &qu ...

  3. [atAGC049E]Increment Decrement

    由于每一个操作的逆操作都存在,可以看作将$a_{i}$全部变为0的代价 先考虑第一个问题,即对于确定的$a_{i}$如何处理 如果仅能用第2种操作,定义点$i$的代价为以$i$为左端点或以$i-1$为 ...

  4. oracle和mysql的拼接查询

    oracle的 SELECT * FROM sys_user a WHERE 1=1 AND a.company_id || a.login_name IN('3001rddb414') 196676 ...

  5. 提升 RTC 音频体验 - 从搞懂硬件开始

    前言 RTC(实时音视频通信)技术的快速发展,助力了直播.短视频等互动娱乐形式的普及:在全球疫情持续蔓延的态势下,云会议需求呈现爆发式增长,进一步推动了 RTC 行业的快速发展.为了给客户提供稳定可靠 ...

  6. DVWA总结

    Brute Force,即暴力(破解),是指黑客利用密码字典,使用穷举法猜解出用户口令,是现在最为广泛使用的攻击手法之一,如2014年轰动全国的12306"撞库"事件,实质就是暴力 ...

  7. 浅谈java中的四个核心概念--思途青岛

    Java已经成为一个庞大而复杂的技术平台,对于开发人员而言,要想更好的掌握Java技术,深入理解底层的技术处理细节必不可少. 现在介绍下java的四个核心概念: 1.Java虚拟机 Java虚拟机的主 ...

  8. Codeforces 1188B - Count Pairs(思维题)

    Codeforces 题面传送门 & 洛谷题面传送门 虽说是一个 D1B,但还是想了我足足 20min,所以还是写篇题解罢( 首先注意到这个式子里涉及两个参数,如果我们选择固定一个并动态维护另 ...

  9. Codeforces 575A - Fibonotci

    题面传送门 题意: 给出 \(s_0,s_1,s_2,\dots,s_{n-1}\),对于 \(i\geq n\),有 \(m\) 个 \(s_i\) 满足 \(s_i\neq s_{i\bmod n ...

  10. Python中关于join函数的陷阱?

    目录 说明 数据说明 正确示例 错误示例 解决办法 说明 最近在用Python的join函数连接多个列表时,出现了如下两个错误,即合并类型不一致.折腾了很久才找到原因,真是基础不牢,地动山摇. Typ ...