首先查看从的状态

mysql> show slave status \G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 10.120.141.228

Master_User: sys_repl

Master_Port: 3306

Connect_Retry: 10

Master_Log_File: mysql-bin.000247

Read_Master_Log_Pos: 39320676

Relay_Log_File: mysqld-relay-bin.000064

Relay_Log_Pos: 213210879

Relay_Master_Log_File: mysql-bin.000242

Slave_IO_Running: Yes

Slave_SQL_Running: No

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 1197

Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction 'ANONYMOUS' at master log mysql-bin.000242, end_log_pos 347537149. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.

Skip_Counter: 0

Exec_Master_Log_Pos: 213210706

Relay_Log_Space: 4892606739

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: NULL

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 1197

Last_SQL_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction 'ANONYMOUS' at master log mysql-bin.000242, end_log_pos 347537149. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.

Replicate_Ignore_Server_Ids:

Master_Server_Id: 141228

Master_UUID: 3dda54fe-bac1-11e7-920c-0050569f4477

Master_Info_File: mysql.slave_master_info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State:

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp: 181024 16:18:24

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set:

Executed_Gtid_Set: cacca550-aa66-11e8-950f-525400b9c881:1-11,

fcfab99d-a492-11e5-be37-0050569f3992:1

Auto_Position: 0

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

1 row in set (0.00 sec)

提示已经很明显了,让查看performance_schema.replication_applier_status_by_worker这个表看详细的问题

mysql> select * from performance_schema.replication_applier_status_by_worker\G

*************************** 1. row ***************************

CHANNEL_NAME:

WORKER_ID: 1

THREAD_ID: NULL

SERVICE_STATE: OFF

LAST_SEEN_TRANSACTION: ANONYMOUS

LAST_ERROR_NUMBER: 1197

LAST_ERROR_MESSAGE: Worker 1 failed executing transaction 'ANONYMOUS' at master log mysql-bin.000242, end_log_pos 347537149;

Could not execute Delete_rows event on table pipeline.m_orderitem;

Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage;

increase this mysqld variable and try again, Error_code: 1197; handler error HA_ERR_RBR_LOGGING_FAILED;

the event's master log mysql-bin.000242, end_log_pos 347537149

LAST_ERROR_TIMESTAMP: 2018-10-24 16:18:24

有些比较明显的问题系统会给出一些建议的解决方案,大多是跟着系统说得做就好了。

mysql> show variables like '%max_binlog_cache_size';

+-----------------------+-----------+

| Variable_name | Value |

+-----------------------+-----------+

| max_binlog_cache_size | 134217728 |

+-----------------------+-----------+

1 row in set (0.00 sec)

mysql> set global max_binlog_cache_size=10737418240;

Query OK, 0 rows affected (0.00 sec)

mysql> stop slave;

Query OK, 0 rows affected (0.02 sec)

mysql> start slave;

Query OK, 0 rows affected (0.01 sec)

mysql> show slave status \G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 10.120.141.228

Master_User: sys_repl

Master_Port: 3306

Connect_Retry: 10

Master_Log_File: mysql-bin.000247

Read_Master_Log_Pos: 39371887

Relay_Log_File: mysqld-relay-bin.000064

Relay_Log_Pos: 213210879

Relay_Master_Log_File: mysql-bin.000242

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 213210706

Relay_Log_Space: 4892658324

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 1993751

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 141228

Master_UUID: 3dda54fe-bac1-11e7-920c-0050569f4477

Master_Info_File: mysql.slave_master_info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Reading event from the relay log

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set:

Executed_Gtid_Set: cacca550-aa66-11e8-950f-525400b9c881:1-11,

fcfab99d-a492-11e5-be37-0050569f3992:1

Auto_Position: 0

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

1 row in set (0.00 sec)

这样就OK了

max_binlog_cache_size

如果事务需要内存超过此字节数,服务器生成如下错误ERROR 1197 (HY000): Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage;max_binlog_cache_size最低值是4096,最大可能值为16EB(艾字节)。推荐的最大值为4GB ;因为目前的MySQL当二进制日志位置大于4GB时并不生效。

Note:

