企業數據備份-rsync+shell編程-實現增量備份

今天看下公司的數據備份,天天更新的數據量很是大,備份爲異地備份,也就是說,全部的數據要傳到另一臺服務器.因此研究出如下備份策略及備份腳本,但願對讀者有些幫助.如下爲實現方式:
軟件及策略說明:

軟件:軟件使用rsync

策略:網站程序爲增量備份,第一次總體同步後,後期備份時,將會比對每個文件,將有差別的文件進行備份.從而不會丟下任何一個文件.rsync比對文件效率很是高,並且邊比對邊傳輸文件.

具體實現以下:
真實服務器A :192.168.0.2      (實際操做換上真實服務器IP )
備份服務器B :192.168.0.3      (實際操做換上真實服務器IP)

一,如下爲在真實服務器上A 上的操做

真實服務器A 爲nginx +php-cgi+mysql 模式
nginx 安裝目錄爲/usr/local/nginx/  全部的配置文件爲一個虛擬主機一個配置文件,並在 /usr/local/nginx/conf/vhost/下.
php安裝目錄爲/usr/local/php
mysql 安裝路徑爲/usr/local/mysql
數據庫文件在/data/mysql下

全部的數據所有儲存在/data下
目錄解釋:

/data/db  :爲每日將全部數據庫文件打包存放的地方,打包文件格式爲:服務器名.日期.tar
/data/dbcache : 爲備份數據庫文件時的臨時目錄
/data/nginxconf:爲服務器全部nginx配置文件備份存放位置,由於天天架站,刪除站比較多,因此這個也須要備份
/data/script: 爲經常使用腳本存放位置
/data/web  :  爲全部網站程序所放置位置

二.
 (1) :在script目錄下建立dbback.sh腳本文件
腳本內容爲:
#! /bin/bash
ls /data0/web/html/web/ > /data0/script/yuming
for i in `cat /data0/script/yuming`
do
cat /data0/web/html/web/$i/htdocs/app/etc/local.xml | grep dbname | awk -F ']]' '{print $1}'  | awk -F '[' '{print $3}' >>/data0/script/dbname
done
for db in `cat /data0/script/dbname`
do
/usr/local/mysql/bin/mysqldump -p'E2Vj2LQVvS.rG76U' $db > /data/dbcache/$db.sql
done

rm -rf /data0/script/yuming
rm -rf /data0/script/dbname
cd /data/dbcache/
tar -cf 146.0.74.8.`date +"%Y%m%d"`.tar *
find /data/db -mtime +7 -exec rm -rf {} \;
mv *.tar /data/db/
rm -rf /data/dbcache/*
/usr/bin/rsync -auv --progress --delete --password-file=/etc/rsyncd.secrets ./ root@192.168.0.3::backup

下面進行解釋:

#! /bin/bash
ls /data/web/ > /data/script/yuming  //將站域名導入yuming
for i in `cat /data/script/yuming`   //把yuming定義爲一個變量
do
cat /data/web/$i/htdocs/app/etc/local.xml | grep dbname | awk -F ']]' '{print $1}'  | awk -F '[' '{print $3}' >>/data/script/dbname    //提取數據庫名並打入dbname(這個要視你網站的程序而定這裏是magento程序)
done
for db in `cat /data/script/dbname`  //把dbname定義爲一個變量
do
/usr/local/mysql/bin/mysqldump -p'密碼' $db > /data/dbcache/$db.sql  //用mysqldump導出數據庫
done

rm -rf /data/script/yuming     //刪除yuming
rm -rf /data/script/dbname     //刪除dbname
cd /data/dbcache/
tar -cf 服務器IP.`date +"%Y%m%d"`.tar *    //打包全部拷貝過來的數據庫文件
find /data/db -mtime +7 -exec rm -rf {} \; //刪除/data/db 下7天之前的數據庫打包文件
mv *.tar /data/db/                       //將剛剛打包好的數據庫文件移到/data/db
rm -rf /data/dbcache/*                   //刪除複製過來的庫 
/usr/bin/rsync -auv --progress --delete --password-file=/etc/rsyncd.secrets ./ root@備份服務器::備份服務器上的對應模塊>/dev/null 2>&1  //將/data下的全部數據利用rsync 工具傳輸到備份服務器 本案例爲192.168.0.3上的對應模塊

注:備份服務器上的模塊將在下面進行講解備份服務器配置時進行解釋

(2):制定計劃任務.讓此腳本天天定時運行一次
例如:
00 00 * * * sh /data/script/dbback.sh

三,在備份服務器上添加rsync備份模板

在/etc/下建立rsyncd.conf配置文件,文件自己沒有,需建立

vim /etc/rsyncd.conf

輸入如下內容
uid=root
gid=root
max connections=36000
use chroot=0
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock


[模塊名]             #此模塊名爲以上兩個腳本中使用的名
path=/backup     #備份數據存放目錄
comment = mydata backup      #備註說明
ignore errors = yes
read only=no
hosts allow = 192.168.0.2    #只容許此IP進行備份
hosts deny =*

 注:  模塊名爲以上兩個腳本中使用的模塊名,例如以上模塊名爲 [backup]
以下:

uid=root
gid=root
max connections=36000
use chroot=0
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
[backup]
path=/backup
comment = mydata backup
ignore errors = yes
read only=no
hosts allow = 192.168.0.2
hosts deny =*
保存文件並啓動rsync 服務

rsync --daemon -config=/etc/rsyncd.conf

192.168.0.3上面須要配置的內容
vim /etc/rsyncd.secrets
192.168.0.3的密碼
測試
/usr/bin/rsync -auv --progress --delete --password-file=/etc/rsyncd.secrets ./ root@192.168.0.3::backup

至此,全部的操做即已完成.
有什麼疑問能夠留言,互相交流、  
相關文章
相關標籤/搜索