动态

详情 返回 返回

MySQL 備份 Shell 腳本:支持遠程同步與阿里雲 OSS 備份 - 动态 详情

之前我寫過一個臨時的 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 進行優化!

user avatar san-mu 头像 liujiaxiaobao 头像 hz_linmu 头像 apocelipes 头像
点赞 4 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.