通过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