MySQL双主配置,也称为主主复制(Master-Master Replication),允许两个数据库服务器同时作为主服务器运行,它们之间相互复制数据。这种配置可以提高数据库的可用性和容错能力。结合Keepalived,可以进一步实现高可用性。本文将详细介绍MySQL双主配置,并深入探讨如何使用Keepalived来实现高可用性。
1. MySQL双主配置概述
1.1 双主复制原理
在MySQL双主复制中,两个数据库服务器都可以接收写操作,并且会自动将更改复制到对方。这样,当一个数据库服务器出现故障时,另一个数据库服务器可以立即接管,确保数据的可用性。
1.2 配置要求
- 两台MySQL服务器,配置为相同的版本和参数。
- 两台服务器之间可以相互通信。
- 每台服务器都有一个唯一的IP地址。
2. MySQL双主配置步骤
2.1 安装和配置MySQL
- 在两台服务器上安装MySQL。
- 配置MySQL的my.cnf文件,确保以下设置:
[mysqld]
server-id = 1
log-bin = /var/log/mysql/binlog
binlog-format = ROW
sync_binlog = 1
2.2 配置复制用户
- 在每台服务器上创建一个用于复制的用户:
CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
FLUSH PRIVILEGES;
- 将复制用户权限同步到另一台服务器:
-- 在第一台服务器上执行
mysql -h 192.168.1.2 -u replication_user -ppassword -e "GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%'"
2.3 配置主主复制
- 在第一台服务器上设置为主服务器:
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='192.168.1.2', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4;
START SLAVE;
- 在第二台服务器上设置为主服务器:
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='192.168.1.1', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4;
START SLAVE;
3. Keepalived实现高可用性
3.1 安装和配置Keepalived
- 在两台服务器上安装Keepalived。
# 安装命令根据操作系统不同而有所不同
- 配置Keepalived的vrrp配置文件(/etc/keepalived/keepalived.conf):
vrrp_script chk_mysql {
script "/usr/local/bin/check_mysql.sh"
interval 5
}
vrrp_instance VI_1 {
state master
interface eth0
virtual_rtr 192.168.1.100
virtual_ipaddress 192.168.1.101
track_script {
chk_mysql
}
}
3.2 编写检查脚本
创建一个名为check_mysql.sh
的脚本,用于检查MySQL服务是否运行:
#!/bin/bash
if [ $(pgrep -x mysql | wc -l) -eq 0 ]; then
echo "MySQL service is not running"
exit 2
else
echo "MySQL service is running"
exit 0
fi
确保脚本具有执行权限:
chmod +x /usr/local/bin/check_mysql.sh
3.3 启动Keepalived
在两台服务器上启动Keepalived服务:
systemctl start keepalived
4. 总结
通过以上步骤,您已经成功配置了MySQL双主配置并使用Keepalived实现了高可用性。当一台MySQL服务器出现故障时,另一台服务器将自动接管虚拟IP地址,确保数据库服务的连续性。