rsync+sersync实时同步

一、sersync介绍

1.为什么要用rsync+sersync架构?
  • sersync是基于inotify开发的,类似于inotify-tools的工具
    sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录
2.rsync+inotify-tools与rsync+sersync架构的区别?

2.1rsync+inotify-tools

  • inotify只能记录下被监听的目录发生了变化(增,删,改)并没有把具体是哪个文件或者哪个目录发生了变化记录下来;
    rsync在同步的时候,并不知道具体是哪个文件或目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此效率很低

2.2 rsync+sersync

  • sersync可以记录被监听目录中发生变化的(增,删,改)具体某个文件或目录的名字;
    rsync在同步时,只同步发生变化的文件或目录(每次发生变化的数据相对整个同步目录数据来说很小,rsync在遍历查找对比文件时,速度很快),因此效率很高。

总结:

  • 当同步的目录数据量不大时,建议使用rsync+inotify
    当同步的目录数据量很大时(几百G甚至1T以上)文件很多时,建议使用rsync+sersync
3.sersync原理
  • sersync就是监控本地的数据写入或更新事件;然后,在调用rsync客户端的命令,将写入或更新事件对应的文件通过rsync推送到目标服务器;

二、部署sersync(前提是已经部署好了rsync daemon)

1.下载sersync(我才发现我居然用的是32位的系统)

[root@rsync-B ~]# tar xf sersync2.5_32bit_binary_stable_final.tar.gz 
[root@rsync-B ~]# mkdir sersync
[root@rsync-B ~]# ll
total 624
drwxr-xr-x 2 root root   4096 Jul  4  2010 GNU-Linux-x86
drwxr-xr-x 2 root root   4096 Jul 23 10:02 sersync
-rw-r--r-- 1 root root 629501 Jul  4  2010 sersync2.5_32bit_binary_stable_final.tar.gz
[root@rsync-B ~]# mkdir sersync/conf
[root@rsync-B ~]# mkdir sersync/bin
[root@rsync-B ~]# mkdir sersync/log
[root@rsync-B ~]# cp GNU-Linux-x86/sersync2 sersync/bin/
[root@rsync-B ~]# cp GNU-Linux-x86/confxml.xml sersync/conf/
[root@rsync-B ~]# cp sersync/conf/confxml.xml sersync/conf/confxml.xml.backup

2.编辑配置文件

6-11行 过滤功能
12-21行 监控功能
23-46行 同步功能
修改
24 <localpath watch="/data1">
25         <remote ip="10.0.0.129" name="liang"/>
30             <commonParams params="-avz"/>
31             <auth start="true" users="rsync_liang" passwordfile="/etc/rsync.
    password"/>
33             <timeout start="true" time="100"/><!-- timeout=100 -->

3.设置环境变量

[root@rsync-B ~]# tail -2 /etc/profile
export SERSYNC_HOME=/root/sersync/bin/
export PATH=$SERSYNC_HOME:$PATH
[root@rsync-B ~]# source /etc/profile

4.启动sersync服务

[root@rsync-B ~]# sersync2 -d -r -o sersync/conf/confxml.xml
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
option: -d      run as a daemon
option: -r      rsync all the local files to the remote servers before the sersync work
option: -o      config xml name:  sersync/conf/confxml.xml
daemon thread num: 10
parse xml config file
host ip : localhost     host port: 8008
daemon start,sersync run behind the console 
use rsync password-file :
user is rsync_liang
passwordfile is         /etc/rsync.password
config xml parse success
please set /etc/rsyncd.conf max connections=0 Manually
sersync working thread 12  = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads) 
Max threads numbers is: 22 = 12(Thread pool nums) + 10(Sub threads)
please according your cpu ,use -n param to adjust the cpu rate
rsync the directory recursivly to the remote servers once
working please wait...
execute command: cd /data1 && rsync -avz -R --delete ./  --timeout=100 rsync_liang@10.0.0.129::liang --password-file=/etc/rsync.password >/dev/null 2>&1 
run the sersync: 
watch path is: /data1

[root@rsync-B data1]# ps -ef|grep sersync
root      9049     1  0 10:26 ?        00:00:00 sersync2 -d -r -o sersync/conf/confxml.xml
root      9065  8566  0 10:27 pts/1    00:00:00 grep sersync

5.测试
5.1在/data1创建文件

[root@rsync-B data1]# ls
a.txt  c.txt  e.txt  g.txt  i.txt  k.txt  m.txt  o.txt  q.txt  s.txt  u.txt  w.txt  y.txt
b.txt  d.txt  f.txt  h.txt  j.txt  l.txt  n.txt  p.txt  r.txt  t.txt  v.txt  x.txt  z.txt

5.2到服务端查看

[root@rsync-B data1]# ls
a.txt  c.txt  e.txt  g.txt  i.txt  k.txt  m.txt  o.txt  q.txt  s.txt  u.txt  w.txt  y.txt
b.txt  d.txt  f.txt  h.txt  j.txt  l.txt  n.txt  p.txt  r.txt  t.txt  v.txt  x.txt  z.txt

6.添加另外两个模块

[root@rsync-B ~]# cd sersync/conf/
[root@rsync-B conf]# ls
confxml.xml  confxml.xml.backup

6.1编辑文件

[root@rsync-B conf]# cp confxml.xml liang2.confxml.xml
[root@rsync-B conf]# vim liang2.confxml.xml 
 25             <remote ip="10.0.0.129" name="liang2"/>
[root@rsync-B conf]# cp confxml.xml liang3.confxml.xml
[root@rsync-B conf]# vim liang3.confxml.xml 
 25             <remote ip="10.0.0.129" name="liang3"/>

6.2启动

[root@rsync-B conf]# sersync2 -d -r -o /root/sersync/conf/liang2.confxml.xml 
...
..
.
[root@rsync-B conf]# sersync2 -d -r -o /root/sersync/conf/liang3.confxml.xml
...
..
.

6.3测试

[root@rsync-A liang1]# ls /liang3
c.txt  f.txt  i.txt  l.txt  o.txt  r.txt  u.txt  x.txt
a.txt  d.txt  g.txt  j.txt  m.txt  p.txt  s.txt  v.txt  y.txt
b.txt  e.txt  h.txt  k.txt  n.txt  q.txt  t.txt  w.txt  z.txt
[root@rsync-A liang1]# ls /liang2
c.txt  f.txt  i.txt  l.txt  o.txt  r.txt  u.txt  x.txt
a.txt  d.txt  g.txt  j.txt  m.txt  p.txt  s.txt  v.txt  y.txt
b.txt  e.txt  h.txt  k.txt  n.txt  q.txt  t.txt  w.txt  z.txt
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值