封尘网

让学习成为一种习惯!

Sersync实时同步多实例到多台服务器

通过sersync实现多台服务器的数据定时备份到备份服务器,利用脚本加上crond定时器即可实现,效率也不错;能够方便的解决数据误删等问题;

安装环境准备

系统资源列表

角色 服务器配置 操作系统版本 IP 机器名

Sersync        VM    Centos 6.5| 2.6.32-431.el6.x86_64    192.168.137.50    M-server
rsync服务1    VM    Centos 6.5| 2.6.32-431.el6.x86_64    192.168.137.20    s1-server
rsync服务2    VM    Centos 6.5| 2.6.32-431.el6.x86_64    192.168.137.21    s2-server

检查系统环境:三台服务器都是一样的系统版本。

[root@S1-server ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)

内核版本
[root@S1-server ~]# uname -r
2.6.32-431.el6.x86_64

部署rsync服务(以下操作在S1、S2主机上配置)

#rsync_config____________________________start
#created by swper
uid = root
gid = root
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/run/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 192.168.137.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
####################################
[www]
comment = www by swper
path = /data0/www/www/
####################################
[bbs]
comment = bbs by swper
path = /data0/www/bbs/
####################################
[blog]
comment = mysql by swper
path = /data0/www/blog/
####################################
#rsync_config------------------------------end
EOF

配置密码文件:

echo "rsync_backup:123456" >/etc/rsync.password

并更改权限:

chmod 600 /etc/rsync.password

启动rsync服务:

[root@S2-server ~]# rsync --daemon

检查状态:可以查看端口或服务

[root@S2-server ~]# netstat -lnt|grep 873
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN
tcp        0      0 :::873                      :::*                        LISTEN

或者lsof -i:873

[root@S2-server ~]# lsof -i:873
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsync   3253 root    3u  IPv4  38299      0t0  TCP *:rsync (LISTEN)
rsync   3253 root    5u  IPv6  38300      0t0  TCP *:rsync (LISTEN)

把启动添加到rc.local里,开机启动。

[root@S2-server ~]# echo "/usr/local/bin/rsync --daemon" >>/etc/rc.local

到此S1、S2主机上的rsync配置完成了!

Master主机配置rsync同步情况

创建密码保存文件,这里只要密码:

[root@M-server ~]# echo "123456" >/etc/rsync.password

创建目录和等同步的文件:

[root@M-server ~]# mkdir -p /data0/www/www/ /data0/www/bbs/ /data0/www/blog/
[root@M-server ~]# rsync -avzP /data0/www/www/ rsync_backup@192.168.137.20::www/ --password-file=/etc/rsync.password

测试是可以正常同步的。

安装sersync

下载安装包:

https://code.google.com/p/sersync/downloads/detail?name=sersync2.5.4_64bit_binary_stable_final.tar.gz

解压安装

[root@M-server ~]# tar zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/
[root@M-server ~]# cd /usr/local/
[root@M-server local]# ls
bin  etc  games  GNU-Linux-x86  include  lib  lib64  libexec  sbin  share  src

看到GNU-Linux-x86就是刚才解压出来的文件,把它改名:

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

以下操作是让操作更规范化:

[root@M-server local]# cd sersync/
[root@M-server sersync]# mkdir conf bin logs
[root@M-server sersync]# mv confxml.xml conf
[root@M-server sersync]# mv sersync2 bin/sersync

配置sersync,先备份

[root@M-server sersync]# cp conf/confxml.xml conf/confxml.xml.$(date +%F%T)
[root@M-server sersync]# ls conf/
confxml.xml  confxml.xml.2015-09-2600:07:42
[root@M-server sersync]# cp conf/confxml.xml conf/www_confxml.xml
[root@M-server sersync]# cp conf/confxml.xml conf/bbs_confxml.xml
[root@M-server sersync]# cp conf/confxml.xml conf/blog_confxml.xml
[root@M-server sersync]# vim conf/www_confxml.xml

由于三个配置文件修改差不多就不一一列出。

原配置文件的24-28行

24         <localpath watch="/opt/tongbu">
25             <remote ip="127.0.0.1" name="tongbu1"/>
26             <!--<remote ip="192.168.8.39" name="tongbu"/>-->
27             <!--<remote ip="192.168.8.40" name="tongbu"/>-->
28         </localpath>

修改为:

<localpath watch="/data0/www/www/">
        <remote ip="192.168.137.20" name="www"/>
        <remote ip="192.168.137.21" name="www"/>
</localpath>

提示:此步watch=”/data0/www/www” 就是定义服务端待定同步的目录,和目标服务器的模块name= “www”。

接下来rsync认证部分:


39         <rsync>
40             <commonParams params="-artuz"/>
41             <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
42             <userDefinedPort start="false" port="874"/><!-- port=874 -->
43             <timeout start="false" time="100"/><!-- timeout=100 -->
44             <ssh start="false"/>
45         </rsync>

修改为:

    <rsync>
        <commonParams params="-artuz"/>
        <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>

提示:细心就会发现,此配置就是在拼接rsync -avzP —timeout=100 /data0/www/www/ rsync_back@192.168.137.20::www/ —password-file=/etc/rsync.password 这个同步命令。

修改失败队列的定时任务和LOG日志存放路径;

46         <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60 mins execute once-->

修改为我们上面规范后的目录:/usr/local/sersync/logs/

<failLog path="/usr/local/sersync/logs/www_rsync_fail_log.sh" timeToExecute="60"/><!--default every 60 mins execute once-->

这里说明一下:不同步失败后,日志记录到/usr/local/sersync/logs/rsync_fail_log.sh下,并且每60分钟对失败的log进行重新同步。

到此配置文件已经修改完成。

开启sersync守护进程来同步数据

配置sersync环境变量

[root@M-server sersync]# echo 'export PATH=$PATH:/usr/local/sersync/bin' >>/etc/profile
[root@M-server sersync]# tail -1 /etc/profile
export PATH=$PATH:/usr/local/sersync/bin
[root@M-server sersync]# source /etc/profile

[root@M-server sersync]# which sersync
/usr/local/sersync/bin/sersync

启动命令:

[root@M-server sersync]# sersync -r -d -o /usr/local/sersync/conf/confxml.xml

参数说明:-r :同步前初始化两端数据保持数据一致
-d :后台启动,守护进程同步
-o: 指定配置文件

往目录下添加一个文件做测试:

[root@M-server www]# for n in `ls`;do echo 111111111111 >$n/$n.txt;done

提醒:本文最后更新于 2919 天前,文中所描述的信息可能已发生改变,请谨慎使用。