Write the Code. Change the World.

3月 26

docker 备份数据库

  1. 创建 /user/local/src/backup/mysql-backup.sh 文件。
#!/bin/bash

CONTAINER_NAME="mysql8.2"                 # MySQL容器名称
MYSQL_PWD="xxxxxx"                        # 数据库密码
MYSQL_DATABASE="xxxxxx"                   # 数据库名称
BACKUP_DIR="/user/local/src/backup/mysql" # 备份存储目录
LOG_DIR="/user/local/src/backup/logs"     # 备份存储目录
DATE=$(date +"%Y%m%d")

# 确保备份目录存在
mkdir -p "$BACKUP_DIR"
mkdir -p "$LOG_DIR"

# 每周日进行全量备份
if [[ $(date +%u) -eq 7 ]]; then
    echo "开始备份..."
    BACKUP_FILE="$BACKUP_DIR/mysql_full_$DATE.sql"
    docker exec $CONTAINER_NAME sh -c "mysqldump -uroot -p'$MYSQL_PWD' $MYSQL_DATABASE" >"$BACKUP_FILE"
    gzip "$BACKUP_FILE"
    echo "备份完成并压缩,存储路径:$BACKUP_FILE.gz"
else
    echo "今天不是周天,不备份"
fi

如果备份所有数据库。mysqldump --all-databases -uroot -p'$MYSQL_PWD'

  1. 设置权限
chmod +x /user/local/src/backup/mysql-backup.sh
  1. 添加定时任务\
crontab -e

#每天凌晨 2 点启动定时任务
0 2 * * * bash /user/local/src/backup/mysql-backup.sh >> /user/local/src/backup/logs/backup_$(date +\%Y\%m\%d).log 2>&1

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注