技术开发 频道

具有负载均衡功能的MySQL服务器集群部署及实现

  4. 常见问题

  (1). 如何估算MySQL服务器集群的性能提升量?

  针对本文采用的结构模式,可对应用系统整体性能提升做出大致估算。假设应用系统写操作占10%,读操作占90%,写操作耗时是读操作的2倍,系统的吞吐量(throughput)为T(用reads/s读操作次数/秒来衡量)。把写操作线性转换为读操作,则有:

  T= 2Xwrites + 9Xwrites ==>writes=T/11① (不采用主从复制模式,读写操作集中到一个服务器上)

  T= 2Xwrites + 9Xwrites/N ==> writes=T/(2+9/N)② (采用一对多的主从复制模式,读操作在从属服务器,写操作在主服务器)

  其中,writes为系统单位时间内所能承受的最大写操作次数,N为从属服务器个数,N大于等于2。在不采用主从复制模式时,系统性能writes=T/11;采用本文一对三的复制模式时,系统性能writes=T/5。采用负载均衡模式与不采用系统性能之比为11:5,即2.2:1,考虑到应用服务器的额外开销,系统整体性能提升了整整1倍!从②式可以看出,系统整体性能理论极限为T/2,当然在实际生产环境中不可能达到。具体部署时用户可以根据自己的实际情况估算出合理的从属服务器数量,主要影响因素是网络带宽和机器整体性能[9]。

  (2). 如何应对主从服务器崩溃?

  当某台从属服务器崩溃时,修复故障重启后重新连接到主服务器,根据其master.info文件更新其数据,保持与主服务器的数据同步。如果主服务器崩溃,在某一从属服务器上执行STOP SLAVES; GRANT REPLICATION SLAVE ON *.* repl_db TO ‘repl’@’%’ IDENTIFIED BY ‘g00r002b’;RESET MASTER;这三个SQL语句,由于从属服务器已启动了二进制更新日志功能,因此具备了角色转换的必要条件。更改其主机名、IP地址及server-id与Master一样,重启MySQL服务器,系统开始正常对外提供服务。其它两台从属服务器则不需执行任何操作,继续执行replication过程。BIND DNS服务器和应用程序也不需做任何调整,继续对系统用户提供不间断服务。主服务器排除故障恢复正常后,将其网络配置改为与现有Master转换角色之前一样的配置,重启MySQL服务,将其角色转换为从属服务器。也就是说,整个集群机器的角色可以相互循环转换,提高系统的冗余性和可靠性。在此需要注意的是,在应用系统调试运行正常之后,在Slave角色服务器的/etc/my.cnf文件[mysqld]段加入slave-skip-errors=all,保证集群之间复制(replication)的正常运行。

  5. 结束语

  部署与实现具有负载均衡功能的MySQL服务器集群是一项复杂的系统工程,需要多方面良好的协同合作才能做好。服务器的搭建配置、BIND DNS服务器的配置部署,以及应用系统程序的开发都要紧紧围绕实现MySQL服务器集群负载均衡功能这个目标。必须对主服务器的运行状态进行动态监控,如果发生故障,立即执行角色转换过程,确保为终端用户提供可靠、不间断的服务。可以针对具体系统环境写出监控脚本或程序,确保系统的可靠性与稳定性。

  参考文献

  [1] W.Jason Gilmore. Beginning PHP and MySQL5 From novice to Professional(Second Edition) 573-580

  [2] http://www.freebsd.org/

  [3] http://www.mysql.com/

  [4] Kenneth Rosen. UNIX:The Complete Reference (Second Edition) 273, 274

  [5] Ian Gilfillan. MySQ4:从入门到精通 301-323

  [6] 林慧琛,刘 殊,尤国君. Red Hat Linux服务器配置与应用 88-92

  [7] W.Jason Gilmore. Beginning PHP and MySQL5 From novice to Professional(Second Edition) 161, 509-511

  [8] Ian Gilfillan. MySQ4:从入门到精通 301-323

  [9] http://www.mysql.com/

0
相关文章