数据文件实时同步(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
本文没有详细介绍下载安装过程,主要用于介绍配置参数!方便日后回忆.
见谅!
数据文件实时同步(rsync + sersync2)的更多相关文章
- rsync+sersync实现数据文件实时同步
一.简介 sersync是基于Inotify开发的,类似于Inotify-tools的工具: sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字: ...
- CentOS 7 Sersync+Rsync 实现数据文件实时同步
rsync+inotify-tools与rsync+sersync架构的区别? 1.rsync+inotify-tools inotify只能记录下被监听的目录发生了变化(增,删,改)并没有把具体是哪 ...
- Sersync+Rsync实现数据文件实时同步
rsync+inotify-tools与rsync+sersync架构的区别1,rsync+inotify-tools只能记录下被监听的目录发生的变化(增删改)并没有把具体变化的文件或目录记录下来在同 ...
- sersync+rsync实现服务器文件实时同步
sersync+rsync实现服务器文件实时同步 一.为什么要用rsync+sersync架构? 1.sersync是基于inotify开发的,类似于inotify-tools的工具 2.sersyn ...
- Centos 6.5 rsync+inotify 两台服务器文件实时同步
rsync和inotify是什么我这里就不在介绍了,有专门的文章介绍这两个工具. 1.两台服务器IP地址分别为: 源服务器:192.168.1.2 目标服务器:192.168.1.3 @todo:从源 ...
- rsync+inotify 实现服务器之间目录文件实时同步(转)
软件简介: 1.rsync 与传统的 cp. tar 备份方式相比,rsync 具有安全性高.备份迅速.支持增量备份等优点,通过 rsync 可 以解决对实时性要求不高的数据备份需求,例如定期的备份文 ...
- rsync+inotify-tools文件实时同步
rsync+inotify-tools文件实时同步案例 全量备份 Linux下Rsync+sersync实现数据实时同步完成. 增量备份 纯粹的使用rsync做单向同步时,rsync的守护进程是运行在 ...
- rsync+inotify实现服务器之间文件实时同步--转
之前做了“ssh信任与scp自动传输脚本”的技术文档,此方案是作为公司里备份的方法,但在实际的运行中,由于主服务器在给备份服务器传输的时候,我们的主服务器需要备份的文件是实时.不停的产生的,造成不知道 ...
- inotify用法简介及结合rsync实现主机间的文件实时同步
一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系 ...
随机推荐
- synchronized关键字简介 多线程中篇(十一)
前面说过,Java对象都有与之关联的一个内部锁和监视器 内部锁是一种排它锁,能够保障原子性.可见性.有序性 从Java语言层面上说,内部锁使用synchronized关键字实现 synchronize ...
- docker(5):数据的管理
Docker的volume卷 为了能持久话保存和共享容器的数据. 使用docker volume卷的两种方式 1:数据卷 2:数据卷容器 1:数据卷 数据卷:数据卷会绕过docker 的ufs 直接写 ...
- a标签伪类选择器以及伪元素:hover的案例
1.通过我们的观察发现a标签存在一定的状态1.1默认状态, 从未被访问过1.2被访问过的状态1.3鼠标长按状态1.4鼠标悬停在a标签上状态 2.什么是a标签的伪类选择器?a标签的伪类选择器是专门用来修 ...
- ArcGIS API for JavaScript 4.9 & 3.26 发布与新特性
应该是中文首发?我只想说:更新太TMD快了 QAQ Part I -- JsAPI 4.9 主题1:在2D中默认启用WebGL渲染 在要素图层.CSV图层.流图层中是使用WebGL渲染的,这个任务由M ...
- 解决Android编译时出现aapt.exe finished with non-zero exit value 1(第二篇)
之前出现该错误,我用的是这个方法: https://www.cnblogs.com/tangZH/p/10691383.html 然而遗憾的是,这次不管用了,无奈,只好另寻他法,其实会出现这个错误就是 ...
- JVM利器:Serviceability Agent介绍
本文首发于公众号:javaadu 简单介绍 构建高性能的Java应用过程中,必然会遇到各种各样的问题,像CPU飙高.内存泄漏.应用奔溃,以及其他疑难杂症,这时可以使用Serviceability Ag ...
- SQLite 的 EXISTS 与 NOT EXISTS
话不多说先来看看表结构: 显而易见 Pid 存放的 Person 的 id :下面重点(奇葩需求!!!!) 我需要向表一(Person)里插入几条数据(...)这时候不会对表二做任何操作. 需求:查询 ...
- git 版本库基础知识学习
什么是版本库?什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可 ...
- LeetCode算法题-Rotated Digits(Java实现)
这是悦乐书的第316次更新,第337篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第185题(顺位题号是788).如果一个数字经过180度旋转后,变成了一个与原数字不同的 ...
- 不可思议的纯 CSS 滚动进度条效果
结论先行,如何使用 CSS 实现下述滚动条效果? 就是顶部黄色的滚动进度条,随着页面的滚动进度而变化长短. 在继续阅读下文之前,你可以先缓一缓.尝试思考一下上面的效果或者动手尝试一下,不借助 JS , ...