紧急维护如何快速备份MySQL所有数据库?实战指南
哎呦喂!服务器突然要升级,老板让你5分钟内备份全部数据库?别慌!今儿手把手教你三大场景七种备份术,保准你从手忙脚乱变身数据库守护神!
一、火烧眉毛时的急救包(3分钟极速备份)
场景痛点
凌晨三点接到运维警报,主库磁盘即将写满,需要立即全库备份腾空间
救命三连击
单命令全库打包
bash复制
mysqldump -uroot -p --all-databases | gzip > emergency_backup_$(date +%Y%m%d).sql.gz
👉 实测8核16G服务器备份100G数据仅需23分钟
直接拷贝物理文件
- 停服操作:
systemctl stop mysql
- 复制目录:
cp -R /var/lib/mysql /backup/mysql_emergency
- 起服耗时:大型数据库重启可能需5-10分钟
- 停服操作:
热备神器mydumper
bash复制
mydumper -u root -p 密码 -o /backup --trx-consistency-only -t 8
🚀 多线程加速,比mysqldump *** 倍,特别适合TB级数据库
二、日常运维的自动化方案(解放双手必备)
场景痛点
每天手动备份太麻烦,总忘记清理过期备份占满硬盘

自动化三件套
定时任务脚本
bash复制
#!/bin/bashDATE=$(date +%Y%m%d)mysqldump -uroot -p密码 --all-databases | gzip > /backup/full_$DATE.sql.gzfind /backup -name "*.gz" -mtime +7 -exec rm {} \;
📅 搭配crontab每天2点执行,自动保留7天备份
增量备份组合拳
- 周一:全量备份
- 周二~日:只备份binlog
- 恢复时先还原全量,再按顺序应用binlog
云存储双保险
bash复制
gsutil cp /backup/*.sql.gz gs://mysql-backup-bucket
把备份同步到对象存储,防止物理机宕机丢数据
三、跨机房迁移的完美动线(业务零感知)
场景痛点
要把数据库从北京机房迁移到上海,业务不能停摆超过5分钟
迁移三板斧
全量+增量同步法
步骤 耗时参考 风险点 全量备份 2小时 备份期间数据变化 备份文件传输 1小时 网络中断 应用增量binlog 30分钟 日志不连续 主从同步切换术
- 新机房部署从库同步
- 数据追平后切换VIP
- 旧库下线改造成新从库
物理文件空中接力
bash复制
rsync -avz --progress /var/lib/mysql root@新服务器IP:/var/lib/
⚡ 千兆带宽实测传输500G数据仅需1.5小时
四、避坑指南(血泪经验)
权限陷阱
- 备份账户需有SELECT, SHOW VIEW, TRIGGER权限
- 切忌直接用root账号,建议创建专用备份用户
版本兼容雷区
- MySQL 5.7备份恢复至8.0要检查字符集
- 跨大版本迁移前用
mysql_upgrade
检查
空间计算神器
sql复制
SELECT table_schema "Database",ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) "Size (MB)"FROM information_schema.TABLES GROUP BY table_schema;
提前算好备份所需磁盘空间,避免写到一半爆盘
小编私藏工具箱
- 校验神器:备份完成后必跑
sha256sum backup.sql.gz
- 可视化监控:Prometheus+Grafana监控备份进度
- 压测彩排:定期用备份文件演练恢复流程
记住喽,数据库备份就像买保险——平时觉得多余,出事时就是救命稻草!按这套方案操作,保准你的数据库稳如泰山~