Centos7部署MySQL8+keepalived双主热备(含Keepalived配置与GTID同步优化方案)
架构拓扑原理
GTID同步 VIP 192.168.1.100 MySQL主节点1 MySQL主节点2
核心逻辑:
通过Keepalived实现VIP漂移
双向GTID同步保证数据一致性
双写模式需配合应用层冲突解决机制
MySQL 8部署流程
? 步骤1:官方源配置
wget https://repo.mysql.com//mysql80-community-release-el7-7.noarch.rpm
sudo rpm -Uvh mysql80-community-release-el7-7.noarch.rpm
?
?? 注意:
确认EL7版本与CentOS 7兼容
国内镜像加速可替换为华为云源
安装前执行 yum clean all && yum makecache
? 步骤2:安装与服务启动
sudo yum install mysql-community-server
sudo systemctl enable --now mysqld
?
安全初始化:
# 查看临时密码
grep 'temporary password' /var/log/mysqtd.log
# 执行安全脚本
mysql_secure_installation
?
密码策略说明:
策略项 默认值 修改建议,密码长度 8字符 ≥12字符,特殊字符 必需 维持强校验,密码过期 180天 生产环境建议90天
双主同步配置
节点1配置(192.168.1.10)
# /etc/my.cnf
[mysqld]
server-id=1
log-bin=mysql-bin
binlog_format=ROW
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_do_db=需要同步的数据库名
auto_increment_increment=2 # 双主必须配置
auto_increment_offset=1
?
节点2配置(192.168.1.11)
auto_increment_increment=2
auto_increment_offset=2 # 确保自增ID不冲突
?
? 授权同步账户
-- 在两台服务器分别执行
CREATE USER 'sync_user'@'%' IDENTIFIED BY 'V3ryS3cure!P@ss';
GRANT REPLICATION SLAVE ON *.* TO 'sync_user'@'%';
ALTER USER 'sync_user'@'%' IDENTIFIED WITH mysql_native_password BY 'V3ryS3cure!P@ss';
?
? 建立双向通道
-- 在节点1执行
CHANGE MASTER TO
MASTER_HOST='192.168.1.11',
MASTER_USER='sync_user',
MASTER_PASSWORD='V3ryS3cure!P@ss',
MASTER_AUTO_POSITION=1;
-- 在节点2执行
CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='sync_user',
MASTER_PASSWORD='V3ryS3cure!P@ss',
MASTER_AUTO_POSITION=1;
START SLAVE;
?
Keepalived高可用配置
主节点配置(192.168.1.10)
# /etc/keepalived/keepalived.conf
global_defs {
router_id MYSQL_HA_01
}
vrrp_script chk_mysql {
script "/usr/local/bin/mysql_check.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
virtual_ipaddress {
192.168.1.100/24 dev eth0
}
track_script {
chk_mysql
}
}
?
备节点配置(192.168.1.11)
router_id MYSQL_HA_02
state BACKUP
priority 90
?
? 健康检测脚本
#!/bin/bash
# /usr/local/bin/mysql_check.sh
if ! mysqladmin ping -h127.0.0.1 -uroot -p'YourPassword' >/dev/null 2>&1; then
systemctl stop keepalived
exit 1
fi
exit 0
?
安全加固:
脚本权限设置为700
使用独立监控账户代替root
日志记录到/var/log/keepalived.log
关键验证操作
1. 同步状态检查
SHOW SLAVE STATUSG
-- 确认以下参数:
-- Slave_IO_Running: Yes
-- Slave_SQL_Running: Yes
-- Retrieved_Gtid_Set: 正常递增
?
2. VIP漂移测试
# 主节点执行
systemctl stop mysqld
# 观察备节点是否接管VIP
ip addr show eth0 | grep 192.168.1.100
?
3. 数据冲突测试
-- 节点1插入
INSERT INTO test.t1 VALUES (null, 'node1');
-- 节点2插入
INSERT INTO test.t1 VALUES (null, 'node2');
-- 检查双节点数据一致性
?
安全加固清单
启用SSL加密传输
配置iptables防火墙规则
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="3306" accept'
?
开启审计日志
[mysqld]
audit_log=ON
audit_log_format=JSON
?
定期备份验证
mysqldump --single-transaction --master-data=2 -uroot -p dbname > backup.sql
审核编辑 黄宇
?
-
SSL
+关注
关注
0文章
131浏览量
26287 -
CentOS
+关注
关注
0文章
84浏览量
14362
发布评论请先 登录
QNAP 正式推出 NAS 双机架构的高可用性解决方案,打造不中断的储存环境
raid5数据恢复—raid5阵列热备盘未完全激活导致崩溃的数据恢复案例
介绍三种常见的MySQL高可用方案
服务器数据恢复—V7000存储上raid5热备盘同步失败的数据恢复方案
利用dockerfile搭建mysql主从集群和redis集群

升级centos7内核版本
确保网站无缝运行:Keepalived高可用与Nginx集成实战

适用于MySQL的dbForge架构比较

评论