# docker-mysql-backup
- 脚本类型: shell
- 脚本名称: docker-mysql-backup.sh
- 脚本描述: docker 容器中的 mysql 备份
- 运行环境: Linux, Mac
# 备份以 docker compose 方式运行的 mysql
#!/bin/bash
# MySQL backup script
set -e
BASE_DIR=$(pwd)
BACKUP_DIR="$BASE_DIR/data/backup"
BACKUPTIME=$(date +%Y%m%d-%H%M%S)
# 如果 BACKUP_DIR 不存在,则创建
if [ ! -d "$BACKUP_DIR" ]; then
echo "Create backup directory $BACKUP_DIR"
mkdir -p "$BACKUP_DIR"
fi
# 备份所有库
docker compose exec mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' >$BACKUP_DIR/all-$BACKUPTIME.sql
# 只备份cool数据库
# docker compose exec mysql sh -c 'exec mysqldump cool -uroot -p"$MYSQL_ROOT_PASSWORD"' >$BACKUP_DIR/cool-$BACKUPTIME.sql
# 删除7天前的备份文件
# find $BACKUP_DIR -mtime +7 -name "*.sql" -exec rm {} \;
TIP
脚本应在 docker-compose.yml 所在目录执行,如 mysql 服务名称不为 mysql,则需要修改脚本中的docker compose exec mysql
为docker compose exec <mysql服务名称>
.
可以通过docker compose ps
查看服务名称.
可按示例修改脚本,只备份某个数据库.以及删除7天前的备份文件.