阅读量:1
Ubuntu 下 SQLAdmin 自动备份实现指南
一 前置准备
- 确认 sqladmin 已安装并可用:执行命令:which sqladmin,若返回路径(如 /usr/bin/sqladmin 或 /usr/local/bin/sqladmin)说明可用;若未安装,可先执行:sudo apt update && sudo apt install sqladmin。为安全起见,建议创建专用备份用户并授予最小权限(如仅允许导出)。同时准备一个备份目录(如 /var/backups/sqladmin),并确保运行 sqladmin 的系统用户对该目录具备读写权限。
二 方式一 使用 sqladmin 命令配合 Cron 定时执行
- 编写备份脚本(示例:/usr/local/bin/backup_sqladmin.sh),优先从配置文件读取凭据,避免明文密码;如确需命令行传参,请确保文件权限安全。
#!/usr/bin/env bash
set -Eeuo pipefail
# 配置
CONF="/etc/sqladmin/sqladmin.conf" # 推荐:在配置文件中存放连接信息
OUT_DIR="/var/backups/sqladmin"
DATE=$(date +"%Y%m%d%H%M%S")
LOGFILE="$OUT_DIR/backup.log"
# 目录与日志初始化
mkdir -p "$OUT_DIR"
exec >>"$LOGFILE" 2>&1
echo "=== Backup started at $(date) ==="
# 若配置文件存在则使用;否则退回到命令行参数(不推荐明文密码)
if [[ -f "$CONF" ]]; then
sqladmin --config "$CONF" backup --output "$OUT_DIR/backup_$DATE.sql"
else
echo "WARN: $CONF not found, fallback to CLI args (INSECURE)."
sqladmin backup \
--host "$DB_HOST" --port "$DB_PORT" \
--user "$DB_USER" --password "$DB_PASS" \
--database "$DB_NAME" \
--output "$OUT_DIR/backup_$DATE.sql"
fi
if [[ $? -eq 0 ]]; then
echo "Backup succeeded: $OUT_DIR/backup_$DATE.sql"
else
echo "Backup FAILED"
# 可在此处加入告警:例如 mail、企业微信、钉钉机器人等
fi
echo "=== Backup finished at $(date) ==="
- 赋权并测试
- 赋权:sudo chmod +x /usr/local/bin/backup_sqladmin.sh
- 手动测试:/usr/local/bin/backup_sqladmin.sh
- 配置定时任务(Cron)
- 编辑:crontab -e
- 示例(每天 02:00 执行):0 2 * * * /usr/local/bin/backup_sqladmin.sh
- 查看任务:crontab -l
- 如需为其他用户设置:sudo crontab -u username -e
- 说明
- 上述流程适用于“sqladmin 提供 backup 子命令”的场景;命令及参数名请以你环境中 sqladmin --help 的实际输出为准。
- 若 sqladmin 不支持 backup 子命令,可改用方式二(原生 mysqldump)。
三 方式二 使用 mysqldump 作为替代或补充
- 当 sqladmin 不可用或功能受限时,可直接使用 mysqldump 完成备份,并通过 Cron 实现自动化。
#!/usr/bin/env bash
set -Eeuo pipefail
OUT_DIR="/var/backups/mysql"
DATE=$(date +"%Y%m%d%H%M%S")
LOGFILE="$OUT_DIR/backup.log"
DB_USER="backup_user"
DB_PASS="StrongPass!23"
DB_NAME="mydb"
mkdir -p "$OUT_DIR"
exec >>"$LOGFILE" 2>&1
echo "=== Backup started at $(date) ==="
mysqldump -h localhost -P 3306 -u "$DB_USER" -p"$DB_PASS" --single-transaction --routines --triggers --default-character-set=utf8mb4 "$DB_NAME" \
| gzip > "$OUT_DIR/${DB_NAME}_${DATE}.sql.gz"
if [[ $? -eq 0 ]]; then
echo "Backup succeeded: $OUT_DIR/${DB_NAME}_${DATE}.sql.gz"
else
echo "Backup FAILED"
fi
echo "=== Backup finished at $(date) ==="
- 定时示例(每天 02:30 执行):30 2 * * * /usr/local/bin/backup_mysql.sh
- 如需备份全库,可使用:mysqldump -u username -p --all-databases | gzip > full_$(date +%F).sql.gz。
四 备份策略与运维要点
- 保留策略与清理
- 在备份脚本中加入按时间清理旧备份的逻辑,例如保留最近 7 天:
- 查找并删除:find “$OUT_DIR” -type f -name “*.sql.gz” -mtime +7 -delete
- 在备份脚本中加入按时间清理旧备份的逻辑,例如保留最近 7 天:
- 安全与合规
- 避免在命令行或脚本中明文写密码;优先使用配置文件、环境变量或凭据文件,并限制其权限(如 600)。
- 监控与告警
- 将脚本输出记录到日志(如 /var/log/sqladmin_backup.log),并在失败时通过邮件或企业 IM 机器人发送告警。
- 还原验证
- 定期抽样还原到测试环境,校验数据一致性与可用性;大库建议在低峰时段执行备份与还原演练。
以上就是关于“Ubuntu SQLAdmin如何实现自动备份”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm