上線環境自動備份資料庫到Amazon S3

上線環境的資料庫,最好最異地備援,這樣資料的才能有好的安全性

我採用的備份方式,是每天早上自動備份將MySQL資料庫打包然後自動備份到S3

參考以下資料

https://github.com/woxxy/MySQL-backup-to-Amazon-S3

只要更改以下欄位:

MYSQLROOT=根據情況設定
MYSQLPASS=根據情況設定
S3BUCKET=根據情況設定
FILENAME=根據情況設定
DATABASE=根據情況設定

如果都ok了話,將設定好的新腳本存好,假設存為 eliving_mysql_to_s3.sh

再來是安裝S3cmd

  1. 如果是linux可以參考 http://s3tools.org/repositories 選擇適合的作業系統做安裝
  2. 如果是Mac的話可以用 brew install s3cmd 安裝

S3cmd安裝完之後要設定一下

執行 s3cmd –configure

然後填入他要求輸入的值,例如:s3的 access_key_id,和 secret_access_key,這兩個值被需到Amazon S3去取得

再來就是要測試是否有正確上傳到s3

先記得將腳本設為可以執行的權限 chmod 755 eliving_mysql_to_s3.sh

執行sh eliving_mysql_to_s3.sh

再來到S3上查看是否有備份成功

如果成功的話,就要設定固定時間自動備份

如果是linux系統的話可以使用 crontab

我是使用root專用的,執行 crontab -e

然後寫上

00 05 * * * /home/deploy/eliving_mysql_to_s3.sh

這樣就固定每天早上5:00會自動備份到S3了

Capistrano 自動部署 使用ssh key 不用打密碼

因為使用 Capistrano 自動部署Rails應用程式

但是部署時要打入user的密碼

所以使用ssh key 登入的方式,來自動登入,讓部署流程更加順暢愉快

因為我是使用Mac電腦,所以我是執行

1.在本機Mac電腦上先產生一組公鑰和私鑰

ssh-keygen -t rsa -C “輸入信箱”

2.在要部署的主機上先產生 .ssh 的資料夾

ssh deploy@eliving.co mkdir -p .ssh

3.從本機Mac電腦複製產生的公鑰id_rsa.pub到遠端的主機上面

cat ~/.ssh/id_rsa.pub | ssh deploy@eliving.co ‘cat >> .ssh/authorized_keys’

看起來應該是要成功了

但是還是失敗,所以到

/etc/log/secure 裡面看是什麼錯誤

後來出現

sshd[21933]: Authentication refused: bad ownership or modes for directory /home/deploy
May 13 02:12:33 li410-81 sshd[21933]: Accepted password for deploy from 114.35.129.167 port 43239 ssh2
May 13 02:12:33 li410-81 sshd[21933]: pam_unix(sshd:session): session opened for user deploy by (uid=0)

原來是權限的問題

因為 /home/deploy 有group write的權限所以底下的.ssh/authorized_keys也繼承到group write,所以將 group write拿掉就可以了