sersync 对网站数据实时同步备份

2021-01-06  本文已影响0人  相信奇迹德人

sersync 实现实时同步数据

1 sersync实时同步原理

image-20210104163102063.png
  1. rsync守护进程服务,实现数据传输
  2. inotify服务,实现目录中数据变化监控
  3. 将rsync服务和inotify服务建立联系,将变化的数据进行实时备份传输

2 实时同步服务部署

2.1 部署rsync守护进程方式

2.1.1 备份服务rsync守护进程服务
#step1  安装rsync软件
rpm -qa |grep rsync
yum install -y rsync

#step2 编写配置文件   以root身份运行rsync但保留用户所有权
vim /etc/rsyncd.conf
uid = root
gid = root
port = 873
#fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = true
hosts allow = 172.17.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = "backup dir by devops"
path = /backup

#step3  创建rsync服务的虚拟账户  上面配置使用的rsync 不创建也可以 没有测试
useradd rsync -M -s  /sbin/nologin

#step4  配置rsync的认证信息
ehco "rsync_backup:1" >/etc/rsync.password
chmod 600 /etc/rsync.password

#step5  创建备份目录 属主属组默认是root 所有不需要修改
mkdir /backup

#step6 启动服务
systemctl start rsyncd
systemctl enable rsyncd
systemctl status rsyncd
2.1.2 存储服务器即 rsync客户端配置
#step1  安装rsync软件
rpm -qa |grep rsync
yum install -y rsync

#配置下密码文件,这个密码是存储服务器rsync认证信息中的密码
echo "1" > /etc/rsync.pas

2.2 存储服务器部署inotify监控服务

2.2.1 安装inotify软件
yum -y install inotify-tools
2.2.2 inotify 软件的命令的使用
rpm -ql inotify-tools
[root@ data]# rpm -ql inotify-tools
/usr/bin/inotifywait
/usr/bin/inotifywatch

inotifywait命令使用方法

Usage: inotifywatch [ options ] file1 [ file2 ] [ ... ]

    -m|--monitor   --------------- 实现一直监控目录的数据变化
     -r|--recursive ----------------- 进行递归监控
     -q|--quiet     ------------------- 尽量减少信息的输出
     --format <fmt> -------------- 指定输出信息的格式 
     --timefmt      ------------------- 指定输出的时间信息格式 
     -e|--event     ------------------  指定监控的事件信息

创建文件监控信息输出
/data/ CREATE test --- 一个文件被创建
/data/ OPEN test --- 打开创建的文件
/data/ ATTRIB test --- 修改文件的属性信息
/data/ CLOSE_WRITE,CLOSE test --- 保存关闭一个文件

sed 命令修改文件原理

#一屏打开执行sed修改文件
[root@ www]# sed -i 's#b#a#g' test 
#一屏监控文件变化 
[root@ data]# inotifywait -m /data/www
Setting up watches.
Watches established.
/data/www/ OPEN test                --------------- 打开test文件
/data/www/ CREATE sedBw5yaY         --------------- 创建一个临时文件(内存)
/data/www/ OPEN sedBw5yaY           --------------- 打开临时文件
/data/www/ ACCESS test              --------------- 读取源文件
/data/www/ MODIFY sedBw5yaY         --------------- 修改临时文件
/data/www/ ATTRIB sedBw5yaY         --------------- 修改临时文件属性变化
/data/www/ CLOSE_NOWRITE,CLOSE test --------------- 不编辑直接关闭源文件
/data/www/ CLOSE_WRITE,CLOSE sedBw5yaY ------------ 写入关闭临时文件
/data/www/ MOVED_FROM sedBw5yaY     --------------- 将临时文件 移除 
/data/www/ MOVED_TO test            --------------- 移入一个新的test源文件

inotify监控命令格式:

 inotifywait -mrq --timefmt "%F" --format "%T %w %f 事件信息:%e" /data -e CREATE

一般监控 create创建,delete删除,move_to移入,close_write修改

2.2.3 inotify应用
需要用到inotify进行实时一直监控 /etc passwd  /var/spool/cron/root

2.3 存储服务器部署sersync同步服务

2.3.1 安装sersync
#step1  下载sersync 并解压   此项目github地址 https://github.com/wsgzao/sersync

mkdir /server/tools
cd /server/tools
wget https://codeload.github.com/wsgzao/sersync/zip/master
yum -y install unzip
unzip master
cd sersync-master
tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz 
#安装解压好的二进制程序
mv GNU-Linux-x86 /usr/local/sersync
2.3.2 编写配置文件
<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程序需要监控的事件--->
    <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/www">
        <!---修改rsync服务端的ip和rsync服务端的模块信息--->
            <remote ip="172.17.1.104" name="backup"/>
            <!--<remote ip="192.168.8.39" name="tongbu"/>-->
            <!--<remote ip="192.168.8.40" name="tongbu"/>-->
        </localpath>
        <rsync>
        <!---修改rsync参数--->
            <commonParams params="-az"/>
               <!---修改远程rsync服务端的认证信息--->
            <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.pas"/>
            <!---修改端口信息默认是873--->
            <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="/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>

2.3.3 启动实时同步服务

/usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml 
上一篇下一篇

猜你喜欢

热点阅读