tx_isolation=READ-COMMITTED +binlog_format=STATEMENT产生的问题
发布日期:2021-09-16 04:38:54
浏览次数:56
分类:技术文章
本文共 2205 字,大约阅读时间需要 7 分钟。
mysql的隔离级:
隔离级别
未提交读(Read uncommitted) 已提交读(Read committed) 可重复读(Repeatable read) 可串行化(Serializable )binlog_format格式有
STATEMENT :每一条会修改数据的 SQL 都会记录到 master 的 bin-log 中。slave 在复制的时候 SQL 进程会解析成和原来 master 端执行过的相同的 SQL 再次执行。
ROW :日志中会记录成每一行数据被修改的形式,然后在 slave 端再对相同的数据进行修改。 MIXED : Statement 和 Row 混合 set global tx_isolation=1; mysql> select @@global.tx_isolation; +-----------------------+ | @@global.tx_isolation | +-----------------------+ | READ-COMMITTED | +-----------------------+ 1 row in set (0.00 sec) mysql> show variables like 'binlog_format%'; +---------------+-----------+ | Variable_name | Value | +---------------+-----------+ | binlog_format | STATEMENT | +---------------+-----------+ 1 row in set (0.01 sec) mysql> select * From t; +------+------+ | id | a | +------+------+ | 32 | a | | 21 | a | +------+------+ mysql> update t set a='b'; ERROR 1665 (HY000): Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.mysql>
切换隔离级别: mysql> set global tx_isolation=2; Query OK, 0 rows affected (0.00 sec) mysql> select @@global.tx_isolation; +-----------------------+ | @@global.tx_isolation | +-----------------------+ | REPEATABLE-READ | +-----------------------+ 1 row in set (0.00 sec) exit 重新打开一个session mysql> update t set a='b'; Query OK, 2 rows affected (0.05 sec) Rows matched: 2 Changed: 2 Warnings: 0 mysql> select * from t; +------+------+ | id | a | +------+------+ | 32 | b | | 21 | b | +------+------+ 2 rows in set (0.00 sec)或者修改binlog_format=mixed
mysql> select @@binlog_format;
+-----------------+ | @@binlog_format | +-----------------+ | MIXED | +-----------------+ 1 row in set (0.00 sec)mysql> update t set a='d';
Query OK, 2 rows affected (0.04 sec) Rows matched: 2 Changed: 2 Warnings: 0 mysql> select * from t; +------+------+ | id | a | +------+------+ | 32 | d | | 21 | d | +------+------+ 2 rows in set (0.00 sec)结论: 隔离级别改为下列两种方式都是可以的
tx_isolation=Read committed
binlog_format=mixed
或者是
tx_isolation= REPEATABLE-READ
binlog_format=STATEMENT
都没有问题
转载地址:https://blog.csdn.net/wll_1017/article/details/54928062 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月23日 14时31分14秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
红黑树
2019-04-27
安装多个gcc
2019-04-27
Linux0.01内核根目录Makefile注释
2019-04-27
【CSDN2012年度博客之星】需要您的一票,感谢大家的支持
2019-04-27
PHP对于浮点型的数据需要用不同的方法去解决
2019-04-27
Tokyo Cabinet 安装
2019-04-27
Flink在美团的应用与实践听课笔记
2019-04-27
Java多线程的11种创建方式以及纠正网上流传很久的一个谬误
2019-04-27
JDK源码研究Jstack,JMap,threaddump,dumpheap的原理
2019-04-27
Java使用字节码和汇编语言同步分析volatile,synchronized的底层实现
2019-04-27
javac编译原理和javac命令行的使用
2019-04-27
Unity使用UnityWebRequest实现本地日志上传到web服务器
2019-04-27
Unity使用RenderTexture实现裁切3D模型
2019-04-27
美术和程序吵架,原来是资源序列化格式设置不统一
2019-04-27
Unity iOS接SDK,定制UnityAppController
2019-04-27
Unity iOS接SDK前先要了解的知识(Objective-C)
2019-04-27
记一次iOS闪退问题的定位:NSLog闪退
2019-04-27
Unity打开照相机与打开本地相册然后在Unity中显示照片(Android与iOS)
2019-04-27
无需接入SDK即可在Unity中获取经纬度(Android/iOS),告诉我你的坐标
2019-04-27