keepalived+mysql双主来实现MySQL数据库集群配置,保证两台MySQL数据库的数据完全一样,基本思路是两台MySQL互为主从关系,通过Keepalived配置虚拟IP,实现当其中的一台MySQL数据库宕机后,应用能够自动切换到另外一台MySQL数据库,保证系统的高可用。
所需服务器以及安装包(举例):
keepalived-1.2.20版本安装包
服务器ip | 类型 |
---|---|
10.80.52.234 | mysql-masterA |
10.80.52.232 | mysql-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中同样的数据是否也更新。
在mysqlA和myqslB上传keepalived压缩包解压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;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)