首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql服务器主-主seconds_behind_master跳转

MySql服务器主-主seconds_behind_master跳转
EN

Server Fault用户
提问于 2013-06-11 14:36:05
回答 2查看 1.8K关注 0票数 3

我正在运行一个MySql的4台服务器主主集群。(2个服务器版本5.1和2个版本5.5)

在检查从状态时,我看到seconds_behind_master在0,在看到它跳转到2000之后的半秒,所以是第四。

可能是什么?我如何调试它?

复制拓扑:1 -> 2 -> 3 -> 4 -> 1

更新

服务器3的SBM似乎为0,而其他服务器则上下跳。这有用吗?

更新2似乎是服务器1的问题。在服务器4中创建测试表时,在服务器1中签入中继日志显示create语句被立即复制到服务器1中的中继日志,但没有创建表。看起来服务器正在忙着做一些事情,在服务器获得语句时和执行语句之间有很大的延迟。

更新3--在服务器4上也会发生同样的事情。

更新4好的,我发现了问题。服务器1、2和4的复制线程中有“无效查询缓存条目(表)”。禁用缓存后,服务器4正常,但1和2仍然存在此问题。

它看起来像一个常见的bug:http://bugs.mysql.com/bug.php?id=60696

如果有人知道如何解决这个问题,我很高兴听到

EN

回答 2

Server Fault用户

回答已采纳

发布于 2013-06-12 09:24:13

问题确实是旧的非Percona服务器上的invalidating query cache entries (table),这导致复制停止,直到缓存失效(这需要很长时间)。

如前所述:http://bugs.mysql.com/bug.php?id=60696

我们通过完全转移到Percona MySQL服务器v5.5解决了这个问题,它能够完全禁用查询缓存。

票数 0
EN

Server Fault用户

发布于 2013-06-12 04:49:15

mysql的seconds_behind_master值有一个缺陷:它只考虑相对于一个上游跳转的位置。最简单的演示是使用稍微简单的复制拓扑:

server1 -> server2 -> server3

如果server2落后,并且正在处理一些长期运行的查询,则会发生以下情况,假设00:00作为起点:

00:00:大家都还好

00:01: server1向binlog写入两个10分钟的查询,在任何地方都没有复制延迟。

00:02: server2开始处理查询1。server2的复制延迟开始增长,server3的复制延迟保持为零

10:02: server2与查询一一起完成,开始处理查询二。server2复制延迟仍在增长。server3复制延迟突然跳转到10分钟。

20:02: server2是通过查询2完成的,复制延迟再次为零。Server3将在查询3中完成,复制延迟将跳回零,然后在处理下一个查询时备份到10。

因此,跳变行为是由复制延迟不使用全局时间戳造成的,而仅仅是复制链中最后一个“跳转”后面的延迟。我们发现这非常烦人,现在使用MySQL的事件调度器每秒钟更新一次主程序上的计时器表,这样我们实际上可以从全局主节点(在非环拓扑中)看到实际的延迟,或者从环中的任何对等节点中看到实际的延迟。

票数 5
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/514993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档