Docker容器中的mysql自动备份脚本

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. 如何使用

  1. 创建backupmysql.sh 填入上边的脚本内容

  2. 修改脚本中的配置项,备份目录、用户名、密码、端口号、数据库名字、备份周期等

  3. 手动执行脚本 sh /home/shell/backupmysql.sh 然后查看目的备份文件夹/app/backup是否有备份的sql文件,如果没有就排查脚本参数

  4. 设置定时任务执行脚本crontab -e

    测试阶段可以使用每两分钟执行一次

    */2 * * * * sh /home/shell/backupmysql.sh
    

    正式的可以每天备份一次

    * * * * * sh /home/shell/backupmysql.sh
    

4. 更多资料

Linux cron定时任务常用方法

你可能感兴趣的:(脚本,docker,mysql,备份)