解决mysql 1864 主从错误

从字面意思看了一下是因为slave_pending_jobs_size_max默认值为16777216(16MB),但是slave接收到的slave_pending_jobs_size_max为17085453(17M);

解决方

从库执行如下SQL

mysql>stop slave;
mysql>set global slave_pending_jobs_size_max=20000000;
mysql> start slave;

#在多线程复制时,在队列中Pending的事件所占用的最大内存,默认为16M,如果内存富余,或者延迟较大时,可以适当调大;注意这个值要比主库的max_allowed_packet大

故障模拟:

从库设置
mysql> set global slave_parallel_workers=4;
mysql> show variables like ‘slave_parallel_workers‘;
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
|slave_parallel_workers | 4     |
+------------------------+-------+
1 row in set (0.00sec)
 
mysql>set global slave_pending_jobs_size_max=1024;
mysql> show variables like ‘slave_pend%‘;
+-----------------------------+-------+
| Variable_name               | Value |
+-----------------------------+-------+
|slave_pending_jobs_size_max | 1024  |
+-----------------------------+-------+
1 row in set (0.00sec)
主库操作:
mysql> update erp_mkpf set usnam=‘测试1864错误‘;
ERROR 1197 (HY000):Multi-statement transaction required more than ‘max_binlog_cache_size‘ bytes ofstorage; increase this mysqld variable and try again
mysql> set global max_binlog_cache_size=8388608000000;
Query OK, 0 rowsaffected (0.00 sec)
mysql> begin;
Query OK, 0 rowsaffected (0.00 sec)
 
mysql> update erp_mkpf set usnam=‘测试1864错误‘;
Query OK, 70466 rowsaffected (0.38 sec)
Rows matched:70466  Changed: 70466  Warnings: 0
 
mysql> commit;
Query OK, 0 rowsaffected (0.08 sec)
 
从库查看状态:
mysql> show slavestatus\G
 
               Last_SQL_Errno: 1864
               Last_SQL_Error: Cannot scheduleevent Update_rows, relay-log name ./HE1-relay-bin.000005, position 494 toWorker thread because its size 8200 exceeds 1024 ofslave_pending_jobs_size_max.
时间: 2024-08-04 00:31:03

解决mysql 1864 主从错误的相关文章

如何快速解决MySQL 1032 主从错误

3分钟解决MySQL 1032主从错误 Part1:写在最前1032错误----现在生产库中好多数据,在从库误删了,生产库更新后找不到了,现在主从不同步了,再跳过错误也没用,因为没这条,再更新还会报错 解决方案 Part1:临时方案 mysql> stop slave;Query OK, 0 rowsaffected (0.00 sec) mysql> set global sql_slave_skip_counter=1;Query OK, 0 rowsaffected (0.00 sec)

3分钟解决MySQL 1032 主从错误(转)

转自  https://blog.51cto.com/suifu/1845457 3分钟解决MySQL 1032主从错误 Part1:写在最前 1032错误----现在生产库中好多数据,在从库误删了,生产库更新后找不到了,现在主从不同步了,再跳过错误也没用,因为没这条,再更新还会报错 解决方案 Part1:临时方案 mysql> stop slave; Query OK, 0 rows affected (0.00 sec) mysql> set global sql_slave_skip_c

【mysql】service mysql start出错,mysql启动不了,解决mysql: unrecognized service错误

service MySQL start出错,mysql启动不了,解决mysql: unrecognized service错误的方法如下: [[email protected] ~]# service mysql startmysql: unrecognized service[[email protected] ~]# service mysql restartmysql: unrecognized service [[email protected] ~]# rpm -q mysql   查

service mysql start出错,mysql启动不了,解决mysql: unrecognized service错误

service mysql start出错,mysql启动不了,解决mysql: unrecognized service错误的方法如下: [[email protected] ~]# service mysql startmysql: unrecognized service[[email protected] ~]# service mysql restartmysql: unrecognized service [[email protected] ~]# rpm -q mysql 查询发

重置密码解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

一般这个错误是由密码错误引起,解决的办法自然就是重置密码. 假设我们使用的是root账户. 1.重置密码的第一步就是跳过MySQL的密码认证过程,方法如下: #vim /etc/my.cnf(注:windows下修改的是my.ini) 在文档内搜索mysqld定位到[mysqld]文本段:/mysqld(在vim编辑状态下直接输入该命令可搜索文本内容) 在[mysqld]后面任意一行添加"skip-grant-tables"用来跳过密码验证的过程,如下图所示: 保存文档并退出: #:w

解决mysql 数据库主从不同步

今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist;   查看下进程是否Sleep太多.发现很正常. show master status; 也正常. mysql> show master status; +-------------------+----------+--------------+-------------------------------+ | File              | Position | Binlo

重置密码解决MySQL for Linux错误 ERROR 1045 (28000):

一般这个错误是由密码错误引起,解决的办法自然就是重置密码.假设我们使用的是root账户.1,停止mysql服务service mysqld stop2,找到my.cnf文件 3,修改配置文件无密码登录vi /etc/my.cnf在最尾部加上skip-grant-tables保存(:wq)4,启动mysqlsystemctl start mysqld.service mysqld start5,登录musqlmysql -u root此处注意不要加-p6,修改密码,mysql5.7用此语法use

解决MySQL主从不同步问题

解决mysql主从不同步 今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist;   查看下进程是否Sleep太多.发现很正常. show master status; 也正常. mysql> show master status; +-------------------+----------+--------------+-------------------------------+ | File              | Pos

解决mysql 1040错误Too many connections的方法

1.可能是mysql的max connections设置的问题 2.可能是多次insert,update操作没有关闭session,需要在spring里配置transaction支持. 解决: 1.修改tomcat里的session 的time-out时间减少为20,(不是必改项) 2.对处理量大的对数据库insert或update的操作提供transaction支持. ======================================= 下面的是解决办法: com.mysql.jdb