编写一个shell脚本,实现每天2点对 mysql8.0.30 的数据库warp进行全量备份,然后再每隔2小时在全量的基础上进行增量备份,MySQL是用docker搭建的
时间: 2023-12-14 07:38:19 浏览: 77
通过shell脚本,备份mysql数据库
可以按照以下步骤编写shell脚本实现备份:
1. 创建一个名为 `backup.sh` 的文件,并添加可执行权限:
```bash
touch backup.sh
chmod +x backup.sh
```
2. 在 `backup.sh` 文件中添加以下内容:
```bash
#!/bin/bash
# 定义变量
MYSQL_CONTAINER_NAME="mysql"
MYSQL_ROOT_PASSWORD="your_mysql_root_password"
BACKUP_DIR="./backup"
BACKUP_TIME=$(date "+%Y-%m-%d-%H-%M-%S")
# 创建备份目录
if [ ! -d ${BACKUP_DIR} ]
then
mkdir ${BACKUP_DIR}
fi
# 全量备份
docker exec ${MYSQL_CONTAINER_NAME} mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} --single-transaction --flush-logs --master-data=2 warp > ${BACKUP_DIR}/warp-full-${BACKUP_TIME}.sql
# 增量备份
while true
do
sleep 2h
BACKUP_TIME=$(date "+%Y-%m-%d-%H-%M-%S")
docker exec ${MYSQL_CONTAINER_NAME} mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} --single-transaction --flush-logs --master-data=2 --databases warp > ${BACKUP_DIR}/warp-incremental-${BACKUP_TIME}.sql
done
```
3. 修改脚本中的变量,将 `MYSQL_CONTAINER_NAME` 改为你的MySQL容器名称,`MYSQL_ROOT_PASSWORD` 改为你的MySQL root密码,`BACKUP_DIR` 改为你想要存储备份文件的目录。
4. 执行脚本:
```bash
./backup.sh
```
这样就可以实现每天2点进行全量备份,然后每隔2小时进行增量备份。
阅读全文