過去 Linux 系統的維護,對於重要的資料庫備份,不外乎是增加本地備份用的硬碟、網路儲存系統(NAS),最麻煩且成本最高的是異地備份。在雲端儲存大行其道的時代,Amazon S3 也成為系統管理者備份資料的好工具。
目前有許多新的 NAS 產品,也提供同步備份到 Amazon S3 的服務;因為操作較簡單適合一般使用者,請自行尋找合適的 NAS 解決方案(參考)。
這篇文章是利用 Shell Script 的方式,自動將 MySQL 資料庫備份到 Amazon S3,適合自行架設或租用 VPS Linux 主機的系統管理者。
測試環境為 Ubuntu Linux 12.04 LTS
### 測試 mysqldump 指令 ###
建立一組備份資料用的 MySQL 帳號 USER 並設定為 NO PASSWORD、只限從 localhost (主機)連線。
將 DB_NAME 資料庫備份到 DB_NAME.sql 的指令:
mysqldump -u USER DB_NAME > DB_NAME.sql
如果執行成功(使用者權限正確),DB_NAME.sql 會包含資料庫完整 structure 與 data。
### 使用 gzip 壓縮備份檔 ###
先確認 gzip 工具已安裝。
sudo apt-get install gzip
壓縮檔案。
gzip DB_NAME.sql
執行完成後會產生 DB_NAME.sql.gz(並移除 DB_NAME.sql)。
### 加上日期標記 ####
為了區分不同時間點的備份檔,使用 date 指令產生日期。
date +%Y%m%d%H%M%S
這個指令會產生日期+時間的一串文字:20130113132718。
為了重複利用,以 Shell 變數儲存日期標記。
set stamp=`date +%Y%m%d%H%M%S`; echo $stamp
### 結合以上操作 ###
將備份、壓縮變成一行指令。
stamp=`date +%Y%m%d%H%M%S`; mysqldump DB_NAME > /tmp/DB_NAME-$stamp.sql && gzip /tmp/DB_NAME-$stamp.sql
### 使用 s3cmd 備份檔案 ###
先開通 Amazon AWS 的帳號及 S3 服務,取得 ACCESS_KEY 與 SECRET_KEY。
安裝 s3cmd 工具。
sudo apt-get install s3cmd
先設定 S3 存取權限(access_key, secret_key)。
s3cmd --configure
先建立 Bucket(S3 儲存空間)。
s3cmd mb s3://BUCKET_NAME
通常 Bucket 名稱使用自訂的網域,例如(s3.company.com)。
上傳一的檔案。
s3cmd put DB_NAME.sql.gz s3://BUCKET_NAME/backup
瀏覽 S3 的檔案。
s3cmd ls s3://BUCKET_NAME/backup/
取回檔案。
s3cmd get s3://BUCKET_NAME/backup/DB_NAME.sql.gz DB_NAME.sql.gz
### 組合成備份指令 ###
先測試指令是否正確運作。
stamp=`date +%Y%m%d%H%M%S`; mysqldump DB_NAME > /tmp/DB_NAME-$stamp.sql && gzip /tmp/DB_NAME-$stamp.sql && s3cmd put /tmp/DB_NAME-$stamp.sql.gz s3://BUCKET_NAME/backup/
檢查檔案備份結果。
s3cmd ls s3://BUCKET_NAME/backup/
將指令存為 Script (backup.sh)檔。
--------- /home/USER1/backup.sh ---------
#!/bin/bash
stamp=`date +%Y%m%d%H%M%S`; mysqldump DB_NAME > /tmp/DB_NAME-$stamp.sql && gzip /tmp/DB_NAME-$stamp.sql && s3cmd --no-progress put /tmp/DB_NAME-$stamp.sql.gz s3://BUCKET_NAME/backup/
--------------------- END ----------------------
設定執行權限。
chmod a+x backup.sh
先執行一次測試備份程式。
./backup.sh
### 設定 crontab 工作排程 ###
定時執行 backup.sh 程式,使用 crontab 即可辦到。
修改 crontab 設定(使用個人喜歡的編輯器)。
crontab -e
在最行一行加入:
0 3 * * * /home/USER1/backup.sh > /dev/null 2>&1
固定每日凌晨三點,自動執行資料庫備份程式(後面 redirect 到 /dev/null 是為了避免 crontab 將訊息以郵件通知)。
@作者 lyhcode 是熱血程式設計師,喜歡分享 Linux 作業系統與自由軟體的使用技巧,本文歡迎轉載請註明出處。
訂閱:
張貼留言 (Atom)
-
▼
2013
(133)
-
▼
1月
(50)
- Mac 一定要學的螢幕抓圖技巧,Screenshot cheat sheet for Mac OS X
- Usersnap 類似 Google Feedback 網站使用者意見回饋的雲端服務,支援螢幕擷圖與塗鴉
- Grails 網站整合 Facebook 帳號登入的 Facebook Auth plugin 介紹
- Ubuntu Linux Server 設定 GMail 為系統預設電子郵件服務
- 開啟 Ubuntu Linux Server 的自動系統安全更新與通知
- 使用 tmux 與 tmuxifier 打造 Console 開發環境(比 screen 更棒)
- 免費 Cyberduck 跨平台、支援眾多協定的網路檔案傳輸工具
- Grails 筆記 - 輕鬆實現 JavaScript 最佳化壓縮與靜態資源 CDN 佈署
- 兩個強大的 HTML5 電子書閱讀器,模擬翻頁效果且開放原始碼 Turn.js 與 20things...
- 讓 Ubuntu 的 VIM 程式碼的配色變好看
- Ubuntu Linux KVM 虛擬機器維護與 Guest OS 文字介面安裝
- Foundation 3 優秀的 Reponsive 前端框架
- Twinkle 讓 Java Swing 程式也有漂亮的 Growl-like 系統通知訊息顯示 f...
- 使用 Gradle Application Plugin 快速建立容易發佈的 Java 應用程式
- Grails 2.2 安裝 Local Plugin 的方法
- 解決 Grails Domain Date + MySQL 發生錯誤 Value '0000-00-...
- 建立可以直接執行的 Grails WAR 檔案
- 使用 AES 演算法加密字串,以 Groovy / Java 快速實作
- Grails 好用的 LinkGenerator 與 MimeUtility 隱藏版 Helper
- 多作者共筆以 Markdown 編輯,使用 Mou, Pandoc, XeTex 輕鬆製作 PDF ...
- [筆記] Ubuntu Linux 使用 apt-get 指令移除軟體並清理遺留的垃圾
- 使用 mysqldump, crontab, s3cmd 自動化異地備份資料庫到 Amazon S3...
- 觀點:開發很棒的軟體...五個成功秘訣分享(中譯摘要)
- s3cmd 檔案傳輸速度調校筆記
- Jenkins 使用 IRC Plugin 讓專案 build 訊息自動發佈到聊天室
- [筆記] 使用 Node.js 撰寫 IRC Client / Chat Bot 聊天機器人
- 在 Ubuntu 下使用 nvm 安裝 Node.js 0.4.12 版本
- Ubuntu 12.04 安裝 KVM 虛擬化筆記
- 解決 Ubuntu fd0 錯誤 /dev/fd0 floppy drive
- 【新書介紹】O'Reilly - Killer UX Design by Jodie Moule
- GitHub 使用 IRC service hook 讓 commit 訊息自動發送至 IRC 聊天室頻道
- 獲利時代(Business Model Generation)新書推薦
- 日本來回機票 6000 元有找!樂桃航空低價促銷找便宜機票
- 快速瀏覽 Grails 2.2 新功能
- 買新電腦預算與規格參考整理 2013.01
- 背包客超省錢住宿攻略(002)台南市南門勞工育樂中心
- VirtualBox 調整虛擬硬碟(*.vmdk 或 *.vdi)磁碟容量大小筆記
- Ubuntu Linux Desktop 12.10 多螢幕顯示器設定與消失的 xorg.conf
- 解決 Ubuntu Linux Server 12.04 DNS 設定問題
- 設定 Ubuntu Server 使用純文字畫面開機
- 即刻救援 Grub 無法開機的 Ubuntu Linux 系統
- Groovy 使用 HttpBuilder 簡化 HTTP 網頁資料存取設計
- 網路電話簿!工商黃頁網站蒐集
- 網路爬蟲服務 Grepsr 與 80legs 只要付錢就幫你把資料搬回家
- 棄業日誌(002)人生整理魔法
- 備份(或複製) Raspberry Pi 記憶卡磁碟資料,Mac OS X 指令範例
- 背包客超省錢住宿攻略(001)台北E書漫時尚閱讀概念館
- 棄業日誌(001)走出舒適圈
- Windows 7 SSD 固態硬碟節省系統磁碟用量筆記
- SanDisk Extreme Pro SDHC UHS-I Card 8GB 95MB/s 633...
-
▼
1月
(50)
沒有留言:
張貼留言