我们前面几篇文章中有介绍了Keepalived的功能--HA,关于MySQL-HA,目前有多种解决方案,比如heartbeat、drbd、mmm、共享存储,但是它们各有优缺点。heartbeat、drbd配置较为复杂,需要自己写脚本才能实现MySQL自动切换,对于不会脚本语言的人来说,这无疑是一种脑裂问题;对于mmm,生产环境中很少有人用,且mmm 管理端需要单独运行一台服务器上,要是想实现高可用,就得对mmm管理端做HA,这样无疑又增加了硬件开支;对于共享存储,个人觉得MySQL数据还是放在本地较为安全,存储设备毕竟存在单点隐患。使用MySQL双master+keepalived是一种非常好的解决方案,今天我们介绍利用keepalived构建高可用MySQL-HA,保证两台MySQL数据的一致性,然后用keepalived实现虚拟IP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换。
大概的思路是将两台MYSQL服务器配置双向复制,然后通过配置Keepalived指定realserver指向本地的Mysql服务器,实现高可用的切换。具体见下:
Hostname:DB01
IP:192.168.5.53
Role:Mariadb+Keepalived
Hostname:DB012
IP:192.168.5.54
Role:Mariadb+Keepalived
Virtual IP:192.168.5.88
从Centos7下mysql已经被遗弃了,变为Mariadb了,当然功能及配置是一样的。因为我们是Centos7,所以需要指定安装源,为后面yum安装服务提供支持需要执行以下命令:
我们查看定义的源
运行yum install MariaDB-server MariaDB-client命令安装 MariaDB
安装完成后, 我们通过rpm查看安装的相关信息
然后启动数据库
接着运行 mysql_secure_installation配置MariaDB
配置完成后,我们进入数据库
接下来我们创建一个数据库及表单信息
我们可以根据自己的配置设置运行那些主机及用户进行mysql的连接;
如果我们需要配置任何主机都可以连接的话,可以使用一下命令
接下来我们修改默认的mysql配置文件
保存退出;先查看下log bin日志和pos值位置
注意:这里记住File的值:mysql-bin.000001和Position的值:245,后面会用到。
添加防火墙端口
主主同步配置完毕,查看同步状态Slave_IO和Slave_SQL是YES说明主主同步成功。
我们也需要同时在第二台服务器上执行上面的所有操作。
我们在第二台服务器上也安装完成
我们同样查看版本
然后启动数据库
接下来我们同样登陆到mysql服务
创建一个表及插入数据
我们可以根据自己的配置设置运行那些主机及用户进行mysql的连接;
如果我们需要配置任何主机都可以连接的话,可以使用一下命令
接下来我们修改默认的mysql配置文件
保存退出: 我们需要些对方的ip地址192.168.5.53
添加防火墙端口
主主同步配置完毕,查看同步状态Slave_IO和Slave_SQL是YES说明主主同步成功。
接下来我们测试一下
我们在第一台Mariadb的数据库表中插入一条数据,然后在第二台服务器上进行查看,是否会同步;
因为我们在配置的时候指定了DB这个数据库才会同步,所以我们需要在DB数据库中插入数据
我们当前数据库表中的数据只有一条
接下来我们插入一条数据;
插入完成后,我们在第二台服务器上进行查看;
我们查看到数据是已经同步了;
我们接下来在第二台服务器上进行插入一条数据,看看第一台服务器是否会同步;
接着我们在第一台服务器上进行查看
数据已经同步过来了
配置keepalived实现热备
我们首先在第一台服务器上进行安装
我们首先备份一下默认的配置文件;
我们查看默认配置
通过修改后,我们将将默认的文件清空,然后粘贴下面内容
然后粘贴以下内容
我们启动keepalived服务
接下来我们在DATA目录下创建shell目录添加mysql.sh脚本
接着我们查看keepalived的网卡监听状态,虚拟IP已经监听
我们同样在第二台服务器上也安装keepalived
我们首先备份一下默认的配置文件;
然后将第一台服务器上的keepalived拷贝到第二台服务器上的keepalived路劲下替换keepalived.conf文件
然后我们将第一台服务器下的mysql.sh拷贝到第二台对应的路劲
然后,我们要修改第二台服务器的keepalived.conf文件,因为刚才拷贝过来的数据需要修改
我们需要修改realserver的地址,指向本地192.168.5.54,然后修改weight权重值,我们备服务器修改成50
保存退出后,我们启动keepalived服务
我们第二台服务器的网卡监听状态,虚拟地址都 已经监听了
接下来我们需要在两台服务器上ping一下虚拟ip地址是否通
我们找了一台windows机器进行测试
然后使用myslq连接工具进行测试,测试通过
我们查看连接后所有的数据信息都可以看见
接下来我们将第一台服务器服务停止。
客户端还是可以继续使用。
接下来我们使用客户端插入一条数据
我们查看插入的数据
我们在第二台服务器上查看数据
接下来我们将第一台服务器的mariadb和keepalived服务启动起来,然后再查看数据
查看第一台的数据也会自动同步
本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1888036,如需转载请自行联系原作者