在 Mixed 模式下,MySQL 会根据执行的每一条具体的 SQL 语句来区分对待记录的日志形式,也就是在 statement 和 row 之间选择一种。
如果SQL语句为UPDATE/DELETE等修改语句时,并不是所有操作都以ROW模式记录变更操作。

测试Demo:

## 创建测试表
CREATE TABLE TB001(ID INT AUTO_INCREMENT PRIMARY KEY,C1 INT,C2 INT); ## 插入测试数据
INSERT INTO TB001(C1,C2)VALUES(1,1); ## 更新数据
UPDATE TB001 SET C2=2 WHERE C1=1;

查看生成的BINLOG事件:

SHOW BINLOG EVENTS IN 'mysql-bin.000002' FROM 9150 LIMIT 100;
+------------------+-------+------------+-----------+-------------+--------------------------------------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+------------------+-------+------------+-----------+-------------+--------------------------------------------------------------------+
| mysql-bin.000002 | 9520 | Gtid | 6322494 | 9585 | SET @@SESSION.GTID_NEXT= '4f268bbc-f79e-11e8-8d9d-b8ca3af84795:39' |
| mysql-bin.000002 | 9585 | Query | 6322494 | 9666 | BEGIN |
| mysql-bin.000002 | 9666 | Intvar | 6322494 | 9698 | INSERT_ID=1 |
| mysql-bin.000002 | 9698 | Query | 6322494 | 9809 | use `db001`; INSERT INTO TB001(C1,C2)VALUES(1,1) |
| mysql-bin.000002 | 9809 | Xid | 6322494 | 9840 | COMMIT /* xid=1903 */ |
| mysql-bin.000002 | 9840 | Gtid | 6322494 | 9905 | SET @@SESSION.GTID_NEXT= '4f268bbc-f79e-11e8-8d9d-b8ca3af84795:40' |
| mysql-bin.000002 | 9905 | Query | 6322494 | 9986 | BEGIN |
| mysql-bin.000002 | 9986 | Query | 6322494 | 10094 | use `db001`; UPDATE TB001 SET C2=2 WHERE C1=1 |
| mysql-bin.000002 | 10094 | Xid | 6322494 | 10125 | COMMIT /* xid=1904 */ |
+------------------+-------+------------+-----------+-------------+--------------------------------------------------------------------+

可以发现UPDATE操作被以STATEMENT格式进行记录。

====================================================

运维建议:

建议配置线上生产环境binlog_format=ROW,保证主从数据一致。

MySQL Binlog--MIXED模式下数据更新的更多相关文章

  1. MySQL Binlog Mixed模式记录成Row格式

    背景: 一个简单的主从结构,主的binlog format是Mixed模式,在执行一条简单的导入语句时,通过mysqlbinlog导出发现记录的Binlog全部变成了Row的格式(明明设置的是Mixe ...

  2. MySQL在ROW模式下通过binlog提取SQL语句

    Linux基于row模式的binlog,生成DML(insert/update/delete)的rollback语句通过mysqlbinlog -v 解析binlog生成可读的sql文件提取需要处理的 ...

  3. mysql 在row模式下truncate 与 delete 二进制日志记录的差异

    二进行日志的格式为row mysql> show variables like 'binlog_format'; +---------------+-------+ | Variable_nam ...

  4. EF.Mysql在codefirst模式下调用存储过程,和再DbFirst模式下的调用

    List<GetUserUpCrmList_Result> r = null; using (var context = new HimallContext()) { var parame ...

  5. Mysql的二进制日志binlog的模式说明

    binlog模式总共可分为以下三种:row,statement,mixed 1.Row日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改,只记录要修改的数据,只有value ...

  6. 转载-MySQL binlog三种模式及设置方法

    原文地址:http://www.cnblogs.com/yangliheng/p/6187327.html 1.1 Row Level  行模式 日志中会记录每一行数据被修改的形式,然后在slave端 ...

  7. mysql row日志格式下 查看binlog sql语句

    有时候我们需要使用row作为binlog的日志格式,即配置文件使用了binlog_format= row 参数 这样以来,我们在查看数据库binlog内容时候,就看不到增删改查的具体语句了,在数据库恢 ...

  8. MySQL binlog日志三种模式选择及配置

    在认识binlog日志三种模式前,先了解一下解析binlog日志的命令工mysqlbinlog.mysqlbinlog工具的作用是解析mysql的二进制binlog日志内容,把二进制日志解析成可以在M ...

  9. mysql binlog日志的三种模式

    1.statement level模式 每一条会修改数据的sql都会记录到master的bin-log中.slave在复制的时候sql进程会解析成和原来master端执行过的相同的sql来再次执行.优 ...

随机推荐

  1. python nltk 安装及配置说明

    本教程采用pip安装方式,前期需要在本机安装setuptools 及pip 网上铺天盖地的说了很多关于nltk的说明,特别是后期nltk_data 手动下载操作,多数都不好使,这里整理 用pip安装n ...

  2. 最短路径:Dijkstra & Floyd 算法图解,c++描述

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. mysql修改lower_case_table_names产生的问题

    1.参数含义: lower_case_table_names: 此参数不可以动态修改,必须重启数据库 lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区 ...

  4. tf之变量与作用域

    生成变量 tensorflow生成变量有两种方式,Variable 和 get_variable Variable(initial_value=None, trainable=True, collec ...

  5. leetcode第72题:编辑距离

    给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: 输 ...

  6. VOOKI:一款免费的Web应用漏洞扫描工具

    Vooki是一款免费且用户界面友好的Web应用漏扫工具,它可以轻松地为你扫描任何Web应用并查找漏洞.Vooki主要包括三个部分,Web应用扫描器,Rest API扫描器以及报告.Web应用扫描器​V ...

  7. 并行【parallel】和并发【concurrency】线程是并发还是并行,进程是并发还是并行

    线程是并发,进程是并行:进程之间相互独立,是系统分配资源的最小单位,同一个线程中的所有线程共享资源. 并行,同一时刻多个任务同时在运行. 并发,在同一时间内隔内多个任务都在运行,但是都不会在同一时刻同 ...

  8. VS Code 使用小技巧

    所有插件查找地址(https://marketplace.visualstudio.com/) 编码快捷方式(http://docs.emmet.io/cheat-sheet/) 安装插件出现  错误 ...

  9. 微信公众号开发遇到simplexml_load_string 未定义

    1.Go to /etc/php/7.0/fpm and edit php.ini 取消注释:     extension=php_xmlrpc.dll 2. sudo apt-get update ...

  10. table标签总结

    一.table标签:定义一个表格简单表格由table元素以及一个或多个tr(行标签).th(表头单元格标签).td(普通单元格标签) <table border=1><tr>& ...