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配置:
version: '3'
services:mysql-backup:image: fjsay/mysql-backup:latestcontainer_name: mysql-backupenvironment:- 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
-
修改參數:根據實際需求修改數據庫連接信息和備份策略
-
啟動服務:
docker-compose up -d
-
驗證備份:
# 查看容器日志 docker logs -f mysql-backup# 檢查備份文件 ls -la /vol2/1000/mysqlbackup