数据文件实时同步(rsync + sersync2)

因近期项目需求,需要同步云端服务器的数据给**方做大数据分析.

思路:

起初只要数据同步,准备开放数据采集接口.但实时性较差,会有延迟。

故而寻觅各种解决方案,最终确定使用 rsync 进行文件同步,otter(阿里的开源工具) 进行数据库同步

最终使用成功,同步效果显著!

本文先只介绍 rsync 的文件同步,otter 会在其他文章分享

一、简介

网上简介一堆,不过都写的很官方,下面的介绍是我自己使用后的感受。

sersync 用于监控目录后调用 rsync 同步命令,进行文件传输! 可以监控目标目录文件的 增、删、改

rsync 镜像备份工具,可以快速实现文件同步,文件同步的核心! 支持本地复制,或者与其他SSH、rsync主机同步。

环境说明:

系统环境:centos7

数据库版本:mysql 5.7

目的:将源服务器文件、数据实时同步到备份服务器

安装策略

1、目标服务器安装 rsync 服务,设置传输项目名、用户名、密码、端口
2、源服务器安装 rsync ,测试传输命令
3、源服务器安装 sersync ,配置监控目录

源服务器无需配置,只需写入一个密码文件,用于 rsync 命令的执行使用

目标服务器配置如下:

# 端口
port=873

# 安全防护
use chroot = yes

# 最大并发数
max connections = 36000 

# rsync 的守护进程将其 PID 写入指定的文件。
pid file=/var/run/rsyncd.pid 

# 指定支持 max connections 参数的锁文件。
lock file=/var/run/rsync.lock 

# 指定 rsync 守护进程的日志文件,而不将日志发送给 syslog。
log file=/var/log/rsyncd.log 

# 任务名称
[taskName] 

# 存储路径 (需要手动创建,无目录会报错)
path=/data/Vehicle/image/ 

# 指定是否允许客户上传文件。若为 true 则不允许上传;若为 false 并且服务器目录也具有读写权限则允许上传。
read only=false 

# 指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为 false,可以创建隐藏的模块。
list=yes 

# 用户名
auth users= 用户名 

# 密码文件
secrets file=/etc/rsync.passwd 

# 用一个主机列表指定哪些主机客户允许连接该模块。不匹配主机列表的主机将被拒绝
hosts allow=*
    

关于密码文件

如 /etc/rsync.passwd

源服务器:

密码

目标服务器:

用户名:密码

密码文件的执行权限必须为 600,不然服务无法启动

修改权限命令:

chmod 600 /etc/rsync.passwd  

rsync 传输命令

安装好上述服务,并开启目标服务器的 rsync 服务后,就可以测试文件的同步了

rsync同步命令如下:

rsync -avzP --delete 传输目录 用户名@目标服务器ip::任务名称 --password-file = 密码文件地址

-v 显示指令执行过程

-z 对备份的文件在传输时进行压缩处理

-P 保留源文件或目录的属性。

--delete 删除传送端已经不存在,而目的端存在的档案

上述测试成功后,就可以正常的传输目录到目标服务器了,接下来只需安装 sersync2 服务来监控想要传输的目录变化,就可以实现实时同步

关于下载,没有官网,我是在CSDN上找的,各位加油吧

配置文件如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5"> # 设置本地IP和端口
    <host hostip="localhost" port="8008"></host>
    # 开启DUBUG模式
    <debug start="true"/>
    # 开启xfs文件系统
    <fileSystem xfs="true"/>
        # 同步时忽略推送的文件(正则表达式),默认关闭
        <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="监控目录地址">
        # 远程IP和rsync模块名
        <remote ip="目标服务器ip" name="任务名称"/>
    </localpath>
    <rsync>
        # rsync指令参数
        <commonParams params="-auvzP"/>
        # rsync同步认证
        <auth start="true" users="用户名" passwordfile="密码文件路径"/>
        # 设置rsync远程服务端口,远程非默认端口则需打开自定义
        <userDefinedPort start="true" port="目标rsync服务端口"/>
        # 设置超时时间
        <timeout start="true" time="1000"/>
        # 设置rsync+ssh加密传输模式,默认关闭,开启需设置SSH加密证书
        <ssh start="false"/>
    </rsync>
    # sersync传输失败日志脚本路径,每隔60会重新执行该脚本,执行完毕会自动清空。
    <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/>
    # 设置rsync+crontab定时传输,默认关闭
    <crontab start="false" schedule="600">
    <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"/>
        <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>

sersync 启动命令

进入 sersync安装目录
./sersync -d -r -o confxml.xml

