MySQL自动化备份Docker方案
该方案仅需通过 Docker Compose 就能轻松完成部署。你可以自由配置数据库连接信息,无论是远程数据库,还是本地数据库,都能实现无缝对接。在备份频率设置上,支持按固定秒数间隔执行备份任务,比如设置 INTERVAL_SECONDS=3600,即可实现每小时自动备份;若设为 INTERVAL_SECONDS=86400,则能达成每日备份。
备份文件管理方面,它同样表现出色。你可以将备份文件存储在宿主机指定目录,像 /vol2/1000/mysqlbackup,保障数据持久化存储。同时,提供按天数或文件数量两种保留策略,选择按天数保留,设置 RETENTION_DAYS=7,就能自动清理 7 天前的旧备份;若选择按文件数保留,配置 RETENTION_COUNT=10,则只留存最新的 10 个备份文件,有效节省存储空间。
此方案不仅适合个人开发者保障数据安全,对于企业级数据库备份场景也同样适用。它操作便捷、配置灵活,能为你的数据安全保驾护航。 快来试试这个 MySQL 自动化备份 Docker 方案,开启轻松备份新体验!
方案特点
- 间隔时间备份:按固定秒数间隔执行备份任务
- 灵活保留策略:可按天数或文件数量自动清理旧备份
- 远程数据库支持:直接连接远程MySQL数据库进行备份
- 持久化存储:备份文件存储在宿主机指定目录,确保数据安全
Docker Compose 配置
以下是简化后的Docker Compose配置:
yaml
version: '3'
services:
mysql-backup:
image: fjsay/mysql-backup:latest
container_name: mysql-backup
environment:
- DB_HOST=xxxxx # 数据库主机地址
- DB_PORT=3306 # 数据库端口(默认3306)
- DB_USER=xxxxx # 数据库用户名
- DB_PASSWORD=xxxxx # 数据库密码
- DB_NAME=xxxxxx # 要备份的数据库名称(留空备份所有库)
- BACKUP_MODE=interval # 固定为间隔模式
- INTERVAL_SECONDS=43200 # 备份间隔时间(秒)
- BACKUP_DIR=/backups # 容器内备份目录(保持默认)
- RETENTION_POLICY=days # 保留策略:days(按天)或 count(按文件数)
- RETENTION_DAYS=365 # 按天保留时的天数(默认7天)
- RETENTION_COUNT=10 # 按文件数保留时的数量(默认10个)
volumes:
- /vol2/1000/mysqlbackup:/backups # 宿主机备份目录挂载
restart: always # 容器异常退出时自动重启
配置参数说明
数据库连接参数
参数名 | 说明 | 示例值 |
---|---|---|
DB_HOST |
数据库主机地址(支持域名或 IP) | mysql.example.com |
DB_PORT |
数据库端口 | 3306 |
DB_USER |
数据库用户名 | backup_user |
DB_PASSWORD |
数据库密码 | strong_password |
DB_NAME |
要备份的数据库名称(留空则备份所有数据库) | my_database |
备份间隔参数
通过INTERVAL_SECONDS
参数设置备份执行间隔(秒):
INTERVAL_SECONDS=3600
:每小时执行一次INTERVAL_SECONDS=900
:每15分钟执行一次INTERVAL_SECONDS=86400
:每天执行一次(24小时)
备份保留策略
1. 按天数保留(RETENTION_POLICY=days
)
自动删除超过指定天数的旧备份:
RETENTION_DAYS=7
:保留最近7天的备份RETENTION_DAYS=30
:保留最近30天的备份RETENTION_DAYS=365
:保留最近1年的备份
2. 按文件数保留(RETENTION_POLICY=count
)
只保留指定数量的最新备份文件:
RETENTION_COUNT=10
:保留最近10个备份RETENTION_COUNT=50
:保留最近50个备份RETENTION_COUNT=100
:保留最近100个备份
使用步骤
-
创建配置文件 :将上述Docker Compose配置保存为
docker-compose.yml
-
修改参数:根据实际需求修改数据库连接信息和备份策略
-
启动服务:
bashdocker-compose up -d
-
验证备份:
bash# 查看容器日志 docker logs -f mysql-backup # 检查备份文件 ls -la /vol2/1000/mysqlbackup