docker 自动备份脚本
时间: 2023-08-01 19:07:01 浏览: 168
是的,使用自动备份脚本可以让您定期备份 Docker 数据库,以确保数据安全性和可恢复性。您可以使用以下示例脚本备份您的 Docker 数据库:
```bash
#!/bin/bash
# 设置备份目录和文件名
BACKUP_DIR=/backup
BACKUP_FILE=db_$(date +%Y%m%d_%H%M%S).tar
# 备份数据库
docker run --rm --volumes-from <db_container> -v ${BACKUP_DIR}:/backup busybox tar cvf /backup/${BACKUP_FILE} /data
# 删除旧备份
find ${BACKUP_DIR} -type f -mtime +7 -name "*.tar" -delete
```
这个脚本会将备份文件保存到 `/backup` 目录中,并使用当前日期时间戳作为备份文件名。您可以根据需要更改备份目录和文件名。
此外,此脚本还使用 `find` 命令删除超过一周的旧备份文件,以避免备份文件占据过多的磁盘空间。
您可以将此脚本添加到 crontab 中,以定期执行备份任务。例如,将以下行添加到 `/etc/crontab` 文件中,将每天凌晨 3 点执行备份任务:
```
0 3 * * * root /path/to/backup_script.sh
```
请注意,`<db_container>` 应该替换为您的数据库容器的名称或 ID。
相关问题
mysql5.7 docker 自动备份
在Docker环境下,可以使用定时任务和脚本来实现MySQL 5.7的自动备份。以下是一个示例:
1. 创建一个名为`backup.sh`的备份脚本,并将其保存在Docker容器中的任意位置,例如`/backup/backup.sh`。
```shell
#!/bin/bash
# 备份文件保存路径
BACKUP_DIR="/backup"
# MySQL连接信息
MYSQL_HOST="mysql"
MYSQL_PORT="3306"
MYSQL_USER="root"
MYSQL_PASSWORD="password"
MYSQL_DATABASE="database"
# 备份文件名
BACKUP_FILE="${BACKUP_DIR}/backup_$(date +%Y%m%d%H%M%S).sql"
# 执行备份命令
mysqldump -h ${MYSQL_HOST} -P ${MYSQL_PORT} -u ${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} > ${BACKUP_FILE}
```
2. 在Dockerfile中添加以下内容,以将备份脚本复制到Docker容器中。
```dockerfile
COPY backup.sh /backup/backup.sh
RUN chmod +x /backup/backup.sh
```
3. 构建并运行MySQL 5.7的Docker容器。
```shell
docker build -t mysql57 .
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql57
```
4. 创建一个名为`crontab.txt`的定时任务文件,并将其保存在Docker容器中的任意位置,例如`/backup/crontab.txt`。
```shell
# 每天凌晨3点执行备份任务
0 3 * * * /backup/backup.sh
```
5. 在Dockerfile中添加以下内容,以将定时任务文件复制到Docker容器中,并安装cron。
```dockerfile
COPY crontab.txt /backup/crontab.txt
RUN crontab /backup/crontab.txt
RUN apt-get update && apt-get -y install cron
```
6. 重新构建并运行MySQL 5.7的Docker容器。
```shell
docker build -t mysql57 .
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql57
```
现在,MySQL 5.7的Docker容器将在每天凌晨3点自动执行备份任务,并将备份文件保存在容器中的`/backup`目录下。
docker自动备份mysql5.8数据库
使用Docker自动备份MySQL 5.8数据库可以分为以下几个步骤:
1. 首先,创建一个名为backup的文件夹,用于存储备份文件。可以使用以下命令创建:
```
mkdir backup
```
2. 然后,使用Docker命令拉取MySQL 5.8镜像并运行一个MySQL容器。可以使用以下命令完成这一步骤:
```
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=your_password -v /path/to/backup:/var/lib/mysql mysql:5.8
```
这将在本地的3306端口上运行一个MySQL容器,并将容器中的/var/lib/mysql目录映射到本地的backup目录中。
3. 接下来,创建一个backup.sh脚本文件,使用以下命令:
```
touch backup.sh
```
然后,使用文本编辑器打开backup.sh,并将以下内容添加到文件中:
```
#!/bin/bash
DATE=$(date +%Y-%m-%d)
BACKUP_DIR="/path/to/backup"
CONTAINER_ID=$(docker ps -aqf "name=mysql")
docker exec $CONTAINER_ID /usr/bin/mysqldump -u root --password=your_password your_database > $BACKUP_DIR/backup-$DATE.sql
```
注意替换/ path/to/backup为实际的备份文件夹路径,your_password为实际的MySQL root密码,your_database为要备份的数据库名称。
4. 接下来,为backup.sh脚本添加执行权限,使用以下命令:
```
chmod +x backup.sh
```
5. 最后,使用crontab设置定期执行备份脚本。使用以下命令打开crontab编辑器:
```
crontab -e
```
然后,将以下内容添加到文件的末尾:
```
0 0 * * * /path/to/backup.sh
```
这将在每天午夜执行备份脚本。
完成上述步骤后,每天午夜时,备份脚本将使用mysqldump命令将MySQL数据库备份到指定的backup文件夹中。这样,您就实现了Docker自动备份MySQL 5.8数据库的功能。
阅读全文