在 Ubuntu 上给 SQL Admin(一般指 MySQL / MariaDB) 做定时备份,最常用、最可靠的方式是 mysqldump + cron。下面给你一套从简单到规范的完整做法。
mysqldump -u root -p --all-databases > /backup/mysql_$(date +%F).sql
✅ 测试成功再自动化
sudo mkdir -p /opt/backup/mysql
sudo chown $(whoami):$(whoami) /opt/backup/mysql
nano /opt/backup/mysql_backup.sh
内容如下(通用模板):
#!/bin/bash
# 配置
USER="root"
PASS="your_password"
DIR="/opt/backup/mysql"
DATE=$(date +%F)
FILE="$DIR/mysql_$DATE.sql"
# 备份
mysqldump -u$USER -p$PASS --all-databases > $FILE
# 只保留最近 7 天
find $DIR -name "*.sql" -mtime +7 -delete
⚠️ 注意
--all-databases 可换成指定库chmod +x /opt/backup/mysql_backup.sh
bash /opt/backup/mysql_backup.sh
ls /opt/backup/mysql
crontab -e
0 2 * * * /opt/backup/mysql_backup.sh >> /opt/backup/mysql/backup.log 2>&1
.my.cnf(避免明文密码)nano ~/.my.cnf
[client]
user=root
password=your_password
chmod 600 ~/.my.cnf
然后备份脚本中 去掉 -p 参数:
mysqldump --all-databases > $FILE
✅ 更安全,cron 也能正常执行
mysqldump db1 db2 > $FILE
或:
mysqldump --databases db1 db2 > $FILE
| 需求 | 推荐 |
|---|---|
| 增量备份 | mariabackup / xtrabackup |
| 自动上传 | rclone / rsync / scp |
| 自动压缩 | gzip |
| 多服务器 | 主从 + 异地备份 |
mysqldump --all-databases | gzip > mysql_$DATE.sql.gz
检查:
systemctl status cron
mysqldump --default-character-set=utf8mb4
✅ 新手:mysqldump + cron
✅ 生产:.my.cnf + cron + gzip + 7 天轮转
✅ 重要业务:xtrabackup + 异地备份
如果你愿意,可以告诉我:
我可以帮你定制一个完整脚本。