温馨提示×

ubuntu sqladmin如何定时备份

小樊
41
2026-07-11 01:32:26
栏目: 云计算

在 Ubuntu 上给 SQL Admin(一般指 MySQL / MariaDB)定时备份,最常用、最可靠的方式是 mysqldump + cron。下面给你一套从简单到规范的完整做法。


一、最基础方式(适合新手)

1️⃣ 手动测试备份命令

mysqldump -u root -p --all-databases > /backup/mysql_$(date +%F).sql

✅ 测试成功再自动化


二、推荐方案:mysqldump + cron(生产可用)

1️⃣ 创建备份目录

sudo mkdir -p /opt/backup/mysql
sudo chown $(whoami):$(whoami) /opt/backup/mysql

2️⃣ 创建备份脚本

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 可换成指定库

3️⃣ 赋予执行权限

chmod +x /opt/backup/mysql_backup.sh

4️⃣ 测试脚本

bash /opt/backup/mysql_backup.sh
ls /opt/backup/mysql

三、设置定时任务(cron)

1️⃣ 编辑 cron

crontab -e

2️⃣ 添加定时任务(每天凌晨 2 点)

0 2 * * * /opt/backup/mysql_backup.sh >> /opt/backup/mysql/backup.log 2>&1

四、安全优化(强烈推荐)

✅ 方法 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

七、常见问题

❓ cron 没执行?

检查:

systemctl status cron

❓ 中文乱码?

mysqldump --default-character-set=utf8mb4

八、总结(推荐方案)

新手:mysqldump + cron
生产.my.cnf + cron + gzip + 7 天轮转
重要业务:xtrabackup + 异地备份


如果你愿意,可以告诉我:

  • MySQL 还是 MariaDB?
  • 单机还是多库?
  • 是否需要压缩 / 云存储?

我可以帮你定制一个完整脚本

0