共计 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
即可。
正文完