APP下载

MySQL数据库高可用性的研究与实现

2016-07-05廖琴文成玉

科技风 2016年18期

廖琴 文成玉

摘 要:文章分析了MYSQL数据库高可用性的需求和实现方案,介绍了同步复制的工作原理、故障自动切换的原理与实现,并用keepalived,来实现虚拟IP的漂移,使服务器在故障切换时不用更改IP,来减少管理员的工作。

关键词:同步复制;自动切换;keepalived

数据库是现代企业的应用核心,它存储了组织机构中的重要信息,例如订单信息、客户信息、产品信息等等。另外,组织机构的关键业务应用的运行还依赖于数据库。这时数据库的高可用性是需要考虑的事情。构建一个具有高可用性的IT基础架构,对一个对于一个希望取得成功的企业来说是至关重要的。

1 同步复制

MySQL的主从同步复制时基于主服务器中的二进制日志中记录所有对数据库的操作(包括创建、删除、更新等等)。而每个从服务器从主服务器中接受其已经记录到的二进制日子的保存的更新,从而使得从服务器可以对主服务器的数据拷贝来执行相同的更新。然后封锁并等待主服务器通知新的更新,从服务器在执行备份时不会干扰主服务器跟踪对数据库的操作,在备份过程中主服务器依然可以继续处理更新。

2 故障自动切换

当主服务器发生宕机时,为了避免系统出现错误,MySQL数据库要实现故障自动切换。本文介绍的故障切换方案为MHA[ 1 ]。MHA是一位日本人用Perl写的一套关于MySQL的故障切换方案,来保证数据库的高可用性。在主服务器宕机时,MHA能够在较短时间内实现自动故障检测和故障切换。通常在10-30秒以内,能够很好地解决在复制过程中数据一致性的问题。由于不需要在现有的replication中添加额外的服务器,仅需要一个manager节点,而一个Manager能管理多套复制,所以能大大地节约服务器的数量;另外,安装简单,无性能损耗,以及不需要修改现有的复制部署也是它的优势之处。MHA除了能实现自动故障检测和切换外,还可以被定义成交互式(手动)故障切换、非交互式故障切换和在线切换Master到不同主机。

3 keepalived

利用虚拟路由冗余协议(vrrp)技術[ 2 ],实现LVS(Linux Virtual Server)和HA(High Aviailabitity)。VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)是一种容错协议,这个协议内的所有路由分为主备,平时数据都是由主节点的IP接口接收转发,一旦主节点故障,就自动启动备用节点,夺取主节点的IP,接管主节点的所有转发工作。本文主要介绍HA(高可用性)的应用。Keepalive的设计结构[ 3 ]如图1所示。

有图可知,两个子进程都被系统WatchDog看管,两个子进程各自复杂自己的事,healthchecker子进程复杂检查各自服务器的健康程度,例如HTTP,LVS等等,如果healthchecker子进程检查到MASTER上服务不可用了,就会通知本机上的兄弟VRRP子进程,让他删除通告,并且去掉虚拟IP,转换为BACKUP状。

4 应用与实现

为了实现MySQL数据库的高可用性,采用了在主从同步复制的框架下,用MHA实现故障自动切换并用keepalived实现虚拟IP的漂移。主服务器宕机后,其二进制日志被从服务器接受,此时会选中应用二进制日志最全的一台从服务器作为新的主服务器。但是主服务器上还有几条记录还没有同步到二进制日志中,所以从服务器也没有接收到这个事件,如果发生切换,将会丢失这个事件。但是如果切换发生在主从同步复制的框架下,极大的减少了此类的风险。

Keepalived将检测到服务器的状态,如果有一台服务器出现故障时,keepalived将被检测到并发出警告给指定的邮箱。设置一个虚拟的IP地址,在切换时,keepalived实现这个虚拟IP的漂移,这样大大的减少了管理人员的工作。因为keepalived非常轻量级,速度非常快,配置简单,所以受到众多企业运维人员青睐。

针对上文提到的高可用性需求,搭建并测试,结果如下表所示:

5 结论

经过多年的发展,MySQL作为一款开源软件,已经形成了很多套的高可用性方案。根据不同拓扑环境和要求下,做出相应的改变,来解决一些实际的问题。本文在故障切换的需求下,通过同步复制、MHA和keepalived实现了预期的目标。

参考文献:

[1] MHA官方文档翻译,2014.

[2] 钱景辉,廖锂.基于keepalived的动态浮动IP集群实现[J].化工自动化及仪表,2012,39(7):926-928.

[3] Keepalived原理与实战精讲,2011.