项目采用了spring的事务机制,在发布时遇到了问题。后台报了异常。

Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'

查了网上一篇文章。解决办法如下:

-----------------------------------------

binlog有三种格式,分别是STATEMENT、row、mixed。每种格式的区别可以去看复制那篇文章,那它分别与read committed 有什么关系呢。下面以例子来分析

1、数据库版本

mysql> status

2、改变事务级别为read committed

mysql>set session transaction isolation level read committed;

Query OK, 0 rows affected (0.00 sec)

3、改变二进制日志格式

mysql>set binlog_format=STATEMENT;

Query OK, 0 rows affected (0.00 sec)

4、 创建测试表

mysql>CREATE TABLE `slevin` (

->`id` int(10) NOT NULL AUTO_INCREMENT,

->`book` char(10) DEFAULT NULL,

->PRIMARY KEY (`id`)

->) ENGINE=InnoDB;

Query OK, 0 rows affected (0.03 sec)

5、插入数据测试

mysql>insert into slevin(book) values('wuli');

ERROR 1598 (HY000): Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'

看到没,提示出错,那我们尝试把事务基本改为REPEATABLE READ

mysql>set session transaction isolation level REPEATABLE READ;

Query OK, 0 rows affected (0.00 sec)

mysql>insert into slevin(book) values('wuli');

Query OK, 1 row affected (0.00 sec)

改个事务级别就成功了,那试试仍旧把它改为read committed,把binlog格式改了试试

mysql>set session transaction isolation level read committed;

Query OK, 0 rows affected (0.00 sec)

mysql>set session binlog_format=row;   改为行格式

Query OK, 0 rows affected (0.00 sec)

mysql>insert into slevin(book) values('wuli');

Query OK, 1 row affected (0.00 sec)

mysql>set session binlog_format=mixed; 改为混合格式

Query OK, 0 rows affected (0.00 sec)

mysql>insert into slevin(book) values('wuli');

Query OK, 1 row affected (0.00 sec)

把上面改为两种格式都成功,唯独STATEMENT格式不 行,所以以后要注意read committed与binlog格式的关系,否则会导致插入不了数据。为何会导致这种情况呢,那是因为read committed可能会导致不可重复读,也就是说可以读取到后面进入并提交的数据,如果基于STATEMENT格式的话,会导致主从数据不一样,因为 STATEMENT是基于SQL语句的复制模式。另外设置innodb_locks_unsafe_for_binlog=1 ,binlog也要设为row格式。

具体请看 http://blog.chinaunix.net/u3/99514/showart_1974703.html这篇文章详细了解。

mysql修改binlog格式_mysql binlog格式...相关推荐

  1. mysql开启row模式_MySQL Binlog Mixed模式记录成Row格式

    binlog format有三种形式:Statement.Mixed.Row,具体的信息可以自行到网上搜查. 分析(本文碰到的案例): 查看MySQL binlog formatdba@192.168 ...

  2. mysql 写binlog 原理_MySQL binlog原理及应用

    01 概述 Binlog它记录了所有的DDL和DML(除了数据查询语句)语句,以事件(EVENT)形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的. 一般来说开启二进制日志 ...

  3. mysql dml回滚_mysql binlog回滚/闪回,前滚, 分析各表DML情况, 找出长事务与大事务...

    简介 binlog_inspector通过解释mysql/mariadb binlog/relaylog实现以下三大功能: 1)flashback/闪回/回滚, 实现DML的回滚到任意时间或者位置. ...

  4. mysql binlog协议_mysql binlog协议分析--具体event

    这几天在修改canal, 连接mysql和maria接收到的event有所区别 拿一个简单的insert sql来举例 mysql 会有以下几个event写入到binlog里 1.ANONYMOUS_ ...

  5. mysql data目录 清空_Mysql binlog备份数据及恢复数据,学会这个,我在也不怕删库跑路啦~...

    导读 我一直都主张,技多不压身(没有学不会的技术,只有不学习的人),多学一项技能,未来就少求人一次.网上经常听到xxx删库跑路,万一真的遇到了,相信通过今天的学习,也能将数据再恢复回来~~~ 介绍 记 ...

  6. mysql 5.7 binlog 压缩_mysql binlog压缩处理

    前一段时间系统mysql压力较大,产生大量binlog,大量的binlog删除后又担心后期出现问题难以调查,保存后又占用本身的空间存储. 每天产生的binlog可以多达5-6G. 因此考虑是否扩容机器 ...

  7. mysql 修改配置生效_MySQL修改my.cnf配置不生效的解决方法

    本文实例讲述了MySQL修改my.cnf配置不生效的解决方法.分享给大家供大家参考,具体如下: 一.问题: 修改了 my.cnf 配置文件后,却不生效,这是怎么回事? 二.原因: 我们注意到,这里只说 ...

  8. mysql修改字段结构_MySQL修改表结构及其添加删除修改字段功能

    MySQL修改表结构添加删除修改字段 创建数据库CREATE DATABASE database_name 创建表CREATE TABLE `user` ( `id` int(11) unsigned ...

  9. mysql修改数据列_MySQL数据库修改一列内容

    匿名用户 1级 2018-07-05 回答 下面列出: 1.增加一个字段 alter table user add COLUMN new1 VARCHAR(20) DEFAULT NULL; //增加 ...

最新文章

  1. GitHub的嵌入式开源项目
  2. 乔春洋:品牌管理创新
  3. Map/Reduce
  4. 【bzoj1370】[Baltic2003]Gang团伙 并查集
  5. 大数据存在的安全隐患该如何防患
  6. 理解Visual Studio 解决方案文件格式(.sln)
  7. Linux的使用注意事项
  8. 微信撤回软件安卓版_微信无限时间撤回软件
  9. 前端的c语言面试题,腾讯WEB前端笔试题和面试题答案
  10. 视频教程-C语言编程入门100题(实战编程)-C/C++
  11. python勾股数_勾股数-随心随性无为而为-51CTO博客
  12. 检查压缩包是否损坏_工业安全吊带的检查PPE(个人防护装备)检查程序与表格...
  13. H3C模拟器2012鼎杰终极版的基本使用教程
  14. 港股系统开发美股软件开发之简单了解券商交易系统开发及港美股交易平台
  15. 那些年你追过的女神:开发人员应该懂多少运维
  16. IAR 显示行号设置
  17. 硬件在环系统环境架构
  18. 虚拟机架设传奇3服务器,WIN8安装虚拟机玩传奇3教程-转
  19. 面向组件编程之Unity 11.Quaternion.LookRotation 转自lijing_hi
  20. C#身份证验证封装的函数方法

热门文章

  1. 数据结构大总结系列之B树和R树
  2. python随机补边缘border
  3. python去除扩展名
  4. cannot connect to vCenter Single Sign-on server...
  5. python中的_init_的含义
  6. redis失效了mysql扛不住_我是Redis,MySQL大哥被我害惨了!
  7. 双击执行java_双击以执行Java程序
  8. ajax delete gin 获取不到_《Gin 文档》之路由篇
  9. linux sed 选取,linux sed 替换(整行替换,部分替换)、删除delete、新增add、选取...
  10. 理解Git的设计思想,详解git文件夹,以及详解add、commit、push,fetch、pull、merge指令