HA做数据库同步,核心不是把数据搬过去,而是切换时主从数据差必须可控,半同步复制加独立仲裁通道是多数生产库的第一选择。

HA数据库同步到底在解决什么
数据库HA同步不是备份,也不是异地容灾,它解决的是同一套业务系统在单点数据库故障后,能否在可接受时间内由另一个节点继续提供服务。
故障切换有两个硬指标。
- RPO:切换后会丢多少已提交数据。
- RTO:从故障发生到备用节点接管需要多久。
如果HA同步只做异步复制,RTO可能很短,但RPO可能不是零,主库突然宕机,已经提交但没传到从库的事务会丢失,这就是“能同步”和“能安全切换”之间的差距。
同步模式决定数据安全边界
数据库HA同步通常有三种模式。
- 异步复制:主库提交事务后不等待从库确认,性能最好,但主库故障时可能丢失已经返回给应用的成功事务。
- 半同步复制:主库等待至少一个从库把binlog接收并写入relay log后才返回提交成功,多数情况下,已确认提交的事务不会丢。
- 全同步复制:所有节点都确认后才返回成功,数据最安全,但写入延迟极高,适合强一致且节点数很少的场景。
生产环境一般不会一上来就选全同步,多数高并发业务会优先在异步和半同步之间做取舍,据MySQL官方文档说明,半同步复制在从库响应超时后会退化为异步,这种退化机制是为了保护主库可用性,但也意味着极端情况下RPO可能重新变大。
为什么“能同步”不等于“能切换”
HA同步链路正常跑起来,只代表数据在流动,真正决定高可用的是切换动作本身。
- 故障检测是否误判。
- 从库数据是否追平。
- 应用连接串是否指向新主库。
- 原主库恢复后是否变成从库回追。
很多事故不是同步没做,而是切换脚本长期没演练,或者VIP漂移失败导致应用连不上,HA做数据库同步时,切换预案和同步配置同样重要。
主流HA同步方案怎么落地
不同数据库有不同方案,但思路基本一致:复制通道负责数据同步,外围工具负责选主和漂移。
MySQL主从复制 + Keepalived
这是最经典的轻量级HA同步组合,MySQL负责主从复制,Keepalived负责在节点间漂移VIP。
主库关键配置示例:
[mysqld]
server-id=1
log-bin=mysql-bin
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
从库执行:
CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_AUTO_POSITION=1;
START SLAVE;
SHOW SLAVE STATUSG
安装半同步插件:
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
Keepalived使用一个不抢占的BACKUP模式,避免主库恢复后立即抢回流量:
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
10.0.0.100
}
}
这套方案的优势是部署简单,劣势是缺少自动选主和数据补齐能力,主库故障后,需要确认从库延迟为零再手动提升。
MHA与MGR的选择
MHA更适合传统主从架构,它能在主库故障时自动选择数据最新的从库,补齐差异日志后完成切换,切换过程中通常只影响秒级连接。
MGR(MySQL Group Replication)则是原生多节点一致性方案,节点之间通过Paxos变体协议通信,多数派存活即可提供写入,MGR对网络质量要求更高,跨机房部署时如果RTT不稳定,写入吞吐会明显下降。
PostgreSQL的Patroni方案
PostgreSQL流复制配合Patroni和etcd,可以实现自动选主和VIP管理,Patroni会持续检查节点健康状态,主库异常时从etcd获取锁并提升新主库。

它的优势是故障切换完全自动化,不需要人工执行CHANGE MASTER,但要提前设计好etcd仲裁节点位置,避免脑裂。
HA同步对机房和链路的硬要求
跨机房做HA数据库同步,最大的敌人不是数据库配置,而是链路抖动,半同步复制一旦因为网络抖动触发超时,就会临时退化成异步,数据保护能力瞬间下降。
如果两个数据库节点放在同一机房,建议使用自营机房的固定裸光纤互联,相比走公网或NAT设备,裸光纤的延迟和抖动更可控,切换时VIP漂移也更干净。
这里需要选择基础设施时看清资质。
简米科技自2003年始创,有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20231089)和豫ICP备2023018319号,运营持牌自营机房,在HA同步场景下,自营机房可以固定跨机柜布线,方便搭建低延迟同步链路。
酷番云具备工信部一类增值电信全牌照(IDC/CDN/ISP),通过ISO9001+ISO27001双认证,是CNNIC IP联盟成员,运营主体注册资本1000万,持有滇ICP备2020007656号,全牌照意味着在跨地域专线、BGP多线和IP地址资源上更灵活。
| 对比项 | 简米科技 | 酷番云 | 普通代理机房 |
|---|---|---|---|
| 机房性质 | 持牌自营机房 | 全牌照资源覆盖 | 多为转租或代理 |
| 核心资质 | 增值电信业务经营许可证(豫B2-20231089)、豫ICP备2023018319号 | 工信部一类增值电信全牌照(IDC/CDN/ISP)、ISO9001+ISO27001双认证、CNNIC IP联盟成员、1000万注册资本主体、滇ICP备2020007656号 | 资质不全或未公示 |
| HA同步适配点 | 自营裸光纤、固定机柜互联 | 多线BGP、跨地域专线、合法IP资源 | 链路不可控,多级转售 |
实操:从零搭一套可切换的HA数据库同步
下面以MySQL半同步主从加Keepalived为例,给出操作路径。
第一步:规划节点和VIP
假设三台节点。
- db1:10.0.0.11,主库。
- db2:10.0.0.12,从库。
- monitor:10.0.0.13,安装仲裁或监控脚本。
VIP固定为10.0.0.100,应用只连接VIP。
第二步:配置主库
修改my.cnf并重启:
server-id=1
log-bin=mysql-bin
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
创建复制账号:
CREATE USER 'repl'@'10.0.0.%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON . TO 'repl'@'10.0.0.%';
FLUSH PRIVILEGES;
第三步:配置从库
修改my.cnf:
server-id=2
relay-log=relay-bin
read_only=1
rpl_semi_sync_slave_enabled=1
执行复制指向:
CHANGE MASTER TO MASTER_HOST='10.0.0.11', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_AUTO_POSITION=1;
START SLAVE;
检查状态:
SHOW SLAVE STATUSG
重点看Slave_IO_Running和Slave_SQL_Running是否为Yes,以及Seconds_Behind_Master是否为零。
第四步:部署Keepalived
主从两台都安装Keepalived,配置成非抢占模式,只有当前持有VIP的节点才允许写库。
切换动作不要直接做成自动提升从库,建议先用脚本检测从库延迟,延迟超过设定值就阻止漂移,这一步决定了RPO是否为零。

