因此,我看到很多关于使用 STONITH 和 2 节点 DRBD/Pacemaker/Corosync 集群复制 MySQL 数据的观点存在分歧。我可以在 起搏器网站似乎要关闭它,但很多其他地方都说你应该保持它打开.....我的设置是 2 个节点和 2 个接口,一个物理连接到另一台机器,另一个连接到交换机。在这种情况下,如果我有冗余通信,STONITH 是否必要?如果服务器丢失了两个网络连接,它无论如何都不会收到任何 MySQL 数据,当它恢复时,我计划将粘性设置为无限,这样它(不应该)就不会尝试成为主服务器。在这种情况下,STONITH 是否必要甚至可取?
答案1
最好的办法是测试在不同故障模式下实际发生的情况,以确保没有任何单一故障会导致两个 MySQL 服务器都尝试成为主服务器。
测试禁用一台服务器上的互联网连接。查看两台服务器上发生的情况,并观察恢复连接后发生的情况。
对任何冗余连接执行相同操作。然后执行相同操作,同时禁用所有网络连接。
不在双节点集群上执行 STONITH 的一个原因是,很容易导致两个节点都试图杀死另一个节点,并且实际上成功了。您需要测试您的设置,以确保它们不会同时关闭,或者同时作为主节点运行并导致数据库不同步。
我建议在测试它时,在投入生产之前,故意破坏它。做一些会导致 mysql 和 drbd 不同步的事情,并学习如何修复它。写下你需要做什么来修复它。因为在你真正需要之前知道如何做会更好。