写一个脚本用于备份docker里面的数据库,过期备份删除
时间: 2024-03-15 09:47:17 浏览: 14
以下是一个示例脚本,假设您的数据库容器名为 `db_container`,数据库用户名为 `db_user`,密码为 `db_password`,数据库名为 `db_name`,备份文件名为 `backup.sql`,并且您将备份文件保存到了宿主机的 `/backup` 目录下:
```bash
#!/bin/bash
# 备份文件名
BACKUP_FILE="/backup/backup-$(date +%Y%m%d%H%M%S).sql"
# 执行备份命令
docker exec db_container sh -c 'exec mysqldump -u db_user -p"db_password" db_name' > $BACKUP_FILE
# 输出备份结果
if [ $? -eq 0 ]; then
echo "Backup succeeded, file saved at: $BACKUP_FILE"
else
echo "Backup failed"
fi
# 删除过期备份
find /backup -type f -name "backup-*" -mtime +7 -exec rm {} \;
```
以上脚本在备份完成后会将备份文件名加上当前时间戳,确保每次备份的文件名唯一。同时,脚本会在备份完成后查找并删除七天前的备份文件,以防止备份文件过多占用磁盘空间。
您可以将以上脚本保存为 `backup.sh` 并在宿主机上定期执行该脚本,以自动备份和删除过期备份。
相关问题
写一个脚本用于备份docker里面的数据库
可以使用 Docker 的 `docker exec` 命令来执行容器内部的备份脚本,将备份结果输出到宿主机上。
以下是一个示例脚本,假设您的数据库容器名为 `db_container`,数据库用户名为 `db_user`,密码为 `db_password`,数据库名为 `db_name`,备份文件名为 `backup.sql`,并且您将备份文件保存到了宿主机的 `/backup` 目录下:
```bash
#!/bin/bash
# 备份文件名
BACKUP_FILE="/backup/backup.sql"
# 执行备份命令
docker exec db_container sh -c 'exec mysqldump -u db_user -p"db_password" db_name' > $BACKUP_FILE
# 输出备份结果
if [ $? -eq 0 ]; then
echo "Backup succeeded, file saved at: $BACKUP_FILE"
else
echo "Backup failed"
fi
```
您可以将以上脚本保存为 `backup.sh` 并在宿主机上执行该脚本,即可完成备份操作。请注意,在执行备份操作前,确保您的数据库容器已经启动并且数据库服务已经正常运行。
写一个shell脚本进行docker部署的sqlserver的定时备份和删除
好的,您的问题是如何编写一个shell脚本进行docker部署的sqlserver的定时备份和删除。以下是一个示例脚本,您可以根据需求进行修改:
```bash
#!/bin/bash
# 确保已安装docker和docker-compose
docker -v
docker-compose -v
# 启动sqlserver容器
docker-compose up -d
# 设置备份目录和格式
backup_dir=/data/backup
backup_format=sql
# 备份数据库
backup_name=$(date +%Y-%m-%d-%H-%M-%S).$backup_format
docker exec sqlserver /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Your_password_here -Q "BACKUP DATABASE [Your_database_name_here] TO DISK = N'/var/opt/mssql/backup/$backup_name' WITH NOFORMAT, NOINIT, NAME = 'Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
# 删除过期备份
days_to_keep=7
find $backup_dir -type f -mtime +$days_to_keep -name "*.$backup_format" -exec rm {} \;
exit 0
```
该脚本将启动docker-compose文件中定义的sqlserver容器,并使用sqlcmd命令备份数据库,并在备份过期后删除过期备份。您需要将 `Your_password_here` 和 `Your_database_name_here` 替换为您的密码和数据库名称。
您可以使用 `crontab` 或其他调度工具来定期运行该脚本。例如,要每天凌晨3点备份数据库和删除过期备份,您可以在 crontab 中添加以下行:
```
0 3 * * * /path/to/your/script.sh
```
感谢您的提问,祝您编写愉快!