何时在Xen VM上使用MySQL复制或DRBD进行HA?

我正在build立一个需要提供高可用性的数据库。

我主要关心的是高性能和健壮性(我不希望某些事情会快速而严重地失败)。 该应用程序平均可以访问数据库300 ps。 它将运行在Xen虚拟机上,它有一些InnoDB表和MyISAM表。 虚拟机通过以太网100Mbit / s以太网电缆连接。

哪两个 – MySQL复制或DRBD – 你会在这种情况下推荐?

或者,我应该使用DRBD使主数据库高可用性,并使用从属的MySQL复制?

我是一名开发人员,所以这些事情对我来说都不是那么容易做出正确的判断。

与基于DRBD的解决scheme相比,使用监视和自动故障转移进行复制更容易实施和维护,尤其是如果您不习惯使用原始设备。 如果您的应用程序服务器是只读数据库客户端,则可以运行主 – 主设置,并且从前端或中间层计算机拥有两倍的客户端(连接)。

最可靠和可扩展性可能是MySQL集群,但实际上至less需要4个主机来实现。 我会用monit来运行普通的MySQL复制,一个8核心的盒子可以很容易地做到10k qps在我的经验,当mysql调整得当,系统负载实际上是n,当然快速磁盘和大量的内存帮助。 事实上,与Inno和MyISAM一起,你会想要快速的磁盘,并且一定要定期做表格维护。

两者都有优点和缺点。

MySQL复制可以很容易地添加到任何现有的设置,并不需要花哨的块设备。 但是,复制很容易因关键冲突等而中断。 确保没有人可以写你的奴隶。 在my.conf文件中设置read_only以确保没有人能够更改从属表上的表。 我发现最好的方法是设置Master-Master复制,但在read_only模式下运行一个节点。

如果由于SQL查询中断而导致复制中断,那么您将需要恢复到已知的正常状态,或者只是重新复制主节点中的所有表。

主从configuration的优势在于,您还可以向从站发送读取查询以实现冗余和性能。 你也可以轻松地推广它来掌握。

如果你打算有一个主动的被动场景,复制是很容易设置,并不需要共享驱动器。 它将作为主 – 从设置运行,从设备连接到主设备进行更新。

有几件事要记住这一点:

  • 你想有自动故障转移或手动?
  • 你需要监视复制状态,如果你想手动做到这一点?
  • 这是在数据库层完成的,所以你可以通过互联网来完成。

对于DRBD,您将在块设备级别实施解决scheme。 基本上你写到一个复制到不同机器的硬盘上。 您可以使用心跳来实现HA。

有些事情要记住:

  • 这是在块级完成的,所以你没有太多的控制权。 有了复制,你可以跳过偏移。
  • drbd增加了一层复杂性。

最后归结到你所需要的以及你如何使用数据库。