mysql 定时备份(一)

72次阅读
没有评论

共计 1020 个字符,预计需要花费 3 分钟才能阅读完成。

使用 mysql 容器来完成备份,使用 crontab 来实现定时执行。

备份脚本

#!/bin/bash

# 设置备份目录和MySQL连接信息
backup_dir=""
mysql_user=""
mysql_password=""
mysql_database=""
mysql_host=""
mysql_port=""

# 创建备份文件名,格式为:db_name-年-月-日_时-分-秒.sql.gz
backup_file="$backup_dir/$mysql_database-$(date +%F_%H-%M-%S).sql.gz"

# 备份MySQL数据库
docker run --rm -v $backup_dir:/dump mysql:8.0.33 mysqldump -u "$mysql_user" -p"$mysql_password" -h "$mysql_host" -P "$mysql_port" "$mysql_database" | gzip > "$backup_file"

# 删除5个小时前的备份文件
find "$backup_dir" -name "*.sql.gz" -mmin +300 -delete

定时

执行 crontab -e,输入:

*/15 * * * * /bin/bash /path/to/your/backup_script.sh

恢复

使用 mysql 容器来完成恢复。

gzip -d xx-2024-01-05_16-30-14.sql.gz

这个命令解压得到一个 *.sql 文件,在任意目录创建 env 文件,输入:

RESTORE_MYSQL_HOST=
RESTORE_MYSQL_DB=
RESTORE_MYSQL_USERNAME=
RESTORE_MYSQL_PASSWORD=

然后执行:

docker run --env-file env -i --rm \
  -v $PWD/shark-2024-01-05_16-30-14.sql:/bkfile \
  mysql:8.0.33 \
  sh -c \
  'mysql -h $RESTORE_MYSQL_HOST -u $RESTORE_MYSQL_USERNAME \
  -p$RESTORE_MYSQL_PASSWORD \
  $RESTORE_MYSQL_DB < /bkfile'

如果需要还原的 mysql 服务是本机的其它容器,则可以把 RESTORE_MYSQL_HOST 设置为对应的容器的名称,然后在 docker run 命令中添加 --link mysql-container-name 即可。

正文完
 
评论(没有评论)