[mysql] [note] mysql 报错 Multi-threaded slave 。。。。

举报
dber 发表于 2021/01/25 18:13:43 2021/01/25
【摘要】 mysql版本:5.7.30报错1:2021-01-24T19:16:33.731787Z 59 [Note] Multi-threaded slave: Coordinator has waited 15460741 times hitting slave_pending_jobs_size_max; current event size = 7412.2021-01-24T19:16:3...

mysql版本:5.7.30

报错1:


2021-01-24T19:16:33.731787Z 59 [Note] Multi-threaded slave: Coordinator has waited 15460741 times hitting slave_pending_jobs_size_max; current event size = 7412.
2021-01-24T19:16:33.735367Z 59 [Note] Multi-threaded slave: Coordinator has waited 15460751 times hitting slave_pending_jobs_size_max; current event size = 61977.
2021-01-24T19:16:33.738231Z 59 [Note] Multi-threaded slave: Coordinator has waited 15460761 times hitting slave_pending_jobs_size_max; current event size = 7530.
2021-01-24T19:16:33.740698Z 59 [Note] Multi-threaded slave: Coordinator has waited 15460771 times hitting slave_pending_jobs_size_max; current event size = 61925.
2021-01-24T19:16:33.742858Z 59 [Note] Multi-threaded slave: Coordinator has waited 15460781 times hitting slave_pending_jobs_size_max; current event size = 8011.
2021-01-24T19:16:33.745443Z 59 [Note] Multi-threaded slave: Coordinator has waited 15460791 times hitting slave_pending_jobs_size_max; current event size = 7132.



官方资料:


bug连接:


https://bugs.mysql.com/bug.php?id=68462

建议:


can you try to increase the size of slave-pending-jobs-size-max
(possibly to a big value, just for testing)? Do you still see the
same issue?


Fixed in 5.6+. Documented as follows in the 5.6.12 and 5.7.2 changelogs:

        When the size of an execution event exceeded the maximum set for
        the buffer (slave_pending_jobs_size_max), row-based replication
        could hang with -Waiting for slave workers to free pending
        events-.

Closed.


报错2:


2021-01-25T08:14:08.576904Z 17 [Note] Multi-threaded slave statistics for channel '': seconds elapsed = 124; events assigned = 861563905; worker queues filled over overrun level = 0; waited due a Worker queue full = 0; waited due the total size = 7620899; waited at clock conflicts = 31110447234200 waited (count) when Workers occupied = 12744756 waited when Workers occupied = 8278252000
2021-01-25T08:16:08.273207Z 17 [Note] Multi-threaded slave statistics for channel '': seconds elapsed = 120; events assigned = 861577217; worker queues filled over overrun level = 0; waited due a Worker queue full = 0; waited due the total size = 7620899; waited at clock conflicts = 31111352323200 waited (count) when Workers occupied = 12744756 waited when Workers occupied = 8278252000
2021-01-25T08:18:10.190863Z 17 [Note] Multi-threaded slave statistics for channel '': seconds elapsed = 122; events assigned = 861590529; worker queues filled over overrun level = 0; waited due a Worker queue full = 0; waited due the total size = 7620899; waited at clock conflicts = 31112325614500 waited (count) when Workers occupied = 12744756 waited when Workers occupied = 8278252000
2021-01-25T08:20:10.052990Z 17 [Note] Multi-threaded slave statistics for channel '': seconds elapsed = 120; events assigned = 861608961; worker queues filled over overrun level = 0; waited due a Worker queue full = 0; waited due the total size = 7620899; waited at clock conflicts = 31113614922300 waited (count) when Workers occupied = 12744756 waited when Workers occupied = 8278252000
2021-01-25T08:22:16.867137Z 17 [Note] Multi-threaded slave statistics for channel '': seconds elapsed = 126; events assigned = 861625345; worker queues filled over overrun level = 0; waited due a Worker queue full = 0; waited due the total size = 7620899; waited at clock conflicts = 31115474030700 waited (count) when Workers occupied = 12744756 waited when Workers occupied = 8278252000
2021-01-25T08:24:21.032877Z 17 [Note] Multi-threaded slave statistics for channel '': seconds elapsed = 125; events assigned = 861643777; worker queues filled over overrun level = 0; waited due a Worker queue full = 0; waited due the total size = 7620899; waited at clock conflicts = 31117365516100 waited (count) when Workers occupied = 12744756 waited when Workers occupied = 8278252000


错误日志出现上述提示信息是因为启用了MTS(Multi-threaded slave)需要启用slave_parallel_workers参数(默认值为0,最大值为1024),并且log_warning参数要大于1
(该参数将于v8.0.3去除,被log_error_verbosity 替代),在error_log里面会有上述提示。

mysql> show variables like 'slave_parallel_workers';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| slave_parallel_workers | 4     |
+------------------------+-------+
1 row in set (0.01 sec)


2021-01-25T08:24:21.032877Z 17 [Note] Multi-threaded slave statistics for channel '': 
seconds elapsed = 125;            --上一次统计跟这一次统计的时间间隔                               
events assigned = 861643777; --总共有多少event被分配执行,计总数
worker queues filled over overrun level = 0; --多线程同步中,worker 的私有队列长度超长的次数,计总数
waited due a Worker queue full = 0; 
waited due the total size = 7620899; 
waited at clock conflicts = 31117365516100 waited (count) when Workers occupied = 12744756 waited when Workers occupied = 8278252000


seconds elapsed:   上一次统计跟这一次统计的时间间隔;
events assigned:   总共有多少event被分配执行;
worker queues filled over overrun level:mts在所有的并行workers之间倾向于加载平衡的时间。slave_parrllel_workers参数决定workers数量。这个统计参数显示了当前线程承受的饱和等级。
                                         如果以一个并行线程序列趋近与饱和,这个数会递增,线程复制时间会被推迟,避免达到线程序列限制。
Waited due to a Worker queue full:      因为worker队列爆满,协调线程必须等待该统计参数会增长
Waited due to the total size:  该参数代表因为达到了可用内存的限制,worker队列持有未应用事件造成协调线程睡眠的次数。
                               如果这个值持续增长,需要增大slave_pending_jobs_size_max值来避免协调线程等待时间。
slave_pending_jobs_size_max:  此变量代表用于保存尚未应用的事件的从worker队列的最大内存量(以字节为单位),如果没有启动mts,修改该参数不会有任何效果。
                              (v8.0.11之前默认值为16M,v8.0.12默认值为128M,最小值为1024,最大值为16eib)
Waited at clock conflicts:     在事务之间存在依赖的情况下,该参数显示等待时间相当于冲突检测和解决方案的逻辑时间。
Waited (count) when used occupied:       协调进程监控worker足额(enough)分配的统计次数。enough定义取决于调度类型(基于每个库和时钟)



解决方案:


1.调大slave_pending_jobs_size_max值

show variables like 'slave_pending%';
+-----------------------------+----------+
| Variable_name               | Value    |
+-----------------------------+----------+
| slave_pending_jobs_size_max | 16777216 |
+-----------------------------+----------+
1 row in set (0.00 sec)

set global slave_pending_jobs_size_max=16777216*16;

show variables like 'slave_pending%';
+-----------------------------+-----------+
| Variable_name               | Value     |
+-----------------------------+-----------+
| slave_pending_jobs_size_max | 268435456 |
+-----------------------------+-----------+
1 row in set (0.00 sec)


 

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。