MySQL/主要是MyISAM表的HA设置

Nik*_*S P 6 mysql myisam high-availability

我目前正在使用主从复制,在应用程序级别分离读取和写入。当前实现的唯一一种故障转移是主故障的应用程序级别检测,使从属成为新的主,因此应用程序可以不间断地运行。可以猜到,切换回、同步、整理等需要做很多工作。

我搜索了很多,阅读了几十篇文章,但是如果你主要有 MyISAM 表、Mysql 集群、Heartbeat/DRBD、Schooner,我没有遇到 HA MySQL 的解决方案,这些都适用于仅 InnoDB 的设置,但是不适合 MyISAM。

我将不胜感激有关 HA 设置的一些建议或实际经验。它不需要是开源的(免费阅读),它只需要工作。

小智 3

我们使用MMM与循环复制相结合。

我们有两台 MySQL 服务器(foo-db1、foo-db2),每台服务器都从属于另一台,因此任何一台的更新都会发送到另一台:

http://onlamp.com/onlamp/2006/04/20/advanced-mysql-replication.html

既然每个实例都有数据,我们发现最好只写入其中一个。为了实现这一点,我们在客户端向其发送 INSERT 和 UPDATE 的不同服务主机名 (foo-db) 下创建一个虚拟 IP (vIP)。在 Debian 下,您将安装“mysql-mmm-agent”软件包并通常遵循以下指南:

http://mysql-mmm.org/mmm2:指南

我们在大多数网站上都使用此配置:两个前端 Web 服务器与两个后端数据库服务器通信。MMM 监视器在其中一台 Web 服务器上运行(哪一台由 Heartbeat 确定):

www.howtoforge.com/high-availability-load-balancer-haproxy-heartbeat-debian-etch

总而言之:使用循环复制来确保两个(或更多?)MySQL 服务器同步;使用MMM控制数据库服务vIP所在的位置;使用 Heartbeat 确保 MMM 代理一次仅在一台计算机上运行。