Linux系统sersync数据实时同步

原文:http://blog.csdn.net/mingongge/article/details/52985259

前面介绍了以守护进程的方式传输或同步数据rsync软件,linux系统数据同步软件很多,今天来介绍下sersync数据同步软件

一:sersync介绍

sersync其实是利用inotify和rsync两种软件技术来实现数据实时同步功能的,inotify是用于监听sersync所在服务器上的文件变化,结合rsync软件来进行数据同步,将数据实时同步给客户端服务器

二:sersync工作过程

在同步主服务器上开启sersync,负责监听文件系统的变化,然后调用rsync命令把更新的文件同步到目标服务器上,主服务器上安装sersync软件,目标服务器上安装rsync服务

三:整体环境拓扑图

四:客户端安装配置rsync服务

[root@Client ~]# cat /etc/rsyncd.conf

cat: /etc/rsyncd.conf: No such file or directory

如果有此文件,配置前要进行备份,再进行相关配置

[root@Client etc]# vi /etc/rsyncd.conf

##rsync config  start

##created by root 2016-08-08 15:00

##rsync.conf config start

uid = rsync

gid = rsync

use chroot = no

max connetctions = 200

timeout = 100

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

[backup]

path = /backup/

ignore errors

read only = false

list = false

hosts allow = 192.168.1.0/24

hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password

##rsync config  end

"rsyncd.conf" [New] 21L, 458C written

添加用户

[root@Client ~]# useradd rsync -s /sbin/nologin -M

改变目录权限

[root@Client ~]# chown -R rsync.rsync /backup

配置密码文件

[root@Client ~]# echo "rsync_backup:rsync.conf">>/etc/rsync.password

[root@Client ~]# cat /etc/rsync.password

rsync_backup:rsync.conf

改变密码文件权限

[root@Client ~]# chmod 600 /etc/rsync.password

[root@Client ~]# ls -ld /etc/rsync.password

-rw-------. 1 root root 24 Sep  9 13:06 /etc/rsync.password

格式化文件

[root@Client ~]# dos2unix /etc/rsyncd.conf

dos2unix: converting file /etc/rsyncd.conf to UNIX format ...

开启服务后台运行

[root@Client ~]# rsync --daemon

[root@Client ~]# netstat -lntup|grep rsync

tcp 0 0 0.0.0.0:873 0.0.0.0:*  LISTEN   2002/rsync

tcp 0 0 :::873 :::*       LISTEN   2002/rsync

五:主服务器上配置密码文件

[root@Master ~]# echo "rsync.conf">>/etc/rsync.password

[root@Master ~]# cat /etc/rsync.password

rsync.conf

[root@Master ~]# chmod 600 /etc/rsync.password

[root@Master ~]# ls -ld /etc/rsync.password

-rw-------. 1 root root 11 Sep  8 06:25 /etc/rsync.password

六:测试手工同步

[root@Master /]# rsync -avzP /etc/hosts rsync_backup@192.168.1.3::rsync --password-file=/etc/rsync.password

sending incremental file list

hosts

158 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/1)

sent 120 bytes  received 27 bytes  26.73 bytes/sec

total size is 158  speedup is 1.07

[root@Master /]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

[root@Client ~]# cat /backup/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

经过对比两边数据一致,表明同步成功,手工同步成功之后,然后再进行后面的配置

七:安装sersync服务

首先下载好安装软件

sersync_64bit_binary_stable_final.tar.gz

[root@Master tools]# tar -zxvf sersync_64bit_binary_stable_final.tar.gz -C

/usr/local/

GNU-Linux-x86/

GNU-Linux-x86/sersync2

GNU-Linux-x86/confxml.xml

[root@Master tools]# cd /usr/local/

[root@Master local]# ls

bin  games   include  lib64    sbin   src

etc  GNU-Linux-x86  lib   libexec  share

GNU-Linux-x86就是sersync安装软件,为了方便将它改名

[root@Master local]# mv GNU-Linux-x86 sersync

为了后续方便管理,创建几个目录用于存放各类文件

[root@Master sersync]# mkdir -p conf bin logs

[root@Master sersync]# mv confxml.xml conf

[root@Master sersync]# ls

bin  conf  logs  sersync2

[root@Master sersync]# cd conf

[root@Master conf]# ls

confxml.xml

在配置配置文件之前备份

[root@Master conf]# cp confxml.xml confxml.xml.$(date +%F)

[root@Master conf]# ls

confxml.xml  confxml.xml.2016-09-08

修改配置文件内容(confxml.xml)

1、修改24-28行

<localpath watch="/opt/tongbu">

<remote ip="127.0.0.1" name="tongbu1"/>

