MySQL自身提供的一种高可用解决方案,数据同步方法采用的是MySQL replication技术。MySQL replication就是从服务器到主服务器拉取二进制日志文件,然后再将日志文件解析成相应的SQL在从服务器上重新执行一遍主服务器的操作,通过这种方式保证数据的一致性。

为了达到更高的可用性,在实际的应用环境中,一般都是采用MySQL replication技术配合高可用集群软件keepalived来实现自动failover

wKiom1chsMWSxeeoAABbmbCWni4847.png


实验环境如下

wKioL1chsfzTIyTlAAAh1DDZ7fk104.png

数据库编译过程略,下面开始进入配置过程。

Host01     /etc/my.cnf文件中的“[mysqld]”段添加如下内容:

wKioL1chskDzYO1_AAAeHjZ47C8474.png

Host02     /etc/my.cnf文件中的“[mysqld]”段添加如下内容:

wKioL1chsojyY0tQAAAdY05dG5M839.png


首先在host01mysql库中创建复制用户,操作过程如图所示。

wKiom1chsd3SGMAvAABPKVwhGp4383.png

然后在host02mysql库中将host01设为自己的主服务器,操作过程如图所示。

wKioL1chswmwAUNpAACaSGvBgTc848.png

host01 主数据库上面创建数据库kkk,在host02备用数据库观察是否同步过来

Host01上面操作

wKiom1chsnCC1Q4KAAAqAW4Bhec309.png

Host02上面观察

wKioL1chs4SR2Po4AAAnjIvg0_8173.png

可以看到数据库kkk同步过来了,说明主从同步成功


两台数据库安装高可用软件keepalived,安装过程这里略过

主库host01  keepalived配置如下

wKiom1chsxbzR3ZgAABlzqOWZkA421.png

从库host02配置如下

wKioL1chtBOzP6-yAABdykO83Ig175.png

查看VIP地址情况,注意VIP地址只能出现在一端,两端都有说明出现了脑裂

wKioL1chtFTzkUjDAABY5X2cvuQ303.png

开启第三台机器作为客户端连入VIP地址测试

wKioL1chtJ2TEBxdAAB6Ewa8AUU744.png


在主从服务器上面做好客户端的授权操作

wKiom1chs_yyosr-AAAtIVoDOLM452.png


客户端连入VIP登陆测试

wKioL1chtQbDlwb0AAB7f186N-4253.png


可以看到此时连入的是主库,此时模拟故障,将主库mysql停掉观察现象

 

主库上面,可以看到VIP地址被移除了

wKioL1chtTOCOD3hAABtIbaqIns350.png


从库上面,VIP地址已经漂移过来

wKiom1chtJSyJrNbAACT_W9_InI168.png

客户端上面,可以看到确实连接到了从库

wKiom1chtNTSzWg2AABoDO7ITl0656.png


wKioL1chthXR77QOAAIHgxxvmMU654.png