debian

Debian系统下SQLAdmin如何备份数据

小樊
42
2026-01-01 05:56:05
栏目: 云计算

Debian 下使用 SQLAdmin 备份数据的实用方案

一 工具与前提

二 方式一 使用 SQLAdmin 命令行工具备份

三 方式二 使用 mysqldump 备份(SQLAdmin 不可用或作为替代)

四 自动化与加固建议

五 一键脚本模板(可直接使用并放入 /usr/local/bin/backup_mysql.sh)

#!/usr/bin/env bash
set -Eeuo pipefail

# 配置区
DB_HOST="127.0.0.1"
DB_PORT="3306"
DB_USER="dbuser"
DB_PASS="YourPassword"      # 建议改用 ~/.my.cnf 或 sqladmin 配置文件管理
DB_NAME="mydb"
BACKUP_DIR="/var/backups/mysql"
RETENTION_DAYS=7
LOG_FILE="$BACKUP_DIR/backup.log"

# 初始化
mkdir -p "$BACKUP_DIR"
exec >>"$LOG_FILE" 2>&1
echo "[$(date '+%F %T')] 开始备份: $DB_NAME"

# 生成文件名
TS=$(date +"%F_%H%M%S")
OUT_FILE="$BACKUP_DIR/${DB_NAME}_${TS}.sql"

# 方式A:优先使用 sqladmin(若命令存在且可用)
if command -v sqladmin >/dev/null 2>&1; then
  if sqladmin -h "$DB_HOST" -P "$DB_PORT" -U "$DB_USER" -p"$DB_PASS" -d "$DB_NAME" -o "$OUT_FILE"; then
    echo "[$(date '+%F %T')] sqladmin 备份成功: $OUT_FILE"
  else
    echo "[$(date '+%F %T')] sqladmin 备份失败,退出码: $?"
    exit 1
  fi
# 方式B:回退到 mysqldump
else
  if mysqldump -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USER" -p"$DB_PASS" \
       --single-transaction --routines --triggers --default-character-set=utf8mb4 \
       "$DB_NAME" > "$OUT_FILE"; then
    echo "[$(date '+%F %T')] mysqldump 备份成功: $OUT_FILE"
  else
    echo "[$(date '+%F %T')] mysqldump 备份失败,退出码: $?"
    exit 1
  fi
fi

# 清理旧备份
find "$BACKUP_DIR" -name "${DB_NAME}_*.sql" -mtime +"$RETENTION_DAYS" -delete
echo "[$(date '+%F %T')] 旧备份清理完成(保留近 $RETENTION_DAYS 天)"

以上方案覆盖命令行调用 SQLAdminmysqldump 两种路径,并给出 Debian 下常用的自动化与加固实践,便于长期稳定备份与快速恢复。

0
看了该问题的人还看了