Debian|Ubuntu系统自动备份Mysql下的单个数据库

· Special

Debian|Ubuntu系统自动备份Mysql下的单个数据库|并附带定期清楚功能
在线上运行的服务一致用的是mysql之流,每次换服务器都得手动装mysqldump搓代码再贴进去,实属麻烦。
所以用mysqldump和crontab能够做到定时备份和定时清理配置文件就够了。

生成mysql_backup.sh

#!/bin/bash

# ===== 基本配置 =====
DB_HOST="127.0.0.1"
DB_PORT="3306"
DB_NAME="your_database"
DB_USER="backup_user"
DB_PASS="your_password"

# 备份目录
BACKUP_DIR="/opt/mysql_backup"

# 保留天数
KEEP_DAYS=7

# 时间格式
DATE=$(date +"%Y-%m-%d_%H-%M-%S")

# 文件名
BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_${DATE}.sql.gz"

# ===== 创建目录 =====
mkdir -p "${BACKUP_DIR}"

# ===== 开始备份 =====
/usr/bin/mysqldump \
  -h${DB_HOST} \
  -P${DB_PORT} \
  -u${DB_USER} \
  -p${DB_PASS} \
  --single-transaction \
  --routines \
  --events \
  --triggers \
  ${DB_NAME} | gzip > "${BACKUP_FILE}"

# ===== 判断是否成功 =====
if [ $? -eq 0 ]; then
  echo "$(date) MySQL backup success: ${BACKUP_FILE}"
else
  echo "$(date) MySQL backup FAILED" >&2
  exit 1
fi

# ===== 清理旧备份 =====
find "${BACKUP_DIR}" -type f -name "${DB_NAME}_*.sql.gz" -mtime +${KEEP_DAYS} -delete

将脚本添加执行权限

chmod +x /opt/scripts/mysql_backup.sh

将脚本添加到定时任务

每天凌晨两点备份

0 2 * * * /opt/scripts/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1

每六个小时备份

0 */6 * * * /opt/scripts/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1


Linux · Mysql · Server


评论

行为验证™ 安全组件加载中...