MySQL 复制使用 DRBD,分布式锁管理器?

MySQL 复制使用 DRBD,分布式锁管理器?

我需要在两台服务器中实现 Linux-HA 配置。我决定在两台主机上使用 DRBD 进行块级复制,主要用于 MySQL 数据复制。

据我了解,在 DRBD 配置中始终有一个主服务器,其他服务器都是从服务器(可以有自己的从服务器)。复制仅从主服务器传递到从服务器,而不是相反。

那么,如果我让 MySQL 进程同时在两台服务器上执行写入操作,其中一个是主服务器,另一个是从服务器,会发生什么情况?

从属设备可以执行写入操作,但是没有写入数据?

假设此配置与 Heartbeat 结合使用,那么 Heartbeats 的工作就是确保 MySQL 仅在主服务器上运行,但暂时让我们假设 Heartbeat 由于某种原因失败了。

答案1

据我所知,DRBD 进行分区级复制。从服务器不会挂载分区,因此无法写入分区。当主服务器出现问题时,从服务器将挂载分区并开始工作。

因此,不能让两台服务器写入相同的数据。

答案2

常用的配置(也是我过去使用过的配置)是拥有两个节点,它们之间有一些资源。这些资源是 DRBD 存储块设备、MySQL 守护进程和 IP 地址。

资源只能在主节点上“启动”。Heartbeat 负责选择哪个节点是主节点并按正确的顺序启动资源 - 告诉 DRBD 成为主节点、安装 BD、启动 MySQL 并启动 IP。它们按该顺序进行以确保数据一致性。您可以通过降级主节点或提升辅助节点来手动在主节点和辅助节点之间进行故障转移。

当主服务器启动时,辅助服务器执行的唯一操作是复制 DRBD 数据并参与 Heartbeat 通信以表明其处于活动状态。在作为辅助服务器期间,MySQL 永远不会运行,并且您无法使用存储块设备。资源一次只能在一台机器上使用。

这种设置不同于 MySQL 的传统“惰性复制”,即辅助计算机运行 MySQL 并存储其自己的数据副本。两者各有利弊。根据我的经验,如果 HB 设置正确并且您有良好的备份策略,那么 LinuxHA 方法可以提供更好的高可用性。

答案3

MySQL HA 的更好解决方案是使用循环 MySQL 复制。本文对此进行了进一步解释,但基本前提是使每台服务器成为另一台服务器的从属。您需要在前面设置某种负载平衡器。

需要担心的一件事是数据库连接可能是长期存在的,并且您需要配置应用程序以便在它们断开时重新连接。

答案4

如果您“主要”需要 DRBD 来进行 MySQL 复制,那么使用 MySQL 内置的复制功能是否更容易?

相关内容