BAK 服務器部署
所需軟件:
Portmap
Nfs
Rsync
- mkdir -p /backup /www #創建網站圖片、附件存儲目錄
- mkdir -p /backup/data /backup/www
#創建網站備份目錄、數據庫備份目
以wiki爲例:
wiki 程序下的附件、圖片目錄有 /data/attachment /uploads
那我們需在BAK服務器上建立這兩個文件目錄,用NFS共享,
- cd /www/
- mkdir -p wiki/uploads wiki/data/attachment
- chmod –R 777 www
- rpm -qa portmap nfs #查看是否安裝,默認是安裝的,直接啓動即可
- service portmap start
- chkconfig portmap on
- service nfs start
- chkconfig nfs on
爲LNMP服務器共享目錄爲可讀寫:
- echo "/www/wiki/uploads/ 10.0.10.84(rw,sync,anonuid=1,anongid=1)" >>/etc/exports
- echo "/www/wiki/data/attachment/ 10.0.10.84(rw,sync,anonuid=1,anongid=1)" >>/etc/exports
- service nfs restart #重啓NFS服務使其生效
看到上圖說明共享成功!!
LNMP上操作
- killall nginx #停止WEB服務,防止打包不完整
- cd /www/htdocs/wiki
- tar zcvf data.tar.gz data/
- tar zcvf uploads.tar.gz uploads/
- mv data databak
- mv uploads uploadsbak
- service portmap start #啓動portmap nfs服務並添加到開機自啓動
- chkconfig portmap on
- service nfs start
- chkconfig nfs on
- showmount –e 10.0.10.85 #查看BAK服務器共享的目錄
- mkdir -p data uploads
- mount -t nfs 10.0.10.85:/www/wiki/data ./data #掛載共享目錄到本地
- mount -t nfs 10.0.10.85:/www/wiki/uploads ./uploads
上圖提示,掛載成功!!
回到BAK服務器上操作
- cd /www/wiki/
- scp 10.0.10.84:/www/htdocs/wiki/data.tar.gz ./
- scp 10.0.10.84:/www/htdocs/wiki/uploads.tar.gz ./
- tar zxvf data.tar.gz
- tar zxvf uploads.tar.gz
#以上操作是把LNMP上打包的目錄拷貝回來,解壓到相應目錄。
LNMP上操作
用 ls 命令查看,發現目錄裏都有文件
啓動nginx,用瀏覽器訪問 http://wiki.cgzg.net
看到圖片都正常顯示,即NFS 部署網站附件、圖片到BAK服務器成功!!
作爲發佈程序的BAK服務器,還需有直接發送數據到WEB服務器上的功能,這裏使用ssh 無密碼登錄驗證技術實現。
首先在要添加信任關係的每臺服務器上修改hosts文件
vi /etc/hosts
在下面添加:
把各服務器的IP和主機名一一對應添加,注意區分大小寫
- ssh-keygen -t dsa #直接一路回車
- cd /root/.ssh/
- mv id_dsa.pub authorized.keys #修改公鑰
BAK上操作
建立rsa key
- ssh-keygen -t dsa #直接一路回車
- cd /root/.ssh/
- cat id_dsa.pub
把BAK裏id_dsa.pub裏的密鑰複製 到 LAMP的authorized_keys裏 即可。
登陸驗證
- ssh lamp
此時,已經無需輸入密碼了。
注:關於無密碼驗證可參考本人另一篇文章:http://www.elain.org/?p=275
LNMP上操作
建立rsa key
- ssh-keygen -t dsa #直接一路回車
- cd /root/.ssh/
- mv id_dsa.pub authorized.keys #修改公鑰
把BAK裏id_dsa.pub裏的密鑰複製 到 LNMP的authorized_keys裏 即可。
在BAK主機上登陸驗證
ssh lnmp
其它服務器都依次做即可!
這時發現 bak 既可以登錄lamp,又可以登錄lnmp
DB 服務器同理操作即可,這裏就不一一操作了
MYSQL 數據備份,通常我們在從服務器上備份
在db2上備份3306的數據
- mkdir –p /www/data
- mysqldump -uroot -p'elain' -S /data/3306/mysql.sock wiki |gzip >/www/data/www_`/bin/date +%Y%m%d%H%M`.sql.gz
在db1上備份3307的數據
- mkdir –p /www/data
- mysqldump -uroot -p'elain' -S /data/3307/mysql.sock blog |gzip >/www/data/bbs_`/bin/date +%Y%d%m%H%M`.sql.gz
在各DB上做好定時任務
在db1上
- crontab –e
- 00 04 * * * mysqldump -uroot -p'elain' -S /data/3307/mysql.sock blog |gzip >/www/data/blog_`/bin/date +%Y%d%m%H%M`_.sql.gz
在db2上
- 00 04 * * * mysqldump -uroot -p'elain' -S /data/3306/mysql.sock wiki |gzip >/www/data/www_`/bin/date +%Y%m%d%H%M`.sql.gz
接下來就是做定時任務,把備份好的數據按時傳送到bak服務器上
- rpm -qa |grep rsync #檢查系統是否安裝(默認一般都已安裝)
- rsync -avzrtopg --delete --progress web01:/www/data/ /backup/data/mysql/bbs
#對lamp上的MYSQL備份執行增量備份到BAK服務器上
- rsync -avzrtopg --delete --progress web02:/www/data/ /backup/data/mysql/www
#對lnmp上的MYSQL備份執行增量備份到BAK服務器上
做成定時任務爲:
在bak服務器上
- crontab –e
- 30 04 * * * rsync -avzrtopg --delete --progress web01:/www/data/ /backup/data/mysql/bbs
- 00 05 * * * rsync -avzrtopg --delete --progress web02:/www/data/ /backup/data/mysql/www
到此,所有服務器都已經部署完畢,望大家學業有成!
作者:elain MSN:[email protected]
個人博客:http://www.elain.org
成功中國網 http://www.cgzg.net/
2010年08月27日於北京
轉載請註明: 轉載自http://www.elain.org
本文鏈接地址:[跟我學中小企業架構部署]之八:備份服務器部署