MySQL 是否带有内置的自动故障转移功能?或者,是否有负载平衡器可以“检测”数据库是否处于活动状态...如果不存在...则将其发送到故障转移数据库?
我了解 MySQL 的基本知识,但不知道为一个主数据库设计故障转移的最佳方法。
答案1
MySQL 本身不提供故障转移机制。这实际上是一个很难普遍解决的问题,因此最好使用特定工具逐一解决。
由于您没有提到您使用的是哪种操作系统,因此我仅举几个例子来说明它如何与 Linux 配合使用。当您设置了常规复制时,您可能需要查看Linux HA 项目了解实现故障转移的工具。有了这些工具,当主数据库发生故障时,您可以升级从属数据库。
另一种可能性是使用DRBD,这将使复制发生在存储级别,因此 MySQL 实际上并不知道正在进行复制。这种方法的问题与常规复制的问题类似,您的主服务器和主服务器必须知道情况如何。为此,Linux HA 工具将是最佳选择。
MySQL 也具有集群功能,但它们至少需要三台服务器,对数据模型施加了一些限制。对于小型数据库来说,这确实不值得费心。
除此之外,您还需要使用某种连接池。它将使故障转移对客户端透明,因为他们不必知道哪个数据库实际上在执行工作。
答案2
MySQL 可以与复制策略一起使用,但上次我发现对它的支持不如其他数据库好。您需要研究 MySQL 复制才能了解这一点。