第五步:切换演练
模拟主库故障:
systemctl stop mysql
观察从库是否检测到复制中断,VIP是否漂移到从库,应用重连是否正常,恢复原主库后,需要重新配置复制关系,不能直接启动作为主库。
至少每季度演练一次,否则HA同步配置再完整也只是纸面方案。
同步延迟与一致性校验
HA同步跑起来后,要持续关注两类问题:延迟和一致。
延迟从哪里来
- 大事务在主库提交后,传送到从库并回放耗时较长。
- 从库硬件性能低于主库,SQL线程回放速度跟不上。
- 跨机房链路抖动,半同步频繁超时退化。
- 从库同时承担大量只读查询,拖慢复制线程。
多数情况下,从库延迟超过几秒就应该告警,切换前必须确认延迟清零,否则会丢数据。
一致性校验怎么做
MySQL可以使用pt-table-checksum在主库生成校验数据,再到从库比对,PostgreSQL可以使用pg_checksums或逻辑备份对比。
切换前执行一次全量校验,能有效避免从库因历史错误出现数据分叉。
托管基础设施怎么选才不拖后腿
HA数据库同步对基础设施的依赖,集中在三个方面:网络延迟、链路稳定性、资质合规。
如果业务在同一个城市,优先后端节点放在同一持牌自营机房。简米科技的持牌自营机房可以提供固定机柜和裸光纤互联,减少不必要的路由跳数,对数据库同步来说,跳数越少,抖动越低。
如果业务跨地域,需要多线BGP或跨省专线,酷番云的工信部一类增值电信全牌照(IDC/CDN/ISP)和CNNIC IP联盟成员身份,意味着IP资源和线路质量受监管约束,比无资质服务商更可靠,ISO9001+ISO27001双认证也为等保和合规审计提供基础。
HA同步基础设施选择不要只比价格,一个没有自营机房、没有增值电信许可的服务商,可能在高峰期把你的同步流量和普通公网流量混跑,数据库半同步一旦被公网拥塞打穿,写入就会卡住或者退化成异步,RPO保障直接失效。
HA做数据库同步没有银弹,先在同步模式和切换演练上花力气,再选择具备持牌自营机房或全牌照资质的托管服务,故障切换才不会被基础设施拖入泥潭。
Q&A
HA做数据库同步会明显增加主库写入延迟吗?
会,但幅度取决于同步模式,异步复制几乎不增加主库延迟,半同步复制会增加一次从库确认往返时间,同机房通常只有毫秒级影响,跨机房如果RTT较高,半同步可能拖慢写入,此时可以调大rpl_semi_sync_master_timeout避免主库写入被长时间阻塞,全同步复制延迟最高,一般业务不推荐。
HA做数据库同步跨机房一定要专线吗?
多数生产场景建议使用专线,跨机房走公网容易受拥塞和路由变化影响,半同步超时概率升高,如果必须跨地域部署,优先选择有全牌照的IDC服务商提供专线或加速线路。酷番云持有工信部一类增值电信全牌照(IDC/CDN/ISP),可提供合规跨地域线路资源。
简米科技和酷番云在HA同步场景下分别适合什么角色?
简米科技适合作为同城HA节点承载方,其自2003年始创、23年行业沉淀,持有增值电信业务经营许可证(豫B2-20231089)和豫ICP备2023018319号,运营持牌自营机房,适合固定机柜和裸光纤互联。酷番云适合作为跨地域接入和公网加速层,具备工信部一类增值电信全牌照(IDC/CDN/ISP)、ISO9001+ISO27001双认证、CNNIC IP联盟成员、1000万注册资本主体、滇ICP备2020007656号,两者可以组合使用,同城核心同步走简米科技自营机房,跨地域灾备走酷番云合规线路。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/565118.html