• ADADADADAD

    【MySQL故障处理】 Seconds_Behind_Master= NULL Error_code: 1197[ mysql数据库 ]

    mysql数据库 时间:2024-12-25 09:55:25

    作者:文/会员上传

    简介:

    将处理主从故障的过程记录在此:故障1,Error_code: 1197 (max_binlog_cache_size)数据库版本:5.7.9
    报错信息:[ERROR]SlaveSQLforchannel'':Worker1failedexecutingtransaction'be

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。


    将处理主从故障的过程记录在此:

      故障1,Error_code: 1197 (max_binlog_cache_size)

      数据库版本:5.7.9

      报错信息:

      [ERROR]SlaveSQLforchannel'':Worker1failedexecutingtransaction'bea4612c-4828-11e7-90b3-a0423f31cad6:716212'atmasterlogmysql.135371,end_log_pos103016490;CouldnotexecuteWrite_rowseventontable******;Multi-statementtransactionrequiredmorethan'max_binlog_cache_size'bytesofstorage;increasethismysqldvariableandtryagain,Error_code:1197;Writingonerowtotherow-basedbinarylogfailed,Error_code:1534;handlererrorHA_ERR_RBR_LOGGING_FAILED;theevent'smasterlogFIRST,end_log_pos103016490,Error_code:1197

      处理过程:

      根据报错信息,知道是max_binlog_cache_size小了,

      解决办法:临时增加该值后restart slave即可以继续复制线程。

      stopslave;setglobalmax_binlog_cache_size=201326592;startslave;

      关于max_binlog_cache_size请看这里:

      如果一个事务需要多于设置值的内存,就会报上面的错。最小4096字节,最大支持4GB,因为binlog位置点最大4GB,支持动态修改

      解决了问题,继续查找发生问题的原因,生产环境中的该参数设置为64M,当一个事务影响的数据量超过该值时,即会报错。

      查看主库中日志的具体内容:

      数据库日志格式为mixed,文件中记录的是row格式,使用下面命令查看

      /bin/mysqlbinlog-vv--base64-output=decode-rowsmysql.135371|more
      精简后的内容:#13:43:59serverid*******end_log_pos10538CRC32Write_rows:tableid2776#at10538#13:43:59serverid*******end_log_pos18175CRC32Write_rows:tableid2776#at18175#13:43:59serverid*******end_log_pos25789CRC32Write_rows:tableid2776#at25789#13:43:59serverid*******end_log_pos33424CRC32Write_rows:tableid2776#at33424#13:43:59serverid*******end_log_pos40961CRC32Write_rows:tableid2776#at40961#13:43:59serverid*******end_log_pos48553CRC32Write_rows:tableid2776#at48553#13:43:59serverid*******end_log_pos56126CRC32Write_rows:tableid2776#at56126#13:43:59serverid*******end_log_pos63671CRC32Write_rows:tableid2776#at63671#13:43:59serverid*******end_log_pos71205CRC32Write_rows:tableid2776#at71205#13:43:59serverid*******end_log_pos78753CRC32Write_rows:tableid2776#at78753#13:43:59serverid*******end_log_pos86322CRC32Write_rows:tableid2776#at86322#13:43:59serverid*******end_log_pos93925CRC32Write_rows:tableid2776

      不出意外,执行的sql为

      insertintotable1select*fromtable2wheretime>'2016-10-01'

      形式的多语句事务,查看binlog文件的大小,最大的超过了200M(max_binlog_size设置为50M)。

      因此是大事务造成的,大事务还容易造成主从延时的问题,推荐将大事务拆分为小事务执行

      107M14:07mysql.135380101M14:08mysql.135381112M14:08mysql.135382110M14:09mysql.135383124M14:09mysql.13538431M14:10mysql.135385226M14:10mysql.135386120M14:12mysql.135387111M14:13mysql.135388102M14:14mysql.135389...126M14:16mysql.135394...118M14:23mysql.135404...110M14:28mysql.13540963M14:29mysql.135410104M14:29mysql.13541128114:30mysql.135412115M14:30mysql.135413112M14:30mysql.135414127M14:30mysql.135415119M14:31mysql.13541685M14:32mysql.13541760M14:32mysql.135418151M14:33mysql.135419

        故障2,Errno: 1872,Error: Slave failed to initialize relay log info structure from the repository

        数据库在 'in place' 升级之后报出该错误,重启主从后问题解决

        查看问题有人说原因是从库信息变化导致的,解决方法可以reset slave,重新change master。


        欢迎批评指正

    【MySQL故障处理】 Seconds_Behind_Master= NULL Error_code: 1197.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载