之前我寫過一個臨時的 MySQL 備份腳本,主要是為了應急使用,功能比較簡單。現在有時間了,我重新整理了一下,讓它不僅能自動備份數據庫,還支持遠程服務器同步和上傳到阿里雲 OSS,這樣即使本地備份丟失,數據也不會完全丟失。
現在,這個腳本已經發布到 GitHub,地址在這裏:
👉 GitHub 倉庫 - mysql-backup-shell
這個腳本做了什麼?
這個腳本的核心功能包括:
- 自動備份 MySQL 數據庫,每天定時運行(可通過
crontab 設置)。 - 本地存儲:按日期分類存放備份文件,並自動刪除過期備份,避免磁盤佔滿。
- 遠程服務器同步:支持通過
rsync 傳輸備份到另一台服務器,確保數據冗餘。 - 阿里雲 OSS 備份:可以將備份文件上傳到阿里雲對象存儲,進一步增強安全性。
- 自動清理過期備份:定期清理本地、遠程和 OSS 上的舊備份,減少存儲成本。
你可以在 mysql_backup.sh 中修改配置,根據自己的需求調整備份策略。
如何使用?
1. 下載腳本
git clone https://github.com/zxc7563598/mysql-backup-shell.git
cd mysql-backup-shell
chmod +x mysql_backup.sh
然後修改 mysql_backup.sh 裏的參數,確保 MySQL 連接信息正確。
2. 設置定時任務
執行 crontab -e,然後添加:
0 3 * * * /path/to/mysql_backup.sh
這樣每天凌晨 3:00 就會自動執行備份。
遠程服務器同步配置
如果想把備份同步到另一台服務器,需要配置 SSH 免密登錄。
1. 生成 SSH 密鑰
在本機執行:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/my_backup_key
然後把生成的 my_backup_key.pub 複製到遠程服務器:
ssh-copy-id -i ~/.ssh/my_backup_key.pub user@remote_server_ip
修改腳本配置:
enable_ssh_sync=true # 是否啓用 SSH 同步(true/false)
enable_ssh_clean=true # 是否清理遠程服務器上的備份(true/false)
ssh_ip="182.22.13.33" # 遠程服務器 IP
ssh_port=22 # SSH 端口
ssh_user="root" # 登錄遠程服務器的用户名
clientPath="/home/backup/mysql/" # 遠程服務器存儲路徑
配置完成後,腳本運行時就能把備份同步到遠程服務器了。
阿里雲 OSS 備份配置
1. 安裝 ossutil
需要安裝 ossutil,阿里雲有十分完善的文檔,點擊查看:安裝ossutil
僅需完成官方文檔中的第一步安裝 ossutil 使其命令可用即可,不需要執行官方文檔中的 ossutil config 對 ossutil 進行配置
2. 創建Bucket
進入 對象存儲OSS - Bucket列表,創建 Bucket,用於存放數據庫備份文件
3. 獲取阿里雲 AccessKey
進入 阿里雲 AccessKey 管理,創建 AccessKey 並記錄 AccessKey ID 和 AccessKey Secret。
3. 修改腳本配置
enable_oss_upload=true # 是否啓用 OSS 上傳(true/false)
enable_oss_clean=true # 是否清理阿里雲 OSS 上的備份(true/false)
oss_bucket="oss://Bucket名稱/想存儲的文件夾路徑/" # OSS 目標路徑
oss_access_key="your-access-key-id" # 阿里雲 AccessKey
oss_secret_key="your-access-key-secret" # 阿里雲 Secret
oss_endpoint="oss-cn-hangzhou.aliyuncs.com" # OSS 訪問地址,在對應 bucket 的概覽中可以看到外網訪問的 Endpoint
配置完成後,腳本運行時備份文件就會自動上傳到 OSS 了。
結語
這個腳本能幫助你輕鬆管理 MySQL 備份,支持本地存儲、遠程同步和阿里雲 OSS 備份。如果你也需要定期備份數據庫,可以試試這個倉庫:
👉 GitHub 倉庫 - mysql-backup-shell 🚀
如果有任何問題或改進建議,歡迎提 Issue 或 Fork 進行優化!