mysql - MariaDB 复制挂起,没有任何错误

标签 mysql networking mariadb database-replication

我们在 mariadb 服务器之间有一些复制连接,其中大部分是主从连接(主从上的相同版本)。有时,但经常,连接似乎停止工作。但是没有错误,IO 和 SQL 运行线程正在运行。在这些情况下,我们只注意到从站上缺少值,然后我停止并再次启动从站,在此之后我们有一个 Seconds_behind_master > 0,之前没有。 我现在了解了有关变量 MASTER_HEARTBEAT_PERIOD 的一些知识,但它启用了默认值(30 秒),而且它似乎也不起作用。 这种奇怪行为的原因可能是什么?我们可以做什么?

编辑:经过一些研究(主从上的预定事件:在主控上它在表中写入当前时间戳,在从属上它保存这个时间戳与当前时间的差异)我发现,我们有这些从属几个小时后定期停止。并且从站在精确的 7200 秒(2 小时)后再次启动。它现在在 11 小时内发生了两次。它可以是什么?

EDIT2:进一步调查表明,这种现象可能不是由 mariadb 引起的。我监控了一些连接(在我的第一次编辑中描述),通过这种方式我发现,只有来自特定主机(MS Hyper-V)的虚拟机的主复制才会延迟,并且它们绝对同步延迟。我认为,延迟的原因(直到 7200 秒,然后延迟消失)一定是在这台主机上。 但是 - 我们也有一些与这些 VM 上的实例的主-主-复制,但是这个连接中没有出现问题。而且我们的从属虚拟机上的其他复制连接没有问题,来自其他主机的虚拟机。奇怪。

EDIT3:好吧,这可能不是 DNS 问题。前几天把所有master地址都换成了ip,设置了skip_no_resolve。但是什么都没有改变。一天中有两个主要时间每次都会发生(大约 05:58 和 10:15)。有趣的是,第一次 (05:58) 是相对恒定的,但第二次 (10:15) 每天大约 30 秒(从 19 月 10 日的 10:11 到现在的 10:19)。而且,同样有趣的是,在晚上 27 点到 28 点 10 点。我们有一个时间的变化(夏季到冬季时间,+1h),第二次(10:15)也改变了(28.10 之前是每 11:15,现在大约是每 10:15)。第一次 05:58 没有改变。 并且(我知道,我早就应该这样做了)每次我在 mysql 错误日志中都有 2 个条目:

2018-11-06 10:19:50 6172 [错误] 从服务器读取数据包时出错:查询期间与 MySQL 服务器失去连接 (server_errno=2013)

2018-11-06 10:19:50 6172 [注意] 从属 I/O 线程:读​​取日志事件失败,重新连接重试,在位置 113739713 处记录“mysql-bin.002007”

好吧,有些东西让复制每天停止两次(大约 03:58 和 08:15)而没有任何错误,几乎是在同一时间,但是第二次大约在每天晚 20 - 30 秒,以及 2 小时后 mariadb意识到这一点,将这两条消息打印到日志并重新连接从站。我很无奈。

最佳答案

现在我们解决了这个问题。我们将mariadb从10.1.X版本更新到10.3.7,问题消失了。我们有几个不同版本的 mariadb 实例,问题只发生在 10.1.X 版本上,但不是所有版本。而且我仍然认为,延迟的原因来自 mariadb 外部,但我们仍然不知道原因可能是什么。但是,现在这不再是我们的问题了。更新解决了它。

关于mysql - MariaDB 复制挂起,没有任何错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52817358/

相关文章:

php - MySQL 跨表查询连接

mysql - 在函数返回值到过程 mysql 之前清除处理程序

php - 使用php将mysql表合并到一个表中

c++ - 使用 C++ 在 Windows 上发送/接收以太网帧

c# - 从 IP 地址开始和 IP 地址计数生成 IP 范围

mysql - 使用数组作为 PDO "IN"查询的一部分时遇到困难

networking - MD5 目的或用途

mySQL mariaDB INSERT IP 地址语法错误

MySQL DELETE with JOIN 使用 LIMIT 语句获取语法错误

mysql - 在 JRuby 上使用 ActiveRecord 对 MariaDB 的首次查询需要 5 分钟以上才能执行