zoukankan      html  css  js  c++  java
  • [sersync+rsync] centos6.5 远程文件同步部署记录

    针对本地文件的修改,自动同步到远程文件夹,远程备份很方面。研究了下大家的主流同步方案一般是
    rsync+inotify和rsync+sersync, 我这里使用sersync的方案,当然大部分都是参照前人经验,感谢他们的无私。

    概述

    我这里的目的是为了远程同步mysql的备份文件,centos6.5 同步到另一台centos主机

    使用rsync+sersync做实时同步时,用于推送文件 的服务器运行sersync服务,用于接收文件的服务器则运行rsync守护进程,简单来说就是sersync会利用rsync命令将文件推送到 rsync服务器,实际线上使用一般会把sersync作为主服务器,rsync作为镜像服务器,实现数据同步备份,web镜像等功能

    所以两台机器都需要rsync, 然后有对应的写数据权限。

    准备

    • 操作系统 centos6.5 x86
    • rsync yum源
    • sersync2.5_64bit
    • 推送源A 114.110.1.38 (ip均为实验伪造)
    • 接收机B 114.110.1.37

    把A机器上的一个目录下文件的变化同步到B机器上,两边文件保持一致。
    接收机B selinuxiptables自行设置好,rsync的端口两边要配置一致,默认是873

    操作

    接收机

    1、 查看rsync是否安装

    [root@i-nzwxivja xjmysql]# rpm -aq|grep rsync
    rsync-3.0.6-4.el5_7.1

    如果没有安装 yum install -y rsync 就行了

    2、 rsync配置

    [root@i-nzwxivja xjmysql]# cat /etc/rsyncd.conf
    uid = root
    gid = root
    use chroot =no
    list = no
    log file = /var/log/rsyncd.log
    [rsyncmysql]
    path=/data/backup/xjmysql
    comment=rsyncmysql
    ignore errors
    read only=no
    list=no
    max connections=200
    timeout=600
    auth users=rsync
    secrets file=/etc/rsync.pas
    hosts allow=*
    #host deny=0.0.0.0/0
    • secrets file 这个是配置同步的密码文件的。
    • [rsynctest] 这个是配置同步模块的名称,后面会用
    • path 是配置同步的目录
    • hosts allow 是允许同步的主机 这里是测试就没有限制
    • hosts deny 拒绝同步的主机

    3、 创建同步的用户与密码的文件,即上图中的secrets file这个配置选项中的文件。/etc/rsync.passwd,同进要设置这个文件的权限为600

    # echo "rsync:123456lzz" >> /etc/rsync.pas
    # chmod 600 /etc/rsync.pas

    4、 创建同步的目录:即上图中path配置选项中的目录

    # mkdir /data/backup/xjmysql

    5、 启动rsync

    # rsync  --daemon --config=/etc/rsyncd.conf
    # ps -ef|grep rsync
    root     17521     1  0 16:39 ?        00:00:00 rsync --daemon --config=/etc/rsyncd.conf
    root     17529 16947  0 16:39 pts/1    00:00:00 grep rsync

    接着重启一下xinetd使得配置生效

    # /etc/init.d/xinetd restart

    这里是通过 xinetd 服务来重启rsync,也可以不用这种方式,如果没有可以用yum直接安装

    6、 配置开机启动

    # echo "rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.d/rc.local

    推送源

    1、 先到sersync 官网的地址已经不能使用了,我从网上找了一份放到其他地址, github上的源码镜像
    我把二进制包下载也放到了上面

    # wget --no-check-certificate https://raw.githubusercontent.com/orangle/sersync/master/release/sersync2.5.4_64bit_binary_stable_final.tar.gz
    # mkdir /usr/local/sersync
    # mkdir /usr/local/sersync/conf
    # mkdir /usr/local/sersync/bin
    # mkdir /usr/local/sersync/log
    # tar zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz
    # cd GNU-Linux-x86/
    # cp confxml.xml /usr/local/sersync/conf
    # cp sersync2 /usr/local/sersync/bin

    2、 创建密码文件,同B服务器一样,不过这个文件只要保存一个密码就行了,不用用户名,权限也是600

    echo "123456lzz" >> /etc/rsync.pas
    chmod 600 /etc/rsync.pas

    3、 配置sersync,配置文件就是上第二步复制的confxml.xml这个文中,路径在/usr/local/sersync/conf中

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <head version="2.5">
       # 设置本地IP和端口
       <host hostip="localhost" port="8008"></host>
       # 开启DUBUG模式  
       <debug start="false"/>
       # 开启xfs文件系统
       <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="true"/>
           <closeWrite start="true"/>
           <moveFrom start="true"/>
           <moveTo start="true"/>
           <attrib start="true"/>
           <modify start="true"/>
       </inotify>
       <sersync>
       # 本地同步的目录路径
           <localpath watch="/home/data">
       # 远程IP和rsync模块名 
               <remote ip="114.110.1.37" name="rsyncmysql"/>  
               <!--<remote ip="192.168.8.39" name="tongbu"/>-->
               <!--<remote ip="192.168.8.40" name="tongbu"/>-->
           </localpath>
           <rsync>
       # rsync指令参数
               <commonParams params="-auvzP"/>
       # rsync同步认证
               <auth start="true" users="rsync" passwordfile="/etc/rsync.pas"/>
       # 设置rsync远程服务端口,远程非默认端口则需打开自定义
               <userDefinedPort start="false" port="873"/><!-- port=874 -->
       # 设置超时时间
               <timeout start="true" time="100"/><!-- timeout=100 -->
       # 设置rsync+ssh加密传输模式,默认关闭,开启需设置SSH加密证书
               <ssh start="false"/>
           </rsync>
        # sersync传输失败日志脚本路径,每隔60会重新执行该脚本,执行完毕会自动清空。
           <failLog path="/usr/local/sersync/log/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
        # 设置rsync+crontab定时传输,默认关闭
           <crontab start="false" schedule="600"><!--600mins-->
               <crontabfilter start="false">
                   <exclude expression="*.php"></exclude>
                   <exclude expression="info/*"></exclude>
               </crontabfilter>
           </crontab>
       # 设置sersync传输后调用name指定的插件脚本,默认关闭
           <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="xxx"/>
               <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>
    4、 创建同步目录:
    mkdir /home/data

    5、 设置环境变量:

    # echo "export PATH=$PATH:/usr/local/sersync/bin/" >> /etc/profile
    # source /etc/profile

    6、 启动sersync

    sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml
    #重启操作如下:
    # killall sersync2 && sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml

    7、 设置开机启动

    # echo "sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml" >> /etc/rc.local

    实验

    启动了sersync服务之后

    发送机

    [root@MiWiFi-R1D data]# ls /home/data/
    [root@MiWiFi-R1D data]# touch backup.sql
    [root@MiWiFi-R1D data]# ls
    backup.sql

    接收机

    [root@i-nzwxivja xjmysql]# ls /data/backup/xjmysql/
    [root@i-nzwxivja xjmysql]#
    [root@i-nzwxivja xjmysql]# ls
    backup.sql

    结论

    可以看到文件很快的就被同步到远程机器上了,实验成功。

    参考文章

    1. centos 6.3系统sersync+rsync文件同步安装配置
    2. 如何通过rsync+sersync 实现同步备份 更详细一些
  • 相关阅读:
    417 Pacific Atlantic Water Flow 太平洋大西洋水流
    416 Partition Equal Subset Sum 分割相同子集和
    415 Add Strings 字符串相加
    414 Third Maximum Number 第三大的数
    413 Arithmetic Slices 等差数列划分
    412 Fizz Buzz
    410 Split Array Largest Sum 分割数组的最大值
    409 Longest Palindrome 最长回文串
    day22 collection 模块 (顺便对比queue也学习了一下队列)
    day21 计算器作业
  • 原文地址:https://www.cnblogs.com/linuxde/p/8717478.html
Copyright © 2011-2022 走看看