RedHat Linux下使用sersync进行实时同步数据51CTO博客 - 凯发娱乐

RedHat Linux下使用sersync进行实时同步数据51CTO博客

2019年04月04日09时02分08秒 | 作者: 怜雪 | 标签: 同步,实时,进行 | 浏览: 1882

 拓扑图如下:

 

 

能够有多个方针效劳器,本机同步也能够(要一起开sersync效劳和rsync看护进程) 需求: 1、源效劳器上 要备份的是/data/bookfm/doc/book 目录包括子目录下的original.xxx ,其他文件不备份 2、备份效劳器上 备份的途径/backup/bookfm ,当然备份的效劳器有或许不止一台
由于源效劳器上original.xxx文件比较多,一开始同步计划:写一个rsync脚本,然后守时履行同步,可是这样不能做到实时同步,后来运用rsync+inotify 写成脚原本做实时同步,也不可,是由于inotify能够做到实时监控文件或文件夹创立或是修正,然后告诉rsync,可是rsync同步之前都会先结构一个Filelist(文件一多,结构这个列表的时刻就长,体系负载也比较大),所以只需有文件创立或许修正,那么都会结构列表,所以这么做不适合大批量文件进行实时同步,这时能够用sersync,sersync运用 inotify 监控操作体系对磁盘的操作事情,经过接收到的事情生成带特定参数的rsync指令行并履行,然后到达实时增量同步的意图。
sersync项目介绍: http://code.google.com/p/sersync/
运用指南 http://hi.baidu.com/like7419/blog/item/21ef5b0c8d83e4f537d12231.html   一、在源和方针上晋级rsync(http://rsync.samba.org),由于新版的rsync功能上有所改进

[root@server10 ~]#wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz

[root@server10 ~]#tar xzf rsync-3.0.9.tar.gz

[root@server10 ~]#cd rsync-3.0.9

[root@server10 rsync-3.0.9]#./configure

[root@server10 rsync-3.0.9]#make && make install

默许会安装到/usr/local/bin/rsync ,所以咱们要把/usr/bin下面的rsync备份一次删去或重命名,然后做一个软连接到/usr/local/bin/rsync

[root@server10 rsync-3.0.9]#ln -s /usr/local/bin/rsync rsync

检查版别,即为晋级后的版别

[root@server10 book]# rsync version
rsync  version 3.0.9  protocol version 30
Copyright (C) 1996-2011 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, no symtimes

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.
 

  二、在源效劳器上下载及装备sersync:
1.下载安装 [root@server10 ~]# cd /usr/local [root@server10 local]# wget http://sersync.googlecode.com/files/sersync2.5_32bit_binary_stable_final.tar.gz [root@server10 local]# tar xzf sersync2.5_32bit_binary_stable_final.tar.gz [root@server10 local]# cd GNU-Linux-x86/  [root@server10 GNU-Linux-x86]# ls
confxml.xml  sersync2
一个主程序和一个装备文件
2.装备vim /usr/local/GNU-Linux-x86/configxml.xml <?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
    <host hostip="localhost" port="9090"></host>
    <debug start="false"/>
    <fileSystem xfs="false"/>
    <filter start="false">  #请依据实际状况启用
     <exclude expression="^((?!original\.).*)$"></exclude>          <! <exclude expression="abc"></exclude>
     <exclude expression="image"></exclude>
     <exclude expression="txt"></exclude>
     <exclude expression="xml"></exclude>
     <exclude expression="*"></exclude>
     >
    </filter>
    <inotify>
     <delete start="false"/>                    #不监控文件或目录的删去
     <createFolder start="true"/>        #监控目录的创立
     <modify start="true"/>                    #监控文件的修正
     <createFile start="true"/>               
     <closeWrite start="true"/>            #监控创立新文件
     <moveFrom start="false"/>
     <moveTo start="false"/>
     <attrib start="false"/>
    </inotify>

    <sersync>
     <localpath watch="/data/bookfm/doc/book">   #设置监控的目录
         <remote ip="192.168.100.250" name="book"/>                                                         #指定方针主机的IP地址和模块名(和samba的相似,不是目录的称号)                                                     #有几台方针主机,装备这样几条,一起也要在方针上启用rsync看护进程
         <!<remote ip="192.168.8.39" name="tongbu"/>>
         <!<remote ip="192.168.8.40" name="tongbu"/>>
     </localpath>
     <rsync>
         <commonParams params="-au" include=*original.* exclude=bin exclude=image exclude xml exclude=txt include=*/ exclude=*"/>     #指定rsync 运转时的参数,可依据本身需求更改
         <auth start="true" users="bookbackup" passwordfile="/usr/local/GNU-Linux-x86/rsyncd.secrets"/>         #启用验证,指定用户名和暗码文件(只用写一个暗码即可)        #用户名是方针效劳器上rsync装备文件中指定的用户名,暗码文件中的暗码也方针效劳器上rsync指定的暗码文件指定的暗码
         <userDefinedPort start="false" port="874"/><! port=874 >
         <timeout start="false" time="100"/><! timeout=100 >
         <ssh start="false"/>
     </rsync>
     <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!default every 60mins execute once>      <crontab start="false" schedule="600"><!600mins>
         <crontabfilter start="false">
          <exclude expression="*.php"></exclude>
          <exclude expression="info/*"></exclude>
         </crontabfilter>
     </crontab>
     <plugin start="false" name="command"/>
    </sersync>

    <plugin name="command">
     <param prefix="/bin/sh" suffix="" ignoreError="true"/>     <!prefix /opt/tongbu/mmm.sh suffix>
     <filter start="false">
         <include expression="(.*)\.php"/>
         <include expression="(.*)\.sh"/>
     </filter>
    </plugin>

    <plugin name="socket">
     <localpath watch="/opt/tongbu">
         <deshost ip="192.168.138.20" port="8009"/>
     </localpath>
    </plugin>
    <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>
</head> 装备文件一般依据自己需求修正   3.创立用到的目录和文件 [root@server10 book]#  echo "123456" >/usr/local/GNU-Linux-x86/rsyncd.secrets [root@server10 book]# mkdir /var/rsync [root@server10 book]#touch /var/rsync/rsync_error.log     三、在方针效劳器上装备rsync   1.创立目录和文件 [root@router bookfm]# mkdir /etc/rsyncd/ [root@router rsyncd]# touch rsyncd.conf         #创立rsync的装备文件 [root@router rsyncd]# touch rsyncd.secrets     #创立rsync的暗码文件,里边包括用户名和暗码,用冒号分隔 [root@router rsyncd]#chmod -R 600 .                 #只要root才干读取这些文件 [root@router rsyncd]# vim rsyncd.conf

uid = root                                

#体系中存在的用户,这个用户要能对备份的途径有写入权限
gid = root                                 

#体系中存在的用户组,用户组要能对备份的途径有写入权限
max connections = 100          #最大连接数
use chroot = no               
log file = /var/rsync/rsync.log       #指定同步日志
pid file = /var/rsync/rsyncd.pid     #指定运转时PID文件
lock file = /var/rsync/rsyncd.lock  

[book]
path = /backup/bookfm                   #指定备份的途径
read only=no                                      #可写入  
ignore errors = yes                            #疏忽过错
secrets file =/etc/rsyncd/rsyncd.secrets  

#指定rsync本身的暗码文件(非体系用户)
auth users = bookbackup           #指定这个同享名验证的用户名
hosts allow =  192.168.100.246/24           #只允许这个IP地址

hosts deny = *                 #而制止其他一切IP
[root@router rsyncd]# vim rsyncd.secrets  bookbackup:123456
2.发动rsync看护进程  [root@router rsyncd]#rsync daemon config=/etc/rsyncd/rsyncd.conf  假如不指定端口,默许是873,假如有启用iptables,那么请放行873端口 rsync daemon port=9091 config=/etc/rsyncd/rsyncd.conf   自定义端口时记住防火墙放行该端口   四、在源效劳器上,敞开sersync效劳   [root@server10 book]# /usr/local/GNU-Linux-x86/sersync2 选项 -r 进行全体同步一次 -d 后台运转 -o 指定装备文件途径 -n 指定默许的线程池的线程总数,假如不指定,默许发动线程池数量是10(适用于四核效劳器)   /usr/local/GNU-Linux-x86/sersync2 -r -d -o /usr/local/GNU-Linux-x86/confxml.xml  通常状况下运用这种方法,对本地到长途全体同步一次后,在后台运转实时同步。   /usr/local/GNU-Linux-x86/sersync2 -d -o /usr/local/GNU-Linux-x86/confxml.xml  在源效劳器上敞开sersync看护进程,使sersync在后台运转,敞开实时同步。
/usr/local/GNU-Linux-x86/sersync2 -r -o /usr/local/GNU-Linux-x86/confxml.xml  在敞开实时监控的之前对主效劳器目录与长途方针机目录进行一次全体同步 假如设置了过滤器,即在xml文件中,filter为true,则暂时不能运用-r参数进行全体同步。-r参数将会无效
/usr/local/GNU-Linux-x86/sersync2 -n 5 -r -o /usr/local/GNU-Linux-x86/confxml.xml  指定默许的线程池的线程总数,假如不指定,默许发动线程池数量是10(适用于四核效劳器) 假如cpu运用过高,能够经过这个参数调低,假如机器装备较高,能够用-n调高线程总数。
依据上述状况,能够运用以下指令来发动sersync效劳(假如同步时不过滤文件即filter start=false) /usr/local/GNU-Linux-x86/sersync2 -n 5 -r -d -o /usr/local/GNU-Linux-x86/confxml.xml 
可是依据本身的状况(由于只备份original.xxx文件),所以必需要启用文件过滤(即filter start=true),一旦启用了这个参数,那么-r参数就无效,而-r参数又是进行全体同步的参数,那就无法进行一次全体同步。 依据这种状况,能够在源上敞开rsync效劳,然后在方针上用rsync进行一次全体同步,然后中止源上面的rsync效劳,敞开sersync效劳,进行实时同步 /usr/local/GNU-Linux-x86/sersync2 -d -o /usr/local/GNU-Linux-x86/confxml.xml 
五、测验 在源效劳器上指定目录下创立original.pdf文件,然后看看方针上备份的途径里边有没有该文件,然后再创立aaaa文件,看sersync是否同步该文件。 经测验,备份时能够做到实时同步,并且体系负载也较小。

 

假如呈现以下过错: missing secret for user "booksbackup" 或许是:你的两方装备的用户名不正确,或许暗码文件权限不是600或许400  

rsync发动中止的脚本,便利发动中止rsync看护进程

附件:http://down.51cto.com/data/2359768
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章