本文没有详细介绍下载安装过程,主要用于介绍配置参数!方便日后回忆.

见谅!

原文地址:https://www.cnblogs.com/xuzhengyao/p/9810034.html

时间: 2024-08-26 18:32:10

数据文件实时同步(rsync + sersync2)的相关文章

sersync2+rsync目录文件实时同步备份

说明: 192.168.1.2(sersync+rsync)---------------FTP 192.168.1.3(rsync)--------------------------backup 实验目的: 实时自动同步:192.168.1.2 ------->192.168.1.3到目录:/data/ftpdata ; 764  viconfxml.xml 765  ./GNU-Linux-x86/sersync2 -d -r confxml.xml 767  ./GNU-Linux-x8

rsync+inotify 实现服务器之间目录文件实时同步(转)

软件简介: 1.rsync 与传统的 cp. tar 备份方式相比,rsync 具有安全性高.备份迅速.支持增量备份等优点,通过 rsync 可 以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定 期做数据镜像等. 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync 在高端业务系统中 也逐渐暴露出了很多不足,首先,rsync 同步数据时,需要扫描所有文件后进行比对,进行差量传输.如 果文件数量达到了百万甚至千万量级,扫描所有

Rsync+inotify实现文件实时同步

数据备份.文件备份是运维.DBA等岗位最熟悉不过的话题,这里不介绍数据库的备份,简单介绍一下文件同步工具,这样的工具有很多,Windows环境下有Goodsync.FreeFileSync等,Linux下rsync.unison等,常用的实时同步,是几种工具的组合,经过组合的工具达到文件实时同步的效果. 一.常用实时同步方案 1.NFS网络文件系统 该方案是分布式架构中,解决不同节点对同一资源访问的问题,搭建NFS服务器,将其挂载在不同的节点,每个节点将公用的数据存储在NFS服务器上,实现文件的

Centos 6.5 rsync+inotify 两台服务器文件实时同步

rsync和inotify是什么我这里就不在介绍了,有专门的文章介绍这两个工具. 1.两台服务器IP地址分别为: 源服务器:192.168.1.2 目标服务器:192.168.1.3 @todo:从源服务器(192.168.1.2)的/www/目录下的所有的文件实时同步到目标服务器(192.168.1.3)的/www_bak/目录下 源服务器下需要安装rsync和inotify,源服务器做为server端,实时的向目标服务器client端发送数据 2.安装 rsync 一般centos6.5下都

rsync+inotify实现服务器之间文件实时同步

1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等. 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的.而且正在发生变化

rsync+inotify实现服务器之间文件实时同步--转

之前做了“ssh信任与scp自动传输脚本”的技术文档,此方案是作为公司里备份的方法,但在实际的运行中,由于主服务器在给备份服务器传输的时候,我们的主服务器需要备份的文件是实时.不停的产生的,造成不知道主服务器给备份服务器传输了多少文件,磁盘空间就那么大,做备份的原因:一个是为了保持文件,另外一个是解决主服务器的磁盘饱满问题,但由于不知道备份服务器到底接收了多少文件,所以主服务器里的文件不敢删除(如果没有备份的情况下删除,问题就严重了,我这个是政府的项目,服务器里的文件都是重要的,删错了就走人~~

rsync+inotify 实现服务器文件实时同步

rsync+inotify 实现服务器文件实时同步 操作系统:CentOS 6.X 源服务器:192.168.80.132 目标服务器:192.168.80.128 目的:把源服务器上/data/app目录实时同步到目标服务器的/data/app下 具体操作: 第一部分:在目标服务器192.168.80.128上操作 一.在目标服务器安装Rsync服务端 1.关闭SELINUX vi /etc/selinux/config #SELINUX=enforcing #SELINUXTYPE=targ

inotify用法简介及结合rsync实现主机间的文件实时同步

一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系统的变化如文件修改.新增.删除 等,并可以将相应的事件通知给应用程序.该机制由著名的桌面搜索引擎项目beagle引入用于替代此前具有类似功能但存在诸多缺陷的dnotify. inotify既可以监控文件,也可以监控目录.当监控目录时,它可以同时监控目录及目录中的各子目录及文件的.此外,inotify

【linux教程】inotify用法简介及结合rsync实现主机间的文件实时同步

一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系统的变化如文件修改.新增.删除等,并可以将相应的事件通知给应用程序.该机制由著名的桌面搜索引擎项目beagle引入用于替代此前具有类似功能但存在诸多缺陷的dnotify. inotify既可以监控文件,也可以监控目录.当监控目录时,它可以同时监控目录及目录中的各子目录及文件的.此外,inotify