ubuntu

Ubuntu SQLAdmin如何实现自动备份

小樊
36
2025-12-16 01:55:11
栏目: 云计算

Ubuntu 下 SQLAdmin 自动备份实现指南

一 前置准备

二 方式一 使用 sqladmin 命令配合 Cron 定时执行

#!/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) ==="

三 方式二 使用 mysqldump 作为替代或补充

#!/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) ==="

四 备份策略与运维要点

0
看了该问题的人还看了