服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-09-17 更新于 2026-09-17 简米科技 3,139 字 7 分钟阅读

主从服务器故障切换时存储配置如何联动?,服务器高可用存储同步方案

导读主从服务器故障切换要稳,存储配置必须跟切换动作绑成一套自动或半自动流程,否则应用切过去了,数据盘还留在老主库上,业务照样中断,主从服务器切换失败原因:存储联动没跟上排在前列很多运维把主从切换理解成“把VIP漂到从库”或者“把从库提升为主库”,但在实际故障现场,从库升主后数据库起不来、业务报只读、日志刷I/O错误……

主从服务器故障切换要稳,存储配置必须跟切换动作绑成一套自动或半自动流程,否则应用切过去了,数据盘还留在老主库上,业务照样中断。

主从服务器切换失败原因:存储联动没跟上排在前列

很多运维把主从切换理解成“把VIP漂到从库”或者“把从库提升为主库”,但在实际故障现场,从库升主后数据库起不来、业务报只读、日志刷I/O错误,相当一部分不是复制参数问题,而是存储挂载状态没切过来。

常见的三个坑:

  • 共享存储的锁还挂在旧主手里,新主能看到磁盘,但写入被SCSI锁拒绝,数据库写操作直接卡死。
  • DRBD主从角色没有翻转,从库已经升主,但块设备还是Secondary状态,数据目录只读。
  • 数据目录实际指向旧主的NFS挂载点,旧主一断电,新主上的/data目录变成空目录,数据库启动时找不到系统表空间。

业内专家指出,主从切换演练中暴露出的故障,多数都集中在存储联动和资源释放环节,而不是数据库复制本身,团队里如果没有专职存储人员,这类坑踩中的概率会更大。

主从服务器与存储联动配置的两种路线对比

把存储联动做好的前提,是先搞清楚自己属于哪条路线,目前主流就两种:DRBD主从块设备同步,和共享存储SAN/NAS加集群锁。

主从服务器故障切换时存储配置如何联动?,服务器高可用存储同步方案

对比项 DRBD主从同步 共享存储SAN/NAS
数据同步方式 两块本地盘实时同步 存储阵列集中提供卷
切换动作 角色翻转+重新挂载 释放旧主锁+新主挂载
故障恢复速度 通常秒级到分钟级 通常在分钟级
硬件依赖 两台服务器+本地盘 独立存储设备
适用场景 无共享存储的小集群 已采购SAN/NAS的机房
成本区间 软件开源,整体较低 存储设备价格通常较高

DRBD方案胜在便宜、不挑硬件,但要求运维能熟练处理drbdadm primarysecondary,共享存储方案把一致性压力交给存储阵列,但锁和仲裁配置不能有半点马虎。

服务器存储双活配置价格与DRBD同步方案怎么选

双活存储听起来完美:两台控制器同时读写,任一台故障不影响业务,但服务器存储双活配置价格通常比单控或DRBD方案高出一大截,还绑定厂商授权,如果你的业务RTO是分钟级、数据量在几TB以内,DRBD加脚本联动多数情况下足够,如果业务要求RTO接近零,才考虑双活存储加应用集群。

切换前必须做好的存储准备:四个检查项

切换脚本写得再漂亮,底层状态不检查,执行时还是会翻车,切换前按下面四个项过一遍。

检查共享存储锁和仲裁

在旧主上执行sg_persist -d /dev/sdb查看PR key是否仍由旧主持有,共享存储切换前,旧主必须先释放锁,新主才能注册新key,漏掉这一步,挂载命令可能成功,但写入会报“Read-only file system”。

检查DRBD状态是否一致

drbd-overview看两节点状态,只有两节点都显示UpToDate,切换才有干净的数据基础,如果旧主是Primary,新主是Secondary,切换前别手动乱切,先等同步完成。

验证从库数据目录可写

这个动作看起来多余,却能在切换前暴露挂载配置错误,直接在从库执行:

touch /data/test_write && rm /data/test_write

如果提示只读文件系统,说明从库的数据目录并不真正可写,切换后一定启动失败。