<!--<remote ip="192.168.8.39" name="tongbu"/>-->注释内容

<!--<remote ip="192.168.8.40" name="tongbu"/>-->注释内容

</localpath>

修改后的内容为

<localpath watch="/opt/backup"> 本地数据的路径

<remote ip="192.168.1.3" name="rsync"/>远端IP与模块名称

</localpath>

<!#################################### -->注释内容

2、修改31-34行内容——认证

<commonParams params="-artuz"/>

<auth start="false" users="root" passwordfile="/etc/rsync.pas"/>

<userDefinedPort start="false" port="874"/><!-- port=874 -->

<timeout start="false" time="100"/><!-- timeout=100 -->

<ssh start="false"/>

修改后的内容为

<commonParams params="-aruz"/>

<auth start="true" users="rsync_backup"  passwordfile="/etc/rsync.password"/>

<userDefinedPort start="false" port="874"/><!-- port=874 -->

<timeout start="true" time="100"/><!-- timeout=100 -->

<ssh start="false"/>

3、修改36-37行

<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default

every 60mins execute once-->

修改成我们刚刚创建好的logs目录

<failLog path="/usr/local/sersync/logs/rsync_fail_log.sh" timeToExecut

e="60"/><!--default every 60mins execute once-->

修改完成后最终的配置文件如下

[root@Master conf]# cat /usr/local/sersync/conf/confxml.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<head version="2.5">

<host hostip="localhost" port="8008"></host>

<debug start="false"/>

<fileSystem xfs="false"/>

<filter start="false">

<exclude expression="(.*)\.svn"></exclude>

<exclude expression="(.*)\.gz"></exclude>

<exclude expression="^info/*"></exclude>

<exclude expression="^static/*"></exclude>

</filter>

<inotify>

<delete start="true"/>

<createFolder start="true"/>

<createFile start="false"/>

<closeWrite start="true"/>

<moveFrom start="true"/>

<moveTo start="true"/>

<attrib start="false"/>

<modify start="false"/>

</inotify>

<sersync>

<localpath watch="/opt/backup">

<remote ip="192.168.1.3" name="rsync"/>

</localpath>

<!#################################### -->

<rsync>

<commonParams params="-aruz"/>

<auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>

<userDefinedPort start="false" port="874"/><!-- port=874 -->

<timeout start="true" time="100"/><!-- timeout=100 -->

<ssh start="false"/>

</rsync>

<failLog path="/usr/local/sersync/logs/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>

八:开启sersync守护进程

首先配置全局环境变量,使得后同可以直接调用sersync命令

[root@Master conf]# echo 'export PATH=$PATH:/usr/local/sersync/bin'>>/etc/profile

[root@Master conf]# tail -1 /etc/profile

export PATH=$PATH:/usr/local/sersync/bin

[root@Master conf]# source /etc/profile

[root@Master conf]# which sersync

/usr/local/sersync/bin/sersync

启动sersync服务

serync -r -d -o /usr/local/sersync/conf/confxml.xml

-r初始化数据

-d后台启动

-o指定路径

如果需要将命令开启动,只需将命令去掉参数-r定入/etc/rc.local

启动后结果如下

[root@Master backup]# sersync -r -d -o /usr/local/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: -r rsync all the local files to the remote servers before the sersync work

option: -d    run as a daemon

option: -o    config xml name:  /usr/local/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_backup

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 /opt/backup && rsync -aruz -R --delete ./  --timeout=100 rsync_backup@192.168.1.3::rsync --password-file=/etc/rsync.password >/dev/null 2>&1

run the sersync:

watch path is: /opt/backup

九:测试数据同步

[root@Master sersync]# cd /opt/backup/

[root@Master backup]# ls

[root@Master backup]# ls -ll

total 0

[root@Master backup]# touch 123

[root@Master backup]# touch 1234

[root@Master backup]# touch 1235

[root@Master backup]# touch 12333

[root@Master backup]# ls -ll

total 0

-rw-r--r--. 1 root root 0 Sep  8 09:26 123

-rw-r--r--. 1 root root 0 Sep  8 09:26 12333

-rw-r--r--. 1 root root 0 Sep  8 09:26 1234

-rw-r--r--. 1 root root 0 Sep  8 09:26 1235

目标服务器查看同步情况

[root@Client backup]# ls -ll

total 0

-rw-r--r--. 1 rsync rsync 0 Sep  8 04:26 123

-rw-r--r--. 1 rsync rsync 0 Sep  8 04:26 12333

-rw-r--r--. 1 rsync rsync 0 Sep  8 04:26 1234

-rw-r--r--. 1 rsync rsync 0 Sep  8 04:26 1235

