热爱摄影的程序员
喜欢编码的设计师
擅长设计的剪辑师
一位高冷无情的编码爱好者
大家好,我是 DevOps 工程师
欢迎分享 / 收藏 / 赞 / 在看!
【需求】MySQL 服务使用 Docker 构建。在每天的 23:00 将 MySQL 中的 test 数据库备份到宿主机 /dump 目录下,并且文件名加上日期,如:/dump/test_20230927.sql
【解决】
首先在宿主机创建一个定时任务脚本,该脚本将在每天晚上 23:00 执行导出操作。使用 Cron 来调度这个任务。
在 /home 目录下创建一个名为 export_mysql.sh 的脚本文件,并确保给它执行权限:
cd /home
touch export_mysql.sh
chmod +x export_mysql.sh
编辑 export_mysql.sh 文件,添加以下内容:
#!/bin/bash
# 设置导出文件名,使用日期和项目名称作为文件名
container_name="mysql-test" # 容器名称
project_name="test" # 项目名称
mysql_user="root" # 数据库用户名
mysql_password="123456" # 数据库密码
mysql_database="test" # 数据库名称
dump_path="/dump/" # 备份文件存放路径
export_filename="${project_name}_$(date +\%Y\%m\%d).sql" # 导出文件名
# 备份数据库
docker exec ${container_name} mysqldump -u${mysql_user} -p${mysql_password} ${mysql_database} > ${dump_path}${export_filename}
设置一个 Cron 任务,以便每天晚上 23:00 运行 export_mysql.sh 脚本。打开终端,运行以下命令来编辑 Cron 任务:
crontab -e
在 Cron 编辑器中,添加以下行来设置每天晚上 23:00 运行导出脚本:
0 23 * * * /home/export_mysql.sh