前言


下面介绍的是使用mysql时,1197的问题原因及解决方法。其常见于执行sql语句报错和主从同步报错。



报错如下


ERROR 1197 (HY000) : Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mysqld variable and try again


问题原因



简述


我们在做mysql的主备的时候,一定要保证主与从的配置的缓存等参数的一致性,可以避免各种因为参数不一致导致的问题。如果在其中一台修改了参数,其他的几台也要进行修改。



【1】执行sql语句报错


执行该条sql语句其事务影响的数据量超过max_binlog_cache_size的大小,导致报错。
就像是你正在吃一个比你的嘴要大的冰淇淋,你非要一口吃进去,当然就不会成功了。解决方法是,要么一口一口吃,要么把你的嘴扩大。



【2】主从同步中报错


主与从的max_binlog_cache_size的大小配置不相同,也会导致报这个错误。
就像是一个机械的孔,原来的孔的直径扩大了,不更换匹配的螺丝,就无法拧住。解决方法是,更换相匹配的螺丝才能拧住洞口。



【3】补充



mysql是采用二进制,记录日志的(binlog)。
其记录日志的过程为:数据库先把binlog写进binlog_cache中,然后再从缓存中把binlog日志写入磁盘中。


binlog_cache_size和max_binlog_cache_size就是用来控制binlog_cache大小的。binlog_cache_size :表示为每个session(事务)分配的内存的大小,即在事务的过程中用来存储二进制日志的缓存大小。max_binlog_cache_size :表示所有会话加在一起的binlog 能够使用的最大缓存大小,即在执行多语句事务时 ,所有会话的binlog使用最大内存 。(max_binlog_cache_size最小值是4096字节,最大值在32位的系统中是4G,64位的是16P)


解决方法



【1】执行sql语句报错解决方法一


通常是大事务造成的,且大事务还容易造成主从延时。建议将此事务分解为小事务执行。即将此sql语句进行拆分为多句sql,使每句sql的事务影响的数据量减小,就像将一大块冰淇淋分开吃。

强烈建议使用此方法,无需对数据库参数进行调整。


例如:

UPDATE user_info SET user_status=2 WHERE user_status=3 AND (TYPE=2 OR TYPE=3);可拆分如下(也可拆分更小)UPDATE user_info SET user_status=2 WHERE user_status=3 AND TYPE=2;
UPDATE user_info SET user_status=2 WHERE user_status=3 AND TYPE=3;或
UPDATE user_info SET user_status=2 WHERE user_status=3 AND TYPE=2 AND id<10000000;


【2】执行sql语句报错解决方法二


根据实际情况,调整数据库中max_binlog_cache_size参数,最小值是4096字节,最大值在32位的系统中是4G,64位的是16P。就像是调整你的嘴的大小,以便于塞入整个冰淇淋。

设置太大,会消耗大量内存资源;设置太小,会使用临时文件。

不建议,操作不当可能导致主从出现问题。如使用此方法,从库也需要修改为相同参数,避免主从同步失败。



<1>查看全局max_binlog_cache_size的大小

show GLOBAL  variables like 'max_binlog_cache_size';



<2>查看当前会话max_binlog_cache_size的大小

show session  variables like 'max_binlog_cache_size';



<3>修改参数


根据实际情况修改大小,但是一定要大于你查到的参数,否则无用;如参数不够,仍需往大调。


修改当前会话的max_binlog_cache_size的大小
set  session max_binlog_cache_size=500000000;
或
修改全局max_binlog_cache_size的大小
set  global binlog_cache_size=500000000;


<4>修改从库的参数


从库的该参数的大小,要与主库设置的一致


stop slave;
set global max_binlog_cache_size=500000000;
start slave;


【3】主从同步中报错解决方法


主与从的max_binlog_cache_size的大小配置不相同导致,要将主从的max_binlog_cache_size的大小调为一致。


<1>查看主库的max_binlog_cache_size的大小

show GLOBAL  variables like 'max_binlog_cache_size';



<2>查看从库的max_binlog_cache_size的大小

show GLOBAL  variables like 'max_binlog_cache_size';



<3>修改从库的max_binlog_cache_size的大小与主库一致

stop slave;
set global max_binlog_cache_size=500000000;
start slave;

