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

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

mariadb gtid主从复制 mysql主从复制高可用_服务器


实验环境如下

mariadb gtid主从复制 mysql主从复制高可用_mariadb gtid主从复制_02

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

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

mariadb gtid主从复制 mysql主从复制高可用_服务器_03

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

mariadb gtid主从复制 mysql主从复制高可用_数据库_04


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

mariadb gtid主从复制 mysql主从复制高可用_mariadb gtid主从复制_05

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

mariadb gtid主从复制 mysql主从复制高可用_数据库_06

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

Host01上面操作

mariadb gtid主从复制 mysql主从复制高可用_服务器_07

Host02上面观察

mariadb gtid主从复制 mysql主从复制高可用_MySQL_08

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


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

主库host01  keepalived配置如下

mariadb gtid主从复制 mysql主从复制高可用_MySQL_09

从库host02配置如下

mariadb gtid主从复制 mysql主从复制高可用_服务器_10

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

mariadb gtid主从复制 mysql主从复制高可用_服务器_11

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

mariadb gtid主从复制 mysql主从复制高可用_数据库_12


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

mariadb gtid主从复制 mysql主从复制高可用_服务器_13


客户端连入VIP登陆测试

mariadb gtid主从复制 mysql主从复制高可用_mysql_14



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

 

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

mariadb gtid主从复制 mysql主从复制高可用_MySQL_15


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

mariadb gtid主从复制 mysql主从复制高可用_mariadb gtid主从复制_16

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

mariadb gtid主从复制 mysql主从复制高可用_mysql_17


mariadb gtid主从复制 mysql主从复制高可用_mysql_18


转载于:https://blog.51cto.com/huaxin/1768614