數據同步

最近看到xoyo開發sersync同步數據還不錯,所以在此做下筆記。

之前的時候同步數據用的是inotify+rsync,以下是inotify+rsync的一個腳本。

#!/bin/bash
SRC="/var/tmp/src/"
DST="/var/tmp/dst/"
HOST="127.0.0.1"
/usr/bin/inotifywait -mrq --timefmt '%Y%m%d%H%M%S' --format '%T%w%f %e' -e modify,delete,create,attrib ${SRC} | while read  TIME FIL
E_CHANGED EVNET
do
rsync -av --delete --progress --partial ${SRC} ${DST} && echo "Directory ${SRC} was rsynced"
echo "------------------------------------------------------------------"
done

個人認爲sersync 還不錯,以下是sersync的介紹,詳細請參照http://code.google.com/p/sersync/

 sersync的優點: 

1. sersync是使用c++編寫,而且對linux系統文件系統產生的臨時文件和重複的文件操作進行過濾(詳細見附錄,這個過濾腳本程序沒有實現),所以在結合rsync同步的時候,節省了運行時耗和網絡資源。因此更快。
2. 相比較上面兩個項 目,sersync配置起來很簡單,其中bin目錄下已經有基本上靜態編譯的2進制文件,配合bin目錄下的xml配置文件直接使用即可。
3. 另 外本項目相比較其他腳本開源項目,使用多線程進行同步,尤其在同步較大文件時,能夠保證多個服務器實時保持同步狀態。
4. 本項目有出錯處 理機制,通過失敗隊列對出錯的文件重新同步,如果仍舊失敗,則每10個小時對同步失敗的文件重新同步
5. 本項目自帶crontab功能,只需在xml配置文件中開啓,即可按您的要求,隔一段時間整體同步一次。無需再額外配置crontab功能

下面是自己配置一個實例

1、修改sersync服務

 環境:192.168.1.15 sersync服務

              192.168.1.14 rsync服務 

?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.2">
    <host hostip="192.168.1.15" port="8008"></host>
    <filter start="false">
        <exclude expression="(.*)\.gz"></exclude>
        <exclude expression="^info/*"></exclude>
    </filter>
    <sersync>
        <localpath watch="/data/www.test.com" debug="false">
            <remote ip="192.168.1.14" name="tongbu"/>
            <!--<remote ip="192.168.8.39" name="tongbu"/>-->
        </localpath>
//密碼驗證
        <rsyncauth start="flase" users="www" passwordfile="/etc/rsync.pas"/>
//設置整體同步時間
        <crontab start="false" schedule="600">
            <crontabfilter start="false">
                <exclude expression="*.php"></exclude>
                <exclude expression="info/*"></exclude>
            </crontabfilter>
        </crontab>
//刷cdn
        <plugin start="false" name="refreshCDN"/>
    </sersync>
    <plugin name="refreshCDN">
        <localpath watch="/data0/htdocs/cms.xoyo.com/site/">
            <cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
            <sendurl base="http://pic.xoyo.com/cms"/>
            <regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/p_w_picpaths"/>
        </localpath>
    </plugin>
    <plugin name="socket">
        <localpath watch="/opt/tongbu">
            <deshost ip="192.168.138.20" port="8009"/>
        </localpath>
    </plugin>
</head>

2、14上的rsync配置

uid = root
gid = root
use chroot = yes
max connections = 20
syslog facility = local5
pid file = /var/run/rsyncd.pid
[tongbu]
path=/data/www.test.com
uid=root
comment=test
ignore errors=yes
read only=no
hosts allow=192.168.1.15

hosts deny=*

啓動rsync服務

rsync --daemon --config=/etc/rsyncd.conf
啓動sersync服務
./sersync2.4 -r –d
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章