测试结果表明数据同步正常,能够实时同步

(转)Linux系统sersync数据实时同步的更多相关文章

  1. Linux之sersync数据实时同步

    sersync其实是利用inotify和rsync两种软件技术来实现数据实时同步功能的,inotify是用于监听sersync所在服务器上的文件变化,结合rsync软件来进行数据同步,将数据实时同步给 ...

  2. Rsync+Sersync数据实时同步(双向)

    Rsync+Sersync数据实时同步(双向) 服务介绍 一.为什么要用rsync+sersync架构? 1.sersync是基于inotify开发的,类似于inotify-tools的工具 2.se ...

  3. Linux下Rsync+sersync实现数据实时同步

    inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一. ...

  4. Rsync+sersync实现数据实时同步

    前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增 ...

  5. Linux下Rsync+Inotify-tools实现数据实时同步

    Linux下Rsync+Inotify-tools实现数据实时同步 注意:下面的三个案例都是rsync 每次都是全量的同步(这就坑爹了),而且 file列表是循环形式触发rsync ,等于有10个文件 ...

  6. CentOS7下Rsync+sersync实现数据实时同步

    近期公司要上线新项目,后台框架选型我选择当前较为流行的laravel,运行环境使用lnmp. 之前我这边项目tp32+apache,开发工具使用phpstorm. 新建/编辑文件通过phpstorm配 ...

  7. 项目实战:rsync+sersync实现数据实时同步

    一.组网介绍 本次实验使用两台主机: qll251 角色:Rsync server + Sersync server qll252 角色: Rsync client 本次实验采用CentOS7.7系统 ...

  8. sersync实现数据实时同步

    1.1 第一个里程碑:安装sersync软件 1.1.1 将软件上传到服务器当中并解压 1.上传软件到服务器上 rz -E 为了便于管理上传位置统一设置为 /server/tools 中 2.解压软件 ...

  9. sersync基于rsync+inotify实现数据实时同步

    一.环境描述 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 主服务器A:192.168.1.23 从服务器B:192. ...

随机推荐

  1. CMake使用技巧

    前面有提到使用CMake.很多朋友提到也用过一下,没感觉它有什么好用,不知道怎么用之类. 我必要来说明一下. CMake的语法比较差,不是很优美,不是它不能用一个更好的语法,而是有一个关键优势:简单. ...

  2. linux版本信息以及x86与x86_64的区别

    一 x86.x86_64.AMD64 x86是指intel的开发的一种32位指令集,从386开始时代开始的,一直沿用至今,是一种cisc指令集,所有intel早期的cpu,amd早期的cpu都支持这种 ...

  3. 认识学习MVC这家伙

    通过最近的学习认识,只能感慨这玩意太强大了! 以前看了一些MVC的入门教程,看入门教程我感觉不能去体会它的强大,可以看看它的扩展点,通过扩展点去真正的试着了解它,体会它的强大. 它的验证.模型绑定提供 ...

  4. HBase优化实战

    本文来自网易云社区. 背景 Datastream一直以来在使用HBase分流日志,每天的数据量很大,日均大概在80亿条,10TB的数据.对于像Datastream这种数据量巨大.对写入要求非常高,并且 ...

  5. ecliplse启动慢的优化方法(亲测有效)

    本人使用的ecliplse IDE 版本是: Version: Photon Release (4.8.0)Build id: 20180619-1200 我的电脑配置是 Ecliplse启动差不多一 ...

  6. 201621123012 《java程序设计》第4周学习总结

    1. 本章学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 答:关键词:继承 多态 抽象类 abstract 覆盖 object siper 1.2 尝试使用思维导图将这些关键词组织起来. ...

  7. 第七篇 Python面向对象

    类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用,特征被称为属性,行为被称为方法,类就相当于制造飞机时的图纸,是一个模板,是负责创建对象的. 对象是由类创建出来的一个具体存在,可 ...

  8. React基础篇 (1)-- render&components

    render 基础用法 //1.创建虚拟DOM元素对象 var vDom=<h1>hello wold!</h1> //2.渲染 ReactDOM.render(vDom,do ...

  9. react.js学习之路三

    学习react.js,知识点整理: 1.props和state: props是相对于父级来说,固定的不会改变的内容.一般会先定义一个变量,则在父级中进行引用, var user = "liu ...

  10. loj #2255. 「SNOI2017」炸弹

    #2255. 「SNOI2017」炸弹 题目描述 在一条直线上有 NNN 个炸弹,每个炸弹的坐标是 XiX_iX​i​​,爆炸半径是 RiR_iR​i​​,当一个炸弹爆炸时,如果另一个炸弹所在位置 X ...