Keepalived+MySQL双主数据库集群

Keepalived+MySQL双主数据库集群,第1张

keepalived+mysql双主来实现MySQL数据库集群配置,保证两台MySQL数据库的数据完全一样,基本思路是两台MySQL互为主从关系,通过Keepalived配置虚拟IP,实现当其中的一台MySQL数据库宕机后,应用能够自动切换到另外一台MySQL数据库,保证系统的高可用。

所需服务器以及安装包(举例):

keepalived-1.2.20版本安装包

服务器ip类型
10.80.52.234mysql-masterA
10.80.52.232mysql-masterB
10.80.52.199虚拟ip

mysql双主配置:

修改mysql配置文件:
(1) masterA配置:
server-id = 100   //   两个实体数据库id要不同
log_bin = mysql-bin
binlog_format = ROW
max_binlog_size = 1024M
relay_log = mysql-relay-bin
auto_increment_offset = 1        
auto_increment_increment =2
gtid_mode = ON
enforce_gtid_consistency = 1
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = sys                          

(2)masterB配置:

#以下三条与masterA不同,其他的均一致
server-id = 200
auto_increment_offset = 1
auto_increment_increment = 2

2.配置mysqlA为mysqlB的master:

#(登录mysql设置允许远程访问)
grant replication slave on *.* to 'root'@'%' identified by 'password';

#查看mysqlA的master信息;
show master status;
 
+------------------+----------+--------------+------------------+---------------------------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                           |
+------------------+----------+--------------+------------------+---------------------------------------------+
| mysql-bin.000001 |  610058  |              |                  | 778a97fe-78d8-11eb-b5a1-5254017df4b1:1-151    |
+------------------+----------+--------------+------------------+---------------------------------------------+
#登录mysqlB进行集群部署;

# 停止mysqlB上的slave;
stop slave;
 
# 将mysqlB的master设为节点A,以下的配置信息均表示mysqlA
# MASTER_LOG_FILE和MASTER_LOG_POS,是在第(2)步中查看mysqlA的master信息
CHANGE MASTER TO MASTER_HOST='10.80.52.234',MASTER_PORT=3306,MASTER_USER='root',MASTER_PASSWORD='achc9sMnVk',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=610058;
 
# 开启mysqlB上的slave
start slave;

#启动完salve,查看数据库双主配置是否成功;
show slave status\G;


当Slave_IO_Running和Slave_SQL_Running均为yes时,masterB的双主则配置成功;当二者为NO或者Connectint时,查看数据库日志文件,检查错误并修改重启slave

当mysqlB的双主配置完成后,同样的步骤对mysqlA进行双主配置;

验证:Navicat连接mysqlA并且通过sql语句更新表中数据,查看mysqlB中同样的数据是否也更新。

Keepalived安装配置

在mysqlA和myqslB上传keepalived压缩包解压
//下载keepalived需要的插件包
yum -y install kernel-devel openssl-devel popt-devel
//解压压缩包:
tar -zxvf keepalived-1.2.20.tar.gz -C /usr/local/
//切换到keepalived目录下
cd /usr/local/keepalived-1.2.20/
//初始化编译keepalived
./configure --prefix=/ && make && make install
//编译结束后,会自动生成/etc/init.d/keepalived脚本文件,因此我们需要手动添加到系统服务;
ls /etc/init.d/keepalived
chkconfig --add keepalived
chkconfig keepalived on
修改Keepalived配置文件 在/etc/keepalived路径下建立bin文件夹并编辑文件mysql.sh脚本
#!/bin/bash
# 检验当前服务器数据库是否正常启动,当数据库出现异常断开连接时,自动关闭keepalived
A=`netstat -tunlp | grep 3306 | wc -l`
if [ $A -eq 0 ];then
       systemctl stop keepalived
fi

修改mysqlA的keepalive的配置文件
! Configuration File for keepalived

global_defs {
   router_id mysql-1
}
vrrp_script chk_nfs {
	script "/etc/keepalived/bin/mysql.sh"
	interval 2
	weight -20
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 184
    priority 100
    advert_int 1
    nopreempt   //一台服务器配置即可
    unicast_src_ip 10.80.52.234   //当前服务器ip
    unicast_peer {
        10.80.52.232   //另外一台数据库服务器ip
    }
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
     chk_nfs
    }
    virtual_ipaddress {
        10.80.52.199   //虚拟ip
    }
}
启动数据库和keepalived,执行ip addr show dev eth0查看虚拟ip使用情况:
注释:当启动两台服务器keepalived后查看虚拟ip的使用情况时,当只有一台服务器持有虚拟ip时即配置成功,数据库双主+keepalived集群搭建完成。

校验集群

关闭234服务器的mysql服务,查看232服务器是否持有虚拟ip,检验虚拟ip是否可以正常切换。之后启动234服务器mysql服务以及keepalived服务,同样的方法关闭232数据库服务,查看234是否持有虚拟ip;

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/2989920.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-23
下一篇 2022-09-23

发表评论

登录后才能评论

评论列表(0条)

保存