前言
无论是在一个web站点还是其他需要数据库的业务系统中,数据库的重要性是毋庸置疑的。但是关系型数据库收到自身设计的限制,本身的性能可能会成为拉低整个平台的瓶颈。而且数据库作为系统重要的一环,必须避免数据库的单点故障。由此mysql数据库的集群就显得至关重要。
集群分类及分析
mysql复制集群总体可以分为如下几类:
主从复制集群:主服务器负责数据写入,从服务器负责读操作,这样可以整体降低主服务器的压力,而且可以提高访问性能;
双主或多主集群:两台或多台mysql服务器同时都提供读写操作;
半同步集群:一台服务器和主服务器采用同步写入的方式,当主服务器宕机这台服务器提升为主服务器;
级联复制集群:多级复制集群,降低主服务器的压力;
循环集群
...
此文主要讨论主从复制集群、双主集群和半同步集群的配置方法。
在一定程度上复制集群确实能够解决mysql的性能问题和单点问题,但是却也面临着更多其他问题:
当mysql集群运行一定时间之后可能会面临主从服务器数据不一致,从服务器数据滞后于主服务器的问题,这是由mysql复制集群的特点所决定的;
双主或多主复制集群,如果两台服务器同时发生基于一个字段的修改,可能会发生数据的重复修改问题,导致数据不一致;
...
mysql复制集群的原理
mysql复制集群是基于如下原理进行的:
主服务器所有的操作都写入二进制日志,从服务器开启中继日志和两个线程:
sql_thread:负责从中继日志读取内容,然后replay到数据库中;
io_thread:负责连接主服务器,把主服务器的二进制日志复制到自己的中继日志;
mysql复制集群配置方法
主从复制集群
此处采用两台mysql服务器,一台为主,一台为从;
首先配置主服务器:
修改/etc/my.cnf.d/server.conf,添加server_id和开启binary-log:如下:log_bin=master-log```
登录mysql,然后添加一个有复