Docker容器中的mysql自动备份脚本
1. 脚本功能
备份容器中的mysql数据库到宿主机上,自动删除7天前的备份文件
2. 脚本内容
#!/bin/bash
# auth Eric
source /etc/profile
# 设置备份目录和文件名
backup_directory="/app/backup"
#测试名字用%Y%m%d%H%M%S正式可以用%Y%m%d
backup_filename="test_$(date +%Y%m%d).sql"
# 设置MySQL连接参数
mysql_host="localhost"
mysql_user="root"
mysql_port="3306"
mysql_password="a12345"
mysql_database="testdb"
# 创建备份目录(如果不存在)
mkdir -p "$backup_directory"
# 执行备份命令
docker exec mysql /bin/bash -c 'mysqldump -u'"$mysql_user"' -p'"$mysql_password"' --port='"$mysql_port"' '"$mysql_database" > $backup_directory/$backup_filename
#删除7天前数据
find $backup_directory -name "test_*.sql" -mtime +7 -exec rm {} \;
# 检查备份是否成功
if [ $? -eq 0 ]; then
echo "MySQL数据库备份成功:$backup_directory/$backup_filename"
else
echo "MySQL数据库备份失败"
fi
3. 如何使用
-
创建backupmysql.sh 填入上边的脚本内容
-
修改脚本中的配置项,备份目录、用户名、密码、端口号、数据库名字、备份周期等
-
手动执行脚本 sh /home/shell/backupmysql.sh 然后查看目的备份文件夹/app/backup是否有备份的sql文件,如果没有就排查脚本参数
-
设置定时任务执行脚本crontab -e
测试阶段可以使用每两分钟执行一次
*/2 * * * * sh /home/shell/backupmysql.sh
正式的可以每天备份一次
* * * * * sh /home/shell/backupmysql.sh