备份任务挪到晚上八点后,接口每隔几分钟报一次 502,数据库连接数从 40 冲到 200,备份一结束就恢复。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,备份任务一次开多个连接读大表,和业务抢连接池。备份没有限速,长事务还占着连接不释放。

「备份占用数据库连接」这类改动最怕改一半,回滚脚本先准备好,再动生产。报错里带路径的,先去看那个路径在不在、权限对不对。

mysqldump --single-transaction --max-allowed-packet=64M \
  blog > db.sql
# 单线程导出,别开并行

同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

具体做法是,备份挪回低峰期 或者给备份单独开一个只读从库;限制备份的并发连接数 一次只读一张表;监控连接数 超过阈值先暂停备份。

最后用这个标准收尾,备份期间接口 502 归零,数据库连接数稳定在 60 以下。

作者 9823189