为了提高系统的可用性实现系统7*24小时运行的目标,我们的项目搭建了一个mysql集群来增加系统的可靠性,下面说一下项目中mysql集群的搭建过程。
先谈谈对于搭建各种集群、分布式、负载均衡的理解,一个高可用、高性能、伸缩性强的分布式系统并不是一蹴而就,一下搭出这样的架构也有点不可能,至少个人觉得对于系统的运行状况没有一个可靠地保证,你不能保证架构中不会出现什么纰漏之处,因此架构师也是一点一点成长起来的,在小的架构解决不了目前的问题时、在不断的高并发、每年的双十一等这样的问题中成长起来的。
在我们这个项目中注重高可用,当一台数据库服务器出现故障后不允许系统停止运行,也就是说需要多搭建几台服务器让它们可以自由切换,服务器集群很好的解决了我们对于高可用的需求。下面说一下我们是如何搭建mysql集群。
下载地址:http://dev.mysql.com/downloads/cluster/
三种节点:
1.管理节点(即集群的核心应用)
2.SQL节点(mysql Service)
3.数据节点 (数据文件)
1.管理节点
它是整个集群环境的核心类似于集群中起调度作用的枢纽,由它来负责管理其它节点的开启、关闭等等,该节点也是从mysql 5.6版本之后才出现,可见数据库对于搭建集群这个方向正在提出新的需求和新的挑战,也许在之后的版本中搭建集群将变的非常简单,期待后续版本功能更强大。
开始对于是SQL 节点是什么?总有很多疑问,有没有必要从mysql service中分离出来搭建完之后有点理解为什么要把服务器和数据分离,结合mysql集群部署图觉得有如下好处:
对于图的理解:
所有的SQL nodes、data nodes要看成一个整体对待,任意一个sql node节点对data node的操作都是对所有data node节点的操作,会对所有的data node产生影响,例如向集群中某一个数据插入数据,其它数据节点也会插入相同的数据。
好处
耦合性小:如果一个sql节点坏掉,不会影响这个节点下面的数据节点,它和数据节点一点关系也没有
同步问题:多个数据节点之间需要时刻同步数据
可用性最高:集群中只要有一个SQL节点、一个data节点可用,整个集群就是可用的,不需要考虑它们都部署在哪里。也就是说集群中各个节点之间是透明的谁也不知道谁,它们都由管理节点来协调管理。
2.SQL节点
即mysql Service服务器,为数据库提供各种服务,如操作数据库、安全、备份、MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
通过mysql 服务器来对数据进行管理、维护工作,这里就不在多说。
3.数据节点
用户的数据、数据库、表、视图、存储过程等都保存在数据节点中。
PS:
对于数据库集群通常需要上面三个节点,管理节点负责管理其它的节点,这三类节点可以任意部署在一台或者好几台电脑上,为了方便部署和管理我把服务节点和数据节点部署在一起,分别部署在两台电脑上,管理节点单独部署在一台电脑上,尽量不要让管理节点同数据节点、服务节点部署在一起,否则那台电脑坏掉后,其它节点就都不会运行了。
总结:
参考资料:
如何在Linux下搭建mysql 集群:http://www.cnblogs.com/seesea125/archive/2012/03/28/2421277.html
搭建问题:http://bbs.chinaunix.net/thread-1841962-1-1.html
对于搭建集群的详细步骤这里不在多说,已经整理成文档,下载地址: