数据同步

最近看到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功能
  获取sersync源码
wget http://sersync.googlecode.com/files/sersync2.4_32bit_binary.tar.gz
wget http://sersync.googlecode.com/files/sersync2.4_64bit_binary.tar.gz

下面是自己配置一个实例

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/images"/>
        </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

本文出自 “二号” 博客,谢绝转载!

你可能感兴趣的:(职场,数据同步,休闲,sersync)