编写一个shell脚本,实现每隔两个小时对mysql8.0.30 的数据库进行备份,MySQL是用docker搭建的
时间: 2023-12-14 19:37:29 浏览: 81
通过shell脚本,备份mysql数据库
以下是一个简单的脚本,可以实现每隔两个小时对MySQL 8.0.30进行备份:
```bash
#!/bin/bash
# 定义备份路径、数据库名称、docker容器名称、docker镜像名称
BACKUP_DIR="/path/to/backup/directory"
DB_NAME="your_db_name"
CONTAINER_NAME="your_container_name"
IMAGE_NAME="mysql:8.0.30"
# 判断备份目录是否存在,不存在则创建备份目录
if [ ! -d $BACKUP_DIR ]; then
mkdir -p $BACKUP_DIR
fi
# 备份数据库
docker exec $CONTAINER_NAME sh -c "exec mysqldump --single-transaction -h localhost -u root -p'your_db_password' $DB_NAME" > $BACKUP_DIR/$(date +%Y%m%d-%H%M%S).sql
# 删除旧的备份文件,只保留最近的5个备份文件
ls -tp $BACKUP_DIR/*.sql | tail -n +6 | xargs -I {} rm -- {}
# 删除旧的docker容器
docker rm -f $CONTAINER_NAME
# 启动新的docker容器
docker run --name $CONTAINER_NAME -e MYSQL_ROOT_PASSWORD=your_db_password -d $IMAGE_NAME
```
将上述脚本保存为一个名为`backup.sh`的文件,然后使用`crontab`设置定时任务:
```bash
crontab -e
```
在打开的文本编辑器中,添加以下内容:
```
0 */2 * * * /bin/bash /path/to/backup.sh
```
这将在每两个小时的0分执行备份脚本。保存并退出编辑器即可。
阅读全文