首页主机资讯Ubuntu SQLAdmin如何实现自动备份

Ubuntu SQLAdmin如何实现自动备份

时间2025-12-16 13:02:03发布访客分类主机资讯浏览498
导读:Ubuntu 下 SQLAdmin 自动备份实现指南 一 前置准备 确认 sqladmin 已安装并可用:执行命令:which sqladmin,若返回路径(如 /usr/bin/sqladmin 或 /usr/local/bin/sql...

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
  • 安全与合规
    • 避免在命令行或脚本中明文写密码;优先使用配置文件、环境变量或凭据文件,并限制其权限(如 600)。
  • 监控与告警
    • 将脚本输出记录到日志(如 /var/log/sqladmin_backup.log),并在失败时通过邮件或企业 IM 机器人发送告警。
  • 还原验证
    • 定期抽样还原到测试环境,校验数据一致性与可用性;大库建议在低峰时段执行备份与还原演练。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu SQLAdmin如何实现自动备份
本文地址: https://pptw.com/jishu/772727.html
Ubuntu SQLAdmin如何进行数据库优化 pgAdmin在Ubuntu上如何进行用户管理

游客 回复需填写必要信息