Prior to MySQL 5.6.7, 64-bit Windows platforms truncated the stored value for this variable to 4G, even when it was set to a greater value (Bug #13961678).

在MySQL 5.6 ,会话对于max_binlog_cache_size的感知依赖于binlog_cache_size系统变量;换句话说,改变其值只会影响后续新建会话。

max_binlog_size

如果写二进制日志导致当前日志文件大小超过了这个变量的值时,服务器旋转二进制日志(关闭当前的文件,并打开下一个) 。的最小值为4096字节。最大值和默认值是1GB 。

事务是以块为单位写入二进制日志的,因此它不会被拆分在几个二进制日志。如果你有大的交易,你可能会看到比max_binlog_size较大的二进制日志文件。

如果max_relay_log_size为0,max_binlog_size的值会被应用到中继日志。

max_binlog_stmt_cache_size

如果一个事务中的非事务性的语句需要大于这个数量的更多的内存,服务器会产生报错。最低值是4096 ,在32位平台最大和默认值是4GB。在64位平台最大和默认值是416EB(艾字节)。

Note

Prior to MySQL 5.6.7, 64-bit Windows platforms truncated the stored value for this variable to 4G, even when it was set to a greater value (Bug #13961678).

max_binlog_cache_size针对事务语句,max_binlog_stmt_cache_size针对非事务语句,当我们发现Binlog_cache_disk_use或者Binlog_stmt_cache_disk_use比较大时就需要考虑增大cache的大小

事务性语句&非事务性语句

在事务性语句执行过程中,服务器将会进行额外的处理,在服务器执行时多个事务是并行执行的,为了把他们的记录在一起,需要引入事务缓存的概念。在事务完成被提交的时候一同刷新到二进制日志。 对于非事务性语句的处理。遵循以下3条规则:

如果非事务性语句被标记为事务性,那么将被写入事务缓冲。

如果没有标记为事务性语句,而且事务缓存中没有,那么直接写入二进制日志。

如果没有标记为事务性语句,但是事务缓存中有,那么写入事务缓冲。

注意如果在一个事务中有非事务性语句,那么将会利用规则2,优先将该影响非事务表语句直接写入二进制日志。

如果一切正常,当事务中执行事务语句(DML)的时候,所以这些语句形成的event都会被记录到缓存里面,等到commit事务以后,这个缓存的数据会立即被刷入磁盘上的binlog文件里面,之后通过slave请求发送到slave,在slave重复执行。

顺便提一下,mysql的binlog里面的事务都是相互独立按顺序排列的。

现在开始假设意外的发生。

正常意外一:事务执行中rollback了。

如果在一个事务中,所有执行的语句都是在innodb表上执行(对于多个事务引擎如tokudb等并用尚未测试),直接执行rollback,会导致mysql直接清除缓存,不会写入任何event记录到binlog。

正常意外二:事务执行中使用了非事务表(myisam),然后rollback了。

在一个事务中,即有事务表,也有非事务表,如果正常执行,则没有任何问题,当如果在非事务表上的修改执行了,复制设置为statement的时候,binlog会把所有执行的event全部记录下来写入日志,包括事务与非事务语句,然后在最后面加上rollback。如果复制格式设置为row,那么所有事务表相关的数据都会被清理掉,而非事务表上的数据会被标记为已提交事务写入binlog。

正常意外三:事务执行顺序如下:事务语句1-》非事务语句2-》save point -》事务语句3 -》 rollback to savepoint -》 事务语句4 -》提交

对于上面的情况,statement情况下,所有执行的语句包括savepoint与rollback都会按顺序被记录到binlog。row情况下,非事务语句与事务语句是分别记录到binlog中,非事务执行event会全部被记录,事务执行event会连带savepoint与rollback都记录下来。

正常意外四:事务执行顺序如下:事务语句1-》savepoint-》非事务语句2-》事务语句3-》rollback to savepoint-》事务语句4 -》 commit

同上。

异常意外一:master正常提交了,但是在slave执行失败了。

master执行完成,提交之后,slave接收到relay然后执行,执行期间由于意外原因失败了。这个时候,statement格式下,mysql会重新回到事务begin处重新执行,如果再次失败的话就会报错。row模式下情况类似,区别在于,如果是包含非事务表执行的事务,非事务表上的event不会被重新执行。

参考

mysql错误1197_mysql主从不同步问题 Error_code: 1197相关推荐

  1. mysql 1197_mysql主从不同步报错Last_Errno 1197

    今天mysql从库收到一份报错,从库死了,不能同步数据了,报错如下红色部分: Last_Errno: 1197 Last_Error: Could not execute Write_rows eve ...

  2. mysql slave 1062_MySQL主从不同步,出现1062错误解决方案

    通过查看从服务器的状态,可以看到对应的错误信息 mysql> show slave status\G *************************** 1. row *********** ...

  3. Mysql数据库实现主从数据库同步更新

    当前以:D:\mysql-5.7.25(作为主库) -> D:\mysql-5.7.25-FDB(作为从库) 步骤一: 先进行修改从数据库下面的my.ini配置文件 [mysqld] #设置33 ...

  4. mysql 5.5 主从双向同步,请教mysql 定时 双向 主从同步問題

    --主机开两个窗口,一个进入mysql,一个是shell--主机阻断写操作mysql>FLUSHTABLESWITHREADLOCK;QueryOK,0rowsaffected(0.00sec) ...

  5. mysql主从不同步怎么恢复_mysql主从不同步时,怎么恢复

    mysql主从不同步时,怎么恢复 Mysql的主从数据库没有同步 先上Master库: mysql>show processlist;   查看下进程是否Sleep太多.发现很正常. show  ...

  6. MySQL主从数据库同步延迟问题解决

    MySQL主从数据库同步延迟问题 摘要: MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响 ...

  7. MYSQL管理之主从同步管理

    原文地址:MYSQL管理之主从同步管理 作者:飞鸿无痕 MYSQL管理之主从同步管理 MYSQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的管理也就显得非常重 ...

  8. mysql主从同步默认延迟_减少mysql主从数据同步延迟问题的详解

    基于局域网的master/slave机制在通常情况下已经可以满足'实时'备份的要求了.如果延迟比较大,就先确认以下几个因素: 1. 网络延迟 2. master负载 3. slave负载 一般的做法是 ...

  9. 减少mysql主从数据同步延迟问题的详解

    基于局域网的master/slave机制在通常情况下已经可以满足'实时'备份的要求了.如果延迟比较大,就先确认以下几个因素:  1. 网络延迟 2. master负载 3. slave负载 一般的做法 ...

最新文章

  1. R语言ggplot2可视化:ggplot2可视化两个水平条形图(horizontal)、并设置两个条形图使用共享的X轴、使用类似population pyramid可视化的方式绘制共享X轴的水平条形图
  2. 空间谱专题09:阵列信号建模方法
  3. 线段树-Chossing Ads-分治,主元素思想,神题
  4. mysql索引(b+tree)小记
  5. App后台开发运维和架构实践学习总结(8)——后台产品设计的4个原则
  6. SQL Server报表生成器中的R脚本词云
  7. 儿童python编程入门软件_一款儿童编程入门的理想工具——PythonTurtle
  8. Fiddler 移动端/模拟器安装证书
  9. 智能跟随小车-红外遥控(程序+原理图+PCB+论文报告)
  10. lcd改led背光有光斑_LCD改LED背光,详细干活教程!
  11. PythonStudy——列表与字典推导式 List and dictionary derivation
  12. python分块处理功能_Python自然语言处理学习笔记之信息提取步骤分块(chunking)...
  13. 云服务器系统镜像选什么,云服务器系统镜像选什么用
  14. 缺一位身份证号码时识别计算
  15. 无人超市和传统超市的这些区别 你都知道吗?
  16. 实践API钩子拦截DLL库调用
  17. 更改IntelliJ IDEA主题
  18. 云渲染可以渲动画吗?
  19. ECM(企业内容管理)--信息管理的利器
  20. iMazing 一款替代iTunes的数据备份软件

热门文章

  1. 中国医疗器械行业需求态势及未来前景趋势预测报告(2022-2027年)
  2. 用例文档应该包括哪些内容
  3. 2143.replace.favo.xrcch.com Dns劫持解决方案
  4. linux学习第八周总结
  5. 软件测试交行项目的流程,交通银行流程引擎POC测试报告——IntelliFlow.pdf
  6. PetaLiunx配置时sourcing bitbake报错解决方法
  7. 本科毕设-基于C8051单片机的身份识别系统设计
  8. 利用FDTD进行超表面的仿真(一)——验证PB相位和转换效率的计算
  9. v8引擎和v12引擎_v8和v12引擎的区别是什么?
  10. AD画PCB常规问题分析