准备切换脚本并做一次空跑

脚本至少包含:停止服务、卸载或降级、角色切换、挂载或升级、启动服务、健康检查,空跑时把命令改成

主从服务器故障切换时存储配置如何联动?,服务器高可用存储同步方案

echo输出,确认执行顺序没有错。

主从切换时存储联动的实操命令序列

以DRBD加MySQL为例,假设资源名为r0,挂载点为/data,切换顺序如下:

  1. 旧主停止数据库:systemctl stop mysql
  2. 卸载数据目录:umount /data
  3. 降级DRBD资源:drbdadm secondary r0
  4. 在新主上升级DRBD资源:drbdadm primary r0
  5. 挂载数据目录:mount /dev/drbd0 /data
  6. 启动数据库并关闭只读:systemctl start mysql,然后执行mysql -e "SET GLOBAL read_only=OFF;"
  7. 验证写入:mysql -e "CREATE DATABASE switch_test; DROP DATABASE switch_test;"

共享存储路线下,步骤类似但锁处理不同:

  1. 旧主卸载:umount /data
  2. 旧主释放持久锁:sg_persist -o -K <old_key> /dev/sdb
  3. 新主注册锁:sg_persist -o -S <new_key> /dev/sdb
  4. 新主挂载:mount /dev/mapper/mpatha /data
  5. 启动数据库并验证。

命令里的设备名、资源名、key值都需要按实际环境替换,直接照抄生产环境容易出事。

切换后存储一致性验证:三个命令快速定位

切换完别急着通知业务,先把存储状态确认清楚。

  • cat /proc/mounts | grep data 确认/data当前的真实挂载来源,防止还在用旧NFS。
  • lsblk -f 查看块设备、文件系统和挂载点的对应关系。
  • drbd-overviewpcs status 确认集群资源已经落到新主,没有中间状态。

同时翻一下数据库错误日志,重点搜“Read-only file system”“I/O error”“Device or resource busy”,出现这些关键字,说明存储联动没有完全成功,数据库虽然起来了,写入链路可能已经断了。

主从服务器故障切换时存储配置如何联动?,服务器高可用存储同步方案

北京服务器主从切换配置中机房内网延迟的影响

地域因素在存储联动里经常被忽略,北京服务器主从切换配置如果跨了机房,比如一个节点在亦庄,另一个在酒仙桥,内网延迟从同机房的零点几毫秒可能升到几毫秒甚至更高,DRBD同步模式下,写入延迟会直接放大,业务响应变慢。

所以北京地区的服务器主从部署,如果两节点跨机房,优先考虑同城裸光纤直连,或者改用MySQL异步复制加定期存储快照,不要强行上同步复制,不然主库写入会拖垮整个业务。

主从切换从来不只是数据库复制参数的事,存储挂载状态、锁释放、块设备角色必须跟切换步骤串成一条线,把存储联动写进切换脚本并定期演练,比切换出问题后临时挂载可靠得多。

主从服务器故障切换存储配置联动常见问题

主从服务器故障切换存储配置联动需要单独买双活存储吗?

不需要,DRBD这类软件方案在两台服务器上就能实现块级同步,成本低,但要求运维能处理角色翻转,共享双活存储在硬件层解决一致性问题,代价是价格高、绑定厂商。

主从切换时共享存储挂载失败,最快的恢复路径是什么?

按这个顺序查:

  • 旧主是否还在持有SCSI锁,执行sg_persist -d /dev/sdb查看;
  • 集群仲裁是否因脑裂冻结了资源;
  • /etc/fstab是否写了_netdev导致网络存储没就绪;
  • 手动释放旧主锁后重新挂载,多数情况能恢复。

主从服务器故障切换存储配置联动中如何避免脑裂?

必须配置独立仲裁节点或仲裁盘,并在集群层面启用fencing,例如stonith,脑裂一旦发生,共享存储必须能拒绝旧主写入,否则数据会分叉,没有仲裁的DRBD双节点在断网时极容易双侧Primary,属于配置错误。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