脚本内容如下:
#!/bin/bash
# 获取当前日期作为备份文件名后缀
suffix=$(date +%Y%m%d%H%M%S)
# 备份数据库名称
database_name="test"
database_password="123456"
# 备份文件保存的目标路径
backup_dir="/cgh/backups"
# 进入 MySQL 容器进行备份
docker exec c_mysql sh -c "mysqldump -u root -p${database_password} ${database_name} > /tmp/${database_name}_${suffix}.sql"
# 将备份文件从容器中拷贝到本地目录
docker cp c_mysql:/tmp/${database_name}_${suffix}.sql "${backup_dir}/${database_name}_${suffix}.sql"
# 清除3天前的备份文件
find "${backup_dir}" -name "${database_name}_*.sql" -type f -mtime +2 -exec rm {} \;
说明:
docker exec
命令进入名为 "c_mysql" 的 MySQL 容器,并在容器内部使用 mysqldump
命令备份指定的数据库。备份命令使用了之前定义的数据库名称和密码,并将备份结果输出到 "/tmp" 目录下的文件中。docker cp
命令将容器内的备份文件复制到脚本中指定的本地目录中,以完成备份过程。注意:脚本文件要添加执行权限 chmod +x backup_mysql.sh
打开计划任务,可以在终端中输入以下命令来打开:
打开编辑任务
crontab -e
查看任务列表
crontab -l
在文本编辑器中添加一个新行作为备份脚本的定时任务。以下是每天晚上10点运行备份脚本的示例:
0 22 * * * /bin/bash /cgh/sh/backup_mysql.sh >/dev/null 2>&1
该任务将每天的22:00执行 /cgh/sh/backup_mysql.sh
这个备份脚本,并将所有输出定向到 /dev/null
避免任何日志文件。
第一列代表分钟,第二列代表小时,第三列代表日期,第四列代表月份,第五列代表星期几。
例如:5 * * * * 表示每个小时的第5分钟执行一次;*/10 * * * *表示每隔10分钟执行一次