核心是“隔离不隔断”:私网保障安全边界,高可用依赖内部冗余与自动协同;所有节点须部署于同一私网段,配置使用私网ip,关闭防火墙或精确放行端口,禁用selinux,并通过私网vip+keepalived+haproxy实现低延迟、可监控的闭环同步。

公网与私网规划下实现私网内数据库高可用同步,核心是“隔离不隔断”——私网保障安全边界,高可用依赖内部冗余与自动协同。关键不在公网暴露,而在于私网内组件间低延迟、可互通、可监控的闭环能力。
私网拓扑与网络连通性保障
确保所有参与高可用的节点(主库、从库、Keepalived、HAProxy)部署在同一私网段(如 192.168.10.0/24 或 10.0.2.0/24),避免跨VLAN或NAT转发:
- 关闭各节点防火墙(
systemctl stop firewalld)或精确放行端口(3306、5432、6443、8080、11234等) - 禁用SELinux(
setenforce 0并修改/etc/selinux/config) - 用
ping和telnet IP 端口验证双向连通性,尤其确认从库能连通主库的3306、Keepalived节点能连通MySQL健康端点 - 若使用云平台(如阿里云VPC、腾讯云VPC),需检查安全组规则是否允许私网IP互访,而非仅放行公网规则
主从同步配置聚焦私网地址
所有连接配置必须使用私网IP,杜绝域名解析或公网地址引入单点故障和延迟:
- 主库
my.cnf中启用 binlog 并设私网唯一server-id:server-id = 101log-bin = /var/lib/mysql/mysql-binbinlog-format = ROW - 从库配置中指定主库为私网地址:
CHANGE MASTER TO MASTER_HOST='192.168.10.101', MASTER_USER='repl', MASTER_PASSWORD='xxx', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154; - 复制用户授权时,明确限定来源为私网段:
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.10.%' IDENTIFIED BY 'xxx';
Keepalived + HAProxy 组合部署在私网侧
虚拟IP(VIP)和代理服务均运行于私网,对外提供统一入口,业务系统通过私网VIP访问数据库:
- Keepalived 配置中
vrrp_instance VI_1的virtual_ipaddress设为私网VIP(如192.168.10.100/24),且两节点均在同一子网广播域内 - HAProxy 后端
server条目全部使用私网IP:server mysql-master 192.168.10.101:3306 check inter 2000 rise 2 fall 3server mysql-slave 192.168.10.102:3306 check inter 2000 rise 2 fall 3 - HAProxy 健康检查脚本(如
check_mysql.sh)调用本地mysql -h 127.0.0.1 -P 3306 -uhealth -p... -e "SELECT 1",避免引入额外网络跳转
同步状态与故障切换验证要点
不依赖公网工具,纯私网内完成闭环验证:
- 主库写入后,立即在从库执行:
SHOW SLAVE STATUS\G—— 检查Slave_IO_Running和Slave_SQL_Running均为Yes,Seconds_Behind_Master接近 0 - 手动模拟主库宕机:
systemctl stop mysqld,观察 Keepalived 日志(/var/log/messages)是否触发 VIP 漂移,HAProxy 是否将流量切至从库 - 用私网内测试客户端(如另一台同网段服务器)连接 VIP 执行读写,确认服务无中断、数据一致










