sersync+rsync实时同步备份部署流程

sersync+rsync实时同步备份部署流程

第一个里程:下载sersync应用软件

下载地址:https://github.com/wsgzao/sersync
将软件上传到服务器
#解压软件,并把解压好的文件放到本地的安装目录中
[root@nfs01 data]# cd /tools/
[root@nfs01 tools]# unzip sersync-master.zip
[root@nfs01 tools]# cd sersync-master
[root@nfs01 sersync-master]# tar zxf sersync2.5.4_64bit_binary_stable_final.tar.gz 
[root@nfs01 sersync-master]# mv GNU-Linux-x86/ /usr/local/sersync

第二个里程:安装rsync服务

部署服务端:
1.检查是否安装rsync服务
rpm -qa |grep rsync
2.编写主配置文件
vim /etc/rsyncd.conf
#全局配置,在全局生效
uid = rsync -->指定rsync服务运行的时候,向磁盘读取和写入的操作者
gid = rsync -->指定rsync服务运行的时候,向磁盘读取和写入的操作者
use chroot = no -->进行数据同步存储时,安全相关参数,默认内网进行数据同步时,可以关闭
max connections = 200 --> 定义向备份服务器进行数据存储的并发连接数
timeout = 300 --> 定义与备份服务器建立的网络连接,在多长时间没有数据传输时,就释放连接
pid file = /var/run/rsyncd.pid --> 服务程序运行时,会将进程的pid信息存储到一个指定的pid文件中
lock file = /var/run/rsync.lock --> 定义锁文件,主要用于配合max connections 参数,当达到最大连接就禁止继续访问
log file = /var/log/rsyncd.log --> 定义服务的日志文件保存路径信息
ignore errors --> 在进行数据备份传输过程过程中,忽略一些I/O产生的传输错误
read only = false --> 设置对备份的目录的具有读写权限,即将只读模式进行关闭
list = false --> 确认是否可以将服务配置的模块信息,在客户端可以查看显示
hosts allow = 172.16.1.0/24 --> 设置备份目录允许进行网络数据备份的主机地址或网段信息,即设置白名单
hosts deny = 0.0.0.0/32 --> 设置备份目录禁止进行网络数据备份的主机地址或网段信息,即设置黑名单
auth users = rsync_backup --> 指定访问备份数据目录的认证用户信息,为虚拟定义的用户,不需要进行创建
secrets file = /etc/rsync.password --> 设置访问备份数据目录进行认证用户的密码文件信息,会在文件中设置认证用户密码信息
#局部配置,只在模块内生效
[backup] --> 指定备份目录的模块名称信息
comment = "backup dir by oldboy" --> 模块说明信息
path = /backup --> 指定数据进行备份的目录信息
3.创建备份管理用户
useradd -M -s /sbin/nologin rsync
4.创建备份目录,并将所属主与所属组改成rsync用户
mkdir /backup
chown rsync. /backup
5.创建用户认证文件,编写认证用户和密码信息,设置文件权限为600
echo 'rsync_backup:123' >> /etc/rsync.password
chmod 600 /etc/rsync.password
6.启动rsync守护进程服务
rsync --daemon
部署客户端:
1.检查是否安装rsync服务
rpm -qa |grep rsync
2.创建认证文件,编写认证用户密码,设置文件权限为600
echo '123' >> /etc/rsync.password
chmod 600 /etc/rsync.password
3.利用客户端进行数据同步测试
[root@nfs01 /]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::back
up --password-file=/etc/rsync.password sending incremental file list
hosts

第三个里程:修改配置文件

[root@nfs01 sersync-master]# vim /usr/local/sersync/confxml.xml 
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
     <host hostip="localhost" port="8008"></host>
     <debug start="true"/>
     <fileSystem xfs="false"/>
    <!-- 说明:实现同步数据过滤排除功能 -->
     <filter start="false">
     <exclude expression="(.*)\.svn"></exclude>
    <exclude expression="(.*)\.gz"></exclude>
    <exclude expression="^info/*"></exclude>
    <exclude expression="^static/*"></exclude>
     </filter>
    <!-- 说明:类似于inotify的-e参数功能,指定监控的事件信息 -->
     <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="/data"> <!-- 这里填写服务器A要同步的文件夹路径-->
     <remote ip="172.16.1.41" name="backup"/> <!-- 这里填写备份服务器的IP地址和模块名-->
     <!--<remote ip="192.168.28.39" name="tongbu"/>-->
     <!--<remote ip="192.168.28.40" name="tongbu"/>-->
     </localpath>
     <rsync>
     <commonParams params="-az"/>
     <auth start="true" users="rsync_backup" passwordfile="/app/local/sersync/user.password"/> <!-- 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="/home/demo">
     <deshost ip="210.36.158.xxx" port="8009"/>
     </localpath>
     </plugin>
     <plugin name="refreshCDN">
     <localpath watch="/data0/htdocs/cdn.markdream.com/site/">
     <cdninfo domainname="cdn.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
     <sendurl base="http://cdn.markdream.com/cms"/>
     <regexurl regex="false" match="cdn.markdream.com/site([/a-zA-Z0-9]*).cdn.markdream.com/images"/>
     </localpath>
     </plugin>
</head>

第四个里程:启动sersync服务,并进行测试

[root@nfs01 sersync-master]# /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml
#存储服务器
[root@nfs01 sersync-master]# cd /data
[root@nfs01 data]# ls |wc -l
101
[root@nfs01 data]# rm -rf *
[root@nfs01 data]# ls |wc -l
0
#备份服务器
[root@backup backup]# ls |wc -l
101
[root@backup backup]# ls |wc -l
101
[root@backup backup]# ls |wc -l
0
sersync启动参数说明
参数-d:启用守护进程模式
参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍(测试)
参数-n:指定开启守护线程的数量,默认为10个
参数-o:指定配置文件,默认使用confxml.xml文件
posted @ 2019-03-11 09:34  游走在边缘的人  阅读(488)  评论(0编辑  收藏  举报