针对MySQL的HA设置/主要是MyISAM表

我目前正在使用主从复制,在应用程序级别将读取与写入分开。 当前实现的唯一一种故障转移是主站故障的应用程序级检测,使从站成为新的主站,因此应用程序可以不间断运行。 正如人们所能猜到的那样,切换回来,进行同步,整理等工作是很多的工作。

我search了很多,并阅读了几十篇文章,但是我没有遇到HA MySQL的解决scheme,如果你主要是MyISAM Tables,Mysql Cluster,Heartbeat / DRBD,Schooner,这些对于InnoDB-only的设置来说都是好的,但是不适合MyISAM。

我希望能够提供一些build议或者有关HA设置的实际经验。 它不需要是开源的(免费阅读),只需要工作。

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

我们有两个MySQL服务器(foo-db1,foo-db2),每个都是从属于另一个的,所以任何一个更新都会被发送给另一个:

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

现在每个实例都有数据,我们发现最好只写入一个。 为了实现这一点,我们在客户端发送INSERT和UPDATE到另一个服务主机名(foo-db)下创build一个虚拟IP(vIP)。 在Debian下,你会安装“mysql-mmm-agent”包,一般按照这个指导:

http://mysql-mmm.org/mmm2:guide

我们在我们的大多数网站上使用这种configuration:两个前端Web服务器与两个后端数据库服务器通话。 MMM监视器运行在其中一个Web服务器上(由Heartbeat决定):

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

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