MySQL双主架构实现高可用性与数据同步的最佳实践指南
引言
在当今数字化时代,数据已成为企业最宝贵的资产之一。数据库系统作为存储、管理和检索这些数据的核心组件,其稳定性和可用性对业务的连续性和可靠性至关重要。高可用性(High Availability, HA)数据库解决方案确保了即使在面临硬件故障、软件崩溃或网络问题时,数据仍然可以被访问和处理。MySQL作为最受欢迎的开源数据库之一,其双主架构(互为主从)是实现高可用性的有效手段。本文将详细介绍如何在Linux系统中配置MySQL双主架构,确保数据实时同步和高可用性。
一、MySQL双主架构概述
1.1 双主架构的定义
MySQL双主架构是指两台MySQL服务器互为主从关系,即每台服务器既是主节点又是从节点。这种架构允许任何一台服务器在发生故障时,另一台服务器能够立即接管服务,确保业务的连续性。
1.2 双主架构的优势
- 高可用性:任何一台服务器故障,另一台服务器可以立即接管。
- 数据冗余:数据在两台服务器上实时同步,避免单点故障导致数据丢失。
- 负载均衡:读写操作可以分散到两台服务器上,提高系统性能。
二、环境准备与依赖安装
2.1 系统环境
- 操作系统:CentOS 7.2 x86_64
- MySQL版本:MySQL 5.7.13
- Keepalived版本:Keepalived 1.2.20
2.2 安装MySQL
yum install -y mysql-community-server
systemctl start mysqld
systemctl enable mysqld
2.3 安装Keepalived
yum install -y keepalived
systemctl start keepalived
systemctl enable keepalived
三、配置MySQL双主复制
3.1 修改MySQL配置文件
在两台服务器上分别修改/etc/my.cnf
文件,添加以下配置:
[mysqld]
server-id=1 # 服务器1为1,服务器2为2
log-bin=mysql-bin
binlog-format=row
relay-log=mysql-relay-bin
log-slave-updates=1
gtid_mode=on
enforce-gtid-consistency=true
3.2 创建具有复制权限的用户
在服务器1上执行:
CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;
在服务器2上执行相同的操作。
3.3 配置主从复制
在服务器1上执行:
CHANGE MASTER TO
MASTER_HOST='192.168.1.200',
MASTER_USER='replicator',
MASTER_PASSWORD='password',
MASTER_AUTO_POSITION=1;
START SLAVE;
在服务器2上执行:
CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='replicator',
MASTER_PASSWORD='password',
MASTER_AUTO_POSITION=1;
START SLAVE;
3.4 验证复制状态
在两台服务器上执行:
SHOW SLAVE STATUS\G
确保Slave_IO_Running
和Slave_SQL_Running
均为Yes
。
四、配置Keepalived实现高可用
4.1 配置Keepalived
在服务器1上修改/etc/keepalived/keepalived.conf
:
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.150
}
}
在服务器2上修改/etc/keepalived/keepalived.conf
:
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.150
}
}
4.2 重启Keepalived服务
systemctl restart keepalived
4.3 验证虚拟IP
执行ip addr show
,确保虚拟IP 192.168.1.150
已绑定到主服务器。
五、测试与验证
5.1 数据同步测试
在服务器1上插入数据:
CREATE DATABASE test;
USE test;
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50));
INSERT INTO users (name) VALUES ('Alice'), ('Bob');
在服务器2上查询数据:
USE test;
SELECT * FROM users;
确保数据已同步。
5.2 故障切换测试
关闭服务器1的MySQL服务:
systemctl stop mysqld
检查虚拟IP是否漂移到服务器2:
ip addr show
确保虚拟IP 192.168.1.150
已绑定到服务器2。
六、总结
通过配置MySQL双主架构和Keepalived,我们成功实现了高可用性和数据同步。这种架构不仅提高了系统的稳定性和可靠性,还提供了灵活的负载均衡能力。希望本文的详细步骤和配置示例能够帮助读者理解和应用这些技术,构建高效稳定的MySQL高可用环境。
七、参考资料
- MySQL官方文档:
- Keepalived官方文档:
八、讨论与反馈
本文由[作者名]撰写,发布于[发布日期],版权所有,未经允许不得转载。