用云数据库 RDS for MySQL 做备份恢复与读写分离的实践笔记

举报
yd_297008388 发表于 2026/11/06 09:41:16 2026/11/06
【摘要】 业务库跑在自建 MySQL 上大半年,最近迁到了华为云 RDS for MySQL。这篇笔记不谈迁移本身,只记录迁完之后我把备份恢复和读写分离这两块「保命配置」补齐的过程和踩到的坑。

用云数据库 RDS for MySQL 做备份恢复与读写分离的实践笔记

业务库跑在自建 MySQL 上大半年,最近迁到了华为云 RDS for MySQL。这篇笔记不谈迁移本身,只记录迁完之后我把备份恢复和读写分离这两块「保命配置」补齐的过程和踩到的坑。

先把备份策略定下来

自建时代靠凌晨 mysqldump 定时任务,备份成功与否全看第二天有没有人记得检查。RDS 把这件事做成了配置项:自动备份保留天数我设了 7 天,备份窗口放在业务低谷的凌晨 3 点,额外开了一份跨区域备份——主区域真出问题时,至少还有一份异地数据能拉起来。

有个设置容易被忽略:备份保留时长决定了能回滚多远。有次测试环境需要恢复到 6 天前的数据,一看自动备份只留了 3 天,只能靠 binlog 硬啃。从那以后生产库的保留期我没再低于 7 天,重要系统 14 天起步。

恢复演练:没练过的备份等于没备份

RDS 恢复有两条路:从备份集恢复到新实例,或者按时间点恢复(PITR)。我挑了一个周末把两条路都真实跑了一遍,流程上没什么难度,控制台选备份点、建新实例、改连接串就行,半小时左右。但演练的价值在于发现问题:

  • 恢复出来的新实例参数和主库不一致(max_connections 被重置成默认值),连接数打满过一次。解决办法是把参数模板先存好,恢复后第一件事就是套参数模板。
  • 应用的连接串、只读账号权限都要在新实例上重新核对,别等切换那天才发现账号没授权。

建议每季度至少做一次恢复演练,并把耗时记下来——真出事时,恢复时长就是业务中断时长。

读写分离与只读实例

流量涨起来后,主库的慢查询日志开始刷屏,分析后发现七成是报表类的读请求。加了一个只读实例,开通数据库代理,读请求自动分流到只读,写和强一致读留在主库。

两个坑值得说:

主从延迟会咬人。 刚下单就查订单状态这类「写后立即读」的场景,碰上大事务同步时延迟能到秒级,用户会看到自己的订单「消失」。这类接口要在代码里显式指定走主库,代理的 Hint 注释或者连接串分组都能做,别指望全自动分流。

只读实例规格别省过头。 报表查询吃 CPU,只读实例规格比主库低太多时,慢查询会在只读侧堆积,延迟反而更大。我的经验是只读至少配到主库的七成,并单独给它设慢查询告警。

日常盯什么

迁移后我给自己定了三个日常动作:每周看一次备份成功列表和最近一次恢复演练记录;慢查询日志只盯新增的 Top 5,不追求全清;主从延迟超过 3 秒自动告警,超过 10 秒就把非核心读请求临时切回主库。

数据库这块没什么炫技空间,把备份、恢复、延迟这三件事做扎实,比任何调优技巧都管用。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。