dcsimg

MySQL的高可用性:考虑选项

为您的MySQL设置提供冗余可能是一个令人困惑的挑战。这是解决问题的三种关键方法。

运行基本的MySQL设置非常简单,但是一旦您开始考虑提供冗余的最佳方法,事情就会很快变得复杂。关于数据库,有许多层需要考虑,并且很难选择各种解决方案。根据您的可用性目标,您希望使用的存储系统后端以及所使用的MySQL表的类型,答案会有所不同。让我们尝试解开这个烂摊子。

更糟的是,人们经常结合使用多种解决方案来同时处理两种类型的规模:垂直和水平。在有关VM Scaling的最新文章中,我们介绍了不同类型的扩展,但简要地说:up(垂直)表示更多的计算能力,out(水平)表示将负载分散到多个服务器上。

但是,更多情况下,数据库管理员在一台服务器中拥有足够的能力来应付负载。在这种情况下,最主要的需求是提供一种高可用性的机制,因此发生故障的服务器不会阻止MySQL的运行。这是以多种方式处理两种情况的最受欢迎的解决方案。

复写

MySQL复制非常适合在多台服务器之间分配负载,并且还提供了一些冗余。传统上,您将配置一个主服务器以将更新发送到从属副本。写入将由主服务器提供服务,该主服务器会将更新的信息发送到从属副本。所需数量的从属副本可以服务于只读查询。当您的大多数数据库事务都是只读查询时,此设置非常适合扩展,这对于大多数工作负载都是如此。主-主复制通过允许在多个副本上同时进行写事务而改进了该模型,因此扩展不仅限于只读查询。

复制效果很好,但是缓慢的事务处理可能导致副本过时。当副本滞后于主副本时,在不适当的时间崩溃可能会导致数据不一致。因此,由于错误将很快被复制,因此值得指出的是复制不是备份,它是仅用于扩展目的的副本。

不需要特殊的硬件,可以将多个服务器快速配置为副本。

聚类

另一方面,集群是扩展MySQL的另一种很好的机制。使用MySQL Cluster,您可以配置一个主节点和多个存储节点。数据可能会使用多个磁盘子系统分布在多个节点上,因此可以减轻磁盘IO问题。您可以对复制执行相同的操作,但是使用NDB(网络数据库)作为MySQL存储引擎意味着写入事务是同步的,并且所有节点的数据永远不会过时。对于扩展查询和扩展IO负载,MySQL群集绝对是更好的选择,但它不能解决高可用性问题。

MySQL Cluster的典型配置是一个管理节点,一个SQL节点(或多个SQL节点)和多个后端存储节点。如果任何一个存储节点发生故障,则该数据将不可访问。为了解决这个问题,您现在可以(在MySQL 5.1中)启用两个集群之间的复制。相互复制的两个集群在规模和冗余性上都是最终的,但需要大量的服务器。

MySQL Cluster没有特殊的硬件要求,但是它确实需要高带宽和大量RAM。如果您正在考虑集群解决方案,请务必通读所有文档。它很好地涵盖了选择标准。

高可用性故障转移

最后但同样重要的是,我们拥有良好的老式故障转移功能。使用前面提到的基于复制的解决方案,故障转移也可能会被使用。但是,在这种情况下,使用共享存储或复制存储的方法会稍有不同。这肯定是复杂的地方,因为我们开始看到如何以创造性的方式组合多种选择,以完成各种架构来满足特定于站点的需求。

首先,使用共享存储,您可以准备好多个MySQL服务器来访问存储并开始运行mysqld来处理请求。我们在这里谈论的是单个MySQL服务器,但是没有理由您不能拥有多个服务器并准备好承担任何服务,包括MySQL群集的某些角色。服务监控的事实上的标准是来自 Linux-HA 项目。每台服务器上的守护程序都会监视MySQL服务,如果它停止响应,则另一台服务器将使用共享的SAN或iSCSI存储来启动它,调出共享的IP并开始处理请求。

第二种选择是在两个MySQL服务器之间复制存储。大多数情况下,两个使用本地存储的标准服务器 广播电视 复制MySQL文件系统。在故障转移情况下,备用服务器将在启动MySQL之前挂载副本文件系统,与上面基于SAN的示例相同。此配置在其他配置中也很有意义,在其他配置中,存储后端也支持复制,以避免依赖单个存储设备。您甚至可以使用创意存储复制而不是MySQL级复制来创建两组集群。

MySQL的备用故障转移效果非常好,并且保证了数据完整性,直到主服务器停止响应之前的最后一次成功事务为止。从这个意义上讲,故障转移比复制更安全。

副本存储,副本MySQL服务器,集群故障转移;如我所说,它变得复杂。使用每种复制,故障转移和群集技术后,对数据不一致会困扰您的担忧就变得更大,因此请务必确保增加的复杂性真正得到回报。万一发生崩溃,必须更加小心恢复程序,因为错误会很快造成灾难。

下周,我们将向您展示如何使用HA配置DRBD以快速设置冗余MySQL服务器。


查理·施鲁丁(Charlie Schluting)是《 网络忍者 ,这是每位网络工程师必读的内容。

本文最初于2009年3月9日发布
通过网络更新新闻获取最新消息