鸡蛋不放一个篮子:重要业务的双商家备份策略
重要业务只放在一家VPS商家,等于把命运交给别人。小够讲透双商家备份策略:主备架构怎么搭、数据怎么同步、DNS怎么切、备用机选多便宜的,以及多久演练一次。
我是小够。今天聊一个很多人"知道但没做"的事:重要业务,别只放在一家 VPS 商家。
道理都懂:商家宕机、跑路、IP 被封,任何一家出问题,你的业务就跟着躺。但真到掏钱买第二台机器的时候,很多人就犹豫了——“有必要吗?““太贵了吧?“这篇就把双商家策略讲透,让你知道它没你想的那么贵,也没你想的那么复杂。
为什么一定要双商家
先算一笔账:你的业务如果宕机一天,损失多少?对个人博客来说,可能只是少几个访客;但对接单的外贸站、跑业务的 API 来说,一天宕机可能是实打实的订单损失。
而一台备用小鸡,一个月也就几美元。用"几美元/月"的成本,对冲"宕机一天"的损失,这笔账怎么算都划算。双商家不是奢侈,是保险。
注意是"双商家”,不是"同一商家的两台机器”。同一商家机房故障,两台一起躺,等于没备。
架构一:主备模式(推荐大多数人)
最简单的双商家架构:
- 主机:跑实际业务,配置按需求来
- 备机:低配小鸡,平时只同步数据,不对外服务
数据同步怎么做:
- 文件同步:
rsync定时任务,每天凌晨把网站文件同步到备机 - 数据库同步:MySQL/MariaDB 做主从复制,或者每天
mysqldump传过去 - 配置同步:Nginx 配置、Docker compose 文件,用 git 管起来,两台机器都能拉
备机平时处于"热备"状态:系统装好、服务配好、数据同步着,只是 DNS 没指向它。主机一挂,改 DNS 解析,几分钟内恢复。
架构二:双活模式(业务量大的再考虑)
两台机器同时对外服务,流量按比例分。这需要负载均衡和数据实时同步,复杂度高一个量级。对个人和小团队来说,主备模式完全够用,别一上来就挑战双活。
DNS 切换:平时就要准备好
双商家策略里,DNS 是切换开关,平时就要准备:
- TTL 设低:把 A 记录的 TTL 设为 300 秒(5 分钟)。平时 TTL 长没关系,但至少要知道在哪改、怎么改。
- 用靠谱的 DNS 服务商:Cloudflare 免费版就够,切换解析秒级生效(配合低 TTL)。
- 把切换步骤写下来:真出事的时候,人是慌的。对着 checklist 操作,比临场发挥靠谱十倍。
备机选多便宜的
这是大家最关心的:备机不需要和主机同配置。备机的任务是"顶住”,不是"跑满”:
- 主机 2 核 4G,备机 1 核 1G 完全够用
- 备机选便宜大流量的商家就行,比如年付十美元档的小鸡
- 备机平时不跑业务,超售鸡都能胜任——反正只是 standby
算下来,备机一年也就几十块人民币,比一次宕机的损失便宜多了。
演练:不演练的备份等于没有备份
双商家策略最大的坑,是"搭了但没演练过"。真出事才发现:备机的数据是三个月前的、DNS 不会切、配置对不上。
我的建议:每季度演练一次。流程很简单:
- 把备机的数据同步到最新
- 改 hosts 文件,把域名指向备机 IP,验证业务正常
- 恢复 DNS,记录演练中发现的问题
一次演练半小时,换来的是真出事时的不慌。
数据同步方案对比:选适合你的
| 方案 | 优点 | 缺点 | 适合 |
|---|---|---|---|
| rsync 定时同步 | 简单,半小时搭好 | 非实时,有延迟 | 个人博客、小站 |
| 数据库主从复制 | 实时,数据不丢 | 配置稍复杂 | 有数据库业务 |
| 对象存储中转 | 可靠,不怕单点 | 有额外成本 | 文件多的站 |
| 容器镜像同步 | 环境一致,恢复快 | 要学 Docker | 用容器的团队 |
对大多数人,我推荐"rsync + 每天数据库 dump"的组合:简单、可靠、成本为零。别一上来就搞主从复制,复杂度是故障的温床。
一个实用的同步脚本思路:每天凌晨 3 点,rsync 同步网站目录,mysqldump 导出数据库并压缩,两个都推到备机,保留最近 7 天。写成 shell 脚本加到 cron,一劳永逸。
DNS 服务商选择
DNS 切换的速度,取决于你的 DNS 服务商:
- Cloudflare(免费版):切换解析全球生效快,有 API 可以写自动化脚本,个人用户的首选
- 域名注册商自带 DNS:能用,但生效慢、功能少,应急时可能掉链子
- 国内 DNS 服务商:如果用户主要在国内,解析速度有优势,但切记提前备案相关要求
不管用哪家,记住两点:TTL 设低(300 秒),切换步骤提前写好。真出事时,你只有"执行"没有"研究"的时间。
故障切换标准流程(SOP)
把切换流程写成 SOP,贴在你的运维文档里:
- 确认故障(5 分钟):ping、SSH、状态页三处确认,不是误报再动手
- 同步最新数据(10 分钟):手动触发一次 rsync + 数据库 dump,确保备机数据最新
- 切换 DNS(5 分钟):把 A 记录指向备机 IP,TTL 已经是 300 秒的话,几分钟生效
- 验证业务(10 分钟):用手机流量(非 WiFi)访问网站,确认业务正常
- 通知相关方:如果有用户,发个简短通知
全程 30 分钟。平时演练过,真出事就是走流程,不慌。
演练手册:每季度一次
演练不用影响线上,用"影子演练"法:
- 备机数据同步到最新(和平时一样)
- 改自己电脑的 hosts 文件,把域名指向备机 IP
- 在自己电脑上完整走一遍业务流程:打开网站、登录后台、下一单
- 记录发现的问题:数据是不是最新的?配置有没有缺?定时任务跑了没?
- 恢复 hosts,写演练小结
影子演练只影响你自己的电脑,线上用户无感知。建议每季度一次,每次半小时。
成本再优化:备机不一定闲置
觉得备机"闲置浪费",可以让它干活:
- 监控机:跑 Uptime Kuma,监控主机的状态——主机挂了,它第一个知道
- 测试机:新功能先在备机上测,测完再上主机
- 跳板机:当 SSH 跳板,顺带隐藏主机真实 IP
一物多用,备机就不"闲"了。这几美元花得更值。
成本账
| 项目 | 配置 | 年成本估算 |
|---|---|---|
| 主机 | 按业务需求 | 该花就花 |
| 备机 | 1 核 1G 小鸡 | 年付十美元档 |
| DNS | Cloudflare 免费版 | 0 |
| 总计 | — | 一年几十块人民币 |
单商家多机房,算不算双商家?
不算,或者说,只算半个。同一商家的不同机房,能防"单机房故障",但防不住:
- 商家整体跑路
- 商家账号被封(比如支付争议导致账号冻结)
- 商家全网故障
真正的双商家,是"不同公司、不同账单、不同客服体系"。退一步说,如果预算只够一家,至少做到"同商家双机房+异地备份",比单机房强得多。但别骗自己说这就是双商家了。
数据库同步实操:从 dump 开始
对大多数个人用户,数据库同步不用上复杂方案:
# 每天凌晨 3 点,导出并压缩
mysqldump -u 用户 -p'密码' 数据库名 | gzip > /backup/db-$(date +%F).sql.gz
# 传到备机
rsync -avz /backup/ 备机IP:/backup/
# 只留最近 7 天
find /backup -name "*.sql.gz" -mtime +7 -delete
三行命令加到 cron,数据库备份就自动化了。恢复时反向操作就行。记住:备份的价值在于"能恢复",每季度手动恢复一次验证,别等到真出事才发现备份文件是坏的。
演练记录表
每次演练,把结果记下来:
| 日期 | 演练内容 | 发现的问题 | 是否解决 |
|---|---|---|---|
| 备机数据恢复验证 | |||
| hosts 切换业务验证 | |||
| DNS 切换流程走一遍 |
演练不是走过场,发现问题才是目的。连续两次演练零问题,说明你的架构真的稳。
反方观点:什么时候可以只用单商家
说实话,不是所有业务都需要双商家。这几种情况,单商家+好备份就够了:
- 纯学习/测试环境:丢了重建就行,不值得为备机花钱
- 静态博客:源文件在本地 git 里,换个商家半小时重建,备机的意义不大
- 预算真的卡死:学生党一台小鸡都不容易,那就把备份做到极致——异地备份+配置即代码,恢复速度就是你的"备机"
双商家是"重要业务"的标配,不是所有场景的标配。别为了架构而架构,成本和收益要自己权衡。
备机选型:三档预算
| 预算 | 配置 | 适合 |
|---|---|---|
| 年付十美元档 | 1 核 1G 小鸡 | 个人博客、小业务的备机 |
| 月付 5 美元档 | 1 核 2G | 有一定流量业务的备机 |
| 按小时大厂云 | 按需开 | 平时不开,出事才开,极致省钱 |
第三档最有意思:平时备机根本不存在,出事时按小时开一台,数据从异地备份恢复。虽然恢复慢一点(要重建环境),但成本几乎为零。适合预算卡得死、但又有备份习惯的人。
监控告警联动:让备机"自动"顶上
进阶玩法:用监控实现半自动切换。
- 备机上跑 Uptime Kuma,监控主机的 HTTP/端口
- 主机失联超过设定阈值(比如 5 分钟),发告警到你的手机/TG
- 收到告警,手动执行切换 SOP(全自动切换风险高,不建议个人用户做)
监控+告警+手动切换,是个人用户能做到的最优解。全自动故障转移是好看不好用,复杂度一上来,备机本身就成了故障点。
小够的建议
- 个人博客:备机可以简单点,定期备份+随时能重建就行
- 接单/业务站:主备架构+季度演练,必须做
- 别把备机也放在同一家:双商家的"双"字是灵魂
常见问题
Q:备机长期闲置,是不是浪费钱? A:备机可以一物多用:平时跑监控、跑测试、当前端跳板机。把它当成你的"第二台生产力机器",就不浪费了。
Q:数据同步用 rsync 还是主从复制? A:个人博客、小业务,rsync+每天 dump 数据库完全够用。数据量大了、实时性要求高了,再上主从复制。别过度设计。
Q:DNS 切换要多久生效? A:TTL 300 秒的情况下,大部分地区几分钟内生效,全球完全生效可能要十几分钟到一小时。平时把 TTL 设低,是出事时最快的"保险"。
Q:两家商家怎么选? A:一家选你信任的主力(可以是大厂云),另一家选便宜小鸡。关键是"不同商家",最好连机房地区都错开。
Q:演练会不会影响线上业务? A:用改 hosts 的方式演练,只影响你自己的电脑,不影响线上用户。放心演练,大胆验证。
Q:备机和主机配置差太多,切换后撑得住吗? A:撑得住"顶一会儿",撑不住"长期跑"。备机的任务是争取时间——给你几小时到几天,去修主机或找新商家。别指望备机长期扛,它只是个缓冲。
Q:数据库主从复制难吗? A:MySQL/MariaDB 的主从配置,跟着官方文档走,半天能搭好。但对个人用户,我更推荐"每天 dump+rsync":简单、可靠、够用。复杂度是故障的温床,这话再说一遍。
Q:备机平时完全闲置,感觉很浪费? A:那就让它干活:跑监控、当测试机、做跳板机,一物多用。实在不想折腾,就把它当成"保险费"——保险的作用就是平时用不上,出事时救命。每年几十块买一份安心,不贵。
Q:小团队只有两个人,搞得动双商家吗? A:搞得动。主备+rsync+低TTL这套,一个下午就能搭完。复杂度是按需加的,一开始别贪多,先把"能切换"跑通,再慢慢优化。