mysql主主+keepalived

Mysql+keepalived双主热备高可用

我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。MySQL双主复制,即互为Master-Slave(只有一个Master工作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换。使用Keepalived,可以通过虚拟IP,实现双主对外的统一接口以及自动检查、失败切换机制,从而实现MySQL数据库的高可用方案。
Keepalived看名字就知道,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,那说到keepalived不得不说的一个协议不是VRRP协议,可以说这个协议就是keepalived实现的基础。
Keepalived的工作原理就是VRRP,请你描述VRRP!!!
在这里插入图片描述

环境安装部署:

Mysql—A:192.168.152.130 安装mysql和keepalived
Mysql—B:192.168.152.136 安装mysql和keepalived
先实现mysql互为主从环境:

Mysql–A上操作:

#yum -y install keepalived mysql mysql-server
#service iptables stop
#setenforce 0
修改mysql配置文件:
#vi /etc/my.cnf
添加在【mysqld】
server-id = 1
log-bin = mysql-bin
之后保存退出,切记重启mysql
#service mysqld restart
登录mysql给数据同步授权:
#mysql
mysql> grant all on . to tongbu@’%’ identified by ‘tongbu’;
mysql> flush privileges;
查看log-bin日志和和pos值位置:
mysql> show master status;

下面在mysql-B上进行操作:

#yum -y install keepalived mysql mysql-server
#service iptables stop
#setenforce 0
修改mysql配置文件:
#vi /etc/my.cnf
添加在【mysqld】
server-id = 2
log-bin = mysql-bin
之后保存退出,切记重启mysql
#service mysqld restart
登录mysql给数据同步授权:
#mysql
mysql> grant all on . to tongbu@’%’ identified by ‘tongbu’;
mysql> flush privileges;
查看log-bin日志和和pos值位置:
mysql> show master status;
之后接着当mysql-B作为从时:
mysql> change master to master_host=‘192.168.152.130’,master_user=‘tongbu’,master_password=‘tongbu’,master_log_file=‘mysql-bin.000003’,master_log_pos=309;
mysql> start slave;
mysql> show slave status \G;
在这里插入图片描述
这样mysql-B做为从,mysql—A作为主结束,实现主从同步。

现在在mysql—A上操作:

现在mysql-A作为从,mysql-B将作为主:
mysql> change master to master_host=‘192.168.152.136’,master_user=‘tongbu’,master_password=‘tongbu’,master_log_file=‘mysql-bin.000004’,master_log_pos=106;
mysql> start slave;
mysql> show slave status \G;
在这里插入图片描述
现在主主成功完成,需要互相新建数据验证!!!

下面开始配置mysql+keepalived高可用环境

在mysql—A上操作:

安装keepalived服务:
#yum -y install keepalived
修改配置文件(修改配置文件之前记得先备份):
#vi /etc/keepalived/keepalived.conf
在这里插入图片描述
#service keepalived restart
#vi /etc/keepalived/mysql.sh
#!/bin/bash
pkill keepalived
/sbin/ifdown eth0 && /sbin/ifup eth0
#chmod +x mysql.sh
这是一个检测脚本,作用是当mysql停止工作时自动关闭本机的keepalived,当MySQL正常启动之后,要手动启动keepalived服务。

Mysql-B上操作:

安装keepalived服务:
#yum -y install keepalived
修改配置文件(修改配置文件之前记得先备份):
#vi /etc/keepalived/keepalived.conf
在这里插入图片描述
注意:相对于master上的操作,只需要修改state为BACKUP,修改优先级为小于master的优先级,修改real_server为本机地址即可。
#service keepalived restart
#vi /etc/keepalived/mysql.sh
#!/bin/bash
pkill keepalived
/sbin/ifdown eth0 && /sbin/ifup eth0
#chmod +x mysql.sh
这是一个检测脚本,作用是当mysql停止工作时自动关闭本机的keepalived,当MySQL正常启动之后,要手动启动keepalived服务。

测试:

在mysql-A和mysql-B上分别执行ip addr命令查看mysql-B和mysql-A主机对VIP(群集虚拟ip)的控制权。
客户端通过vip登录mysql服务:
#mysql -h192.168.152.100 -utongbu –ptongbu
查看现在的server-id:
mysql> show variables like ‘%server_id%’;
在这里插入图片描述
之后停掉现在存在vip的mysql,之后继续查看,mysql并不中断,但是id已经变了:
在mysql—A上:
#service mysqld stop
#service keepalived stop
之后vip自动切换到mysql-B上去了,再次在客户端查看id:
在这里插入图片描述
在这里插入图片描述

发布了133 篇原创文章 · 获赞 4 · 访问量 2242

猜你喜欢

转载自blog.csdn.net/xiaowoniuwzx/article/details/105723034
今日推荐