ERROR 1197 (HY000)问题原因及解决方法相关推荐

  1. Linux MySQl 5.7.17 MySQL ERROR 1366(HY000):Incorrect string value 解决方法

    MySQL ERROR 1366(HY000):Incorrect string value,在往数据库中插入中文的时候会出现. 这也就是编码问题,网上大部分都是说设置下配置文件中的设置,而可悲的是在 ...

  2. linux mysql 1366_Linux MySQl 5.7.17 MySQL ERROR 1366(HY000):Incorrect string value 解决方法

    MySQL ERROR 1366(HY000):Incorrect string value,在往数据库中插入中文的时候会出现. 这也就是编码问题,网上大部分都是说设置下配置文件中的设置,而可悲的是在 ...

  3. mysql的ERROR 1231 (42000)问题原因及解决方法

    报错如下: ERROR 1231 (42000): Variable 'time_zone' can't be set to the value of 'NULL' 常见于使用source执行sql文 ...

  4. error: LNK2019与error: LNK1120可能的原因及解决方法

    今天又碰到了报错"LNK:2019"和"LNK:1120",记录一下. user_interface.obj:-1: error: LNK2019: 无法解析的 ...

  5. 启动pip时,< Fatal error in launcher: Unable to create process using ‘“‘ >问题的原因及解决方法

    启动pip时,< Fatal error in launcher: Unable to create process using '"' >问题的原因及解决方法 参考文章: (1 ...

  6. Keil 提示error C231: ‘INT0‘: redefinition的原因及其解决方法

    文章目录 1. 编译现象 2. 分析原因 3. 解决方法 1. 编译现象 2. 分析原因 redefinition 中文意思是 "重复定义".纵览我所写的程序,只有此处首次出现 I ...

  7. Error【1146】:Table 'xxx.xxx' doesn't exist问题原因及解决方法

    前言 我们在使用mysql数据库的时候,有时会因为各种误操作而导致各种问题.下面介绍的导致1146报错的原因及解决方法. 原因 由报错Table 'xxx.xxxxx' doesn't exist可知 ...

  8. mysql 死锁原因_Mysql并发时经典常见的死锁原因及解决方法

    1.mysql都有什么锁 MySQL有三种锁的级别:页级.表级.行级. 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 行级锁:开销大,加锁慢:会出现死锁:锁定粒 ...

  9. Nginx 502 Bad Gateway 错误的原因及解决方法

    2019独角兽企业重金招聘Python工程师标准>>> 刚才在调试程序的时候,居然服务器502错误,昨天晚上也发生了,好像我没有做非常规的操作. 然后网上寻找了下答案, 把一些原因及 ...

最新文章

  1. go语言中的多语言文本
  2. Science:产前母体感染促进后代的组织特异性免疫和炎症
  3. 这里提供了在Linux上显示某个进程的线程的几种方式
  4. 吉麦新能源与联想签订战略合作协议,共同拥抱智能网联汽车升维时代
  5. 利用栈解决深度搜索问题
  6. easyui dialog 不执行页面js_Spring Security(六):前端菜单,角色权限页面的搭建
  7. VMware中linux访问共享文件夹设置流程
  8. HSPF(Hydrological Simulation Program Fortran)模型应用
  9. Linux周立功CAN驱动安装指导
  10. Kotlin | Kotlin教程
  11. web前端开发面试题-基础篇
  12. linux软键盘怎么调出来,软键盘怎么关?软键盘关闭方法
  13. linux centos7 关于Python模拟浏览器踩坑(转载)
  14. CSS 中的 background 背景属性命令大全
  15. leetcode零散题汇总
  16. 磷酸铁锂电池充电过压保护
  17. 计算机英语名词简释(轉載)
  18. c++高级编程学习笔记5
  19. 织梦dedecms淘宝登入插件
  20. PXI/PXIe控制器 4Link架构 16GB带宽 兼容主流PXIe机箱 设计文件

热门文章

  1. 亚马逊云科技re:Invent现场访谈:医疗健康行业的云上未来
  2. IDEA 文件夹颜色对目录的影响分析
  3. ABAP CDS(Core Data Service)的创建和使用
  4. android 录音 m4a
  5. vue拖拽盒子;vue移动
  6. c语言嵌套结构体数组,第22节 C语言结构体之结构体嵌套、结构体指针与结构体数组的代码实现...
  7. P2690 [USACO04NOV]Apple Catching G 题解
  8. 微信小程序搜索功能的实现(模糊搜索、带历史记录)
  9. PX4从放弃到精通(二十四):自定义机型
  10. 计算机蓝屏代码0xc0000020,Win10运行程序提示“损坏的映像 错误0xc0000020”解决方法图文教程...