shell脚本实现mysql数据库全量备份(完全备份)每周1,3,5 凌晨00:00:00 ,保留最近半个月数据。然后通过dockerfile打包 使用docker镜像的方式完成该功能。
时间: 2024-09-10 13:13:15 浏览: 87
在shell脚本中实现MySQL数据库全量备份并结合Docker进行自动化,可以分为以下几个步骤:
1. **创建定时任务**:
使用`cron`任务定期在指定时间运行备份脚本。在Unix/Linux系统中,在`.bashrc`或`.crontab`文件中添加如下的行:
```
0 0 * * 1,3,5 /path/to/backup_script.sh
```
这表示每周一、三、五的凌晨0点0分0秒执行`backup_script.sh`。
2. **编写备份脚本** (`backup_script.sh`):
```sh
#!/bin/bash
# 确保只有root用户能运行此脚本
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root."
exit 1
fi
# MySQL配置信息
DB_USER="your_mysql_user"
DB_PASS="your_mysql_password"
DB_NAME="your_database_name"
# 指定备份目录和备份日期格式
BACKUP_DIR="/path/to/backup_dir"
DATE=$(date +%Y%m%d%H%M%S)
# 创建完整备份
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > ${BACKUP_DIR}/$DB_NAME_$(date +%F).sql
# 删除旧的备份,只保留近半个月的数据
find ${BACKUP_DIR} -type f -mtime +7 -delete
echo "Backup completed at $(date)."
```
确保替换上述脚本中的数据库用户名、密码和路径等信息为实际值。
3. **Dockerfile** 编写:
在`Dockerfile`中,你需要定义镜像基础、安装必要的软件(如`mysqldump`)、复制shell脚本,并设置权限:
```Dockerfile
FROM mysql:latest
COPY backup_script.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/backup_script.sh
CMD ["bash", "/usr/local/bin/backup_script.sh"]
```
4. **构建Docker镜像** 和 **运行容器**:
在项目根目录下,执行 `docker build -t your_image_name .` 来构建镜像。然后你可以使用 `-d` 参数启动一个后台运行的容器,例如:
```
docker run -d --name your_container_name -v /path/on/host:/path/in/container your_image_name
```
阅读全文