lsyncd替代inotify+rsync实现实时同步
因公司业务需要需要实时同步日志文件,刚一开始使用的是inotify+rsync来实现实时同步,但时间久而久之发现同步的速度越来越慢,往往延迟好几个小时。查了一下网上的inotify+rsync方案基本一致,基本都是使用后台运行脚本,持续监视文件,然后同步。我也查了一下是否有优化的可能性,但也因暂未找到相关优化方案,所找到了 lsyncd,发现lsyncd相较于inotify+rsync方案更为方便,安装配置也更加简单。特试用了一下,感觉还是不错。所特记录一笔。
1. inotify+rsync方案配置
2. lsyncd方案配置
2.1 lsyncd介绍
@来自网上搜索
lsyncd 是一个支持实时、双向、多机器的多模式文件同步工具。使用 Lua 语言封装了 inotify 和 rsync 工具,采用了 Linux 内核(2.6.13 及以后)里的 inotify 触发机制,然后通过 rsync 去差异同步,达到实时的效果。
简单来说lsyncd就是将 inotify
与rsync
合并成一个东西,不过机器上还是需要有rsync来同步的哦。
2.2 安装
2.2.1 安装lsyncd
只需要在一台机器上安装,比如你需要将A上的文件同步到B上,那你只需要在A上安装lsyncd,配置lsyncd同理。
#lsyncd有两种安装方式,可直接yum安装也可编译安装。因编译安装比较麻烦,所以我这里采用的是yum安装方式。
#yum安装需要配置epel源,这里使用的是阿里的源。如果已经安装过的可忽略
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y install lsyncd
如果需要编译安装的点击下载安装包️编译安装软件包下载链接然后不会编译安装的自己百度哈,跟其他软件的编译安装一样的哈。
2.2.2 安装rsync
因之前有写过一次所不再重复,不会的可参考我之前的文章点击前往️
3. 配置
3.1 rsync配置
因之前有写过一次所不再重复,不会的可参考我之前的文章点击前往️
3.2 lsyncd配置
lsyncd配置文件路径在 /etc/lsyncd.conf
--- 这个符号开头的都是默认的配置文件,因lsyncd是由Lua编写的,注释符号不是 # 而是 --
----
-- User configuration file for lsyncd.
--
-- Simple example for default rsync, but executing moves through on the target.
--
-- For more examples, see /usr/share/doc/lsyncd*/examples/
--
-- sync{default.rsyncssh, source="/var/www/html", host="localhost", targetdir="/tmp/htmlcopy/"}
settings {
logfile="/var/log/lsyncd/lsyncd.log",
statusFile="/var/log/lsyncd/lsyncd.status",
statusInterval=3,
maxDelays=1,
inotifyMode="CloseWrite or Modify",
maxProcesses=12,
nodaemon=true,
}
sync {
default.rsync,
source = "/data/chenfan-logs/",
target = "root@127.0.0.1::log",
delay = 100,
rsync = {
binary = "/usr/bin/rsync",
password_file = "/etc/rsync.pass",
archive = true,
compress = false,
verbose = true
}
}
3. 结束
使用了lsyncd后发现同步比原先的inotify+rsync方案快很多。在这里我想问一下,inotify+rsync方案在优化上面有没有什么要注意的地方?
lsyncd替代inotify+rsync实现实时同步的更多相关文章
- 【转】inotify+rsync实现实时同步
[转]inotify+rsync实现实时同步 1.1 什么是实时同步:如何实现实时同步 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 发现目录中数据产生变化,就利用rsync服 ...
- inotify+rsync实现实时同步部署
1.1.架构规划 1.1.1架构规划准备 服务器系统 角色 IP Centos6.7 x86_64 NFS服务器端(NFS-server-inotify-tools) 192.168.1.14 Cen ...
- inotify +rsync进行实时同步
1.安装rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpmyum -y install ino ...
- inotify+rsync实现实时同步
第1章 数据实时同步介绍 1.1 什么是实时同步:如何实现实时同步 A. 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 B. 发现目录中数据产生变化,就利用rsync服务推送到 ...
- inotify+rsync实现实时同步并邮件通知
服务器之间文件实时同步,监控文件的变化,发送邮件通知,并实时同步文件. 由于人工同步多台服务器的文件比较吃力,可以借助这样一套软件,自动化的实现这样的工作. 并且可以事实监控变化发送邮件给系统管理人员 ...
- inotify+rsync文件实时同步
原文转自http://dl528888.blog.51cto.com/2382721/771533/ 之前做了“ssh信任与scp自动传输脚本”的技术文档,此方案是作为公司里备份的方法,但在实际的运行 ...
- inotify+rsync目录实时同步
两台linux服务器系统CentOS7 一台Apache IP:192.168.155.130(发布文件服务器,也可以叫rsync客户端) 一台nginx IP:192.168.155.131(同步镜 ...
- inotify+rsync实现实时同步(附解决crontab中无法执行python脚本的问题)
1.准备环境 # 系统支持的话,下面的目录就会存在 ls /proc/sys/fs/inotify/ rpm -qa inotify-tools yum -y install inotify-tool ...
- inotify+rsync文件实时同步报错:usr/local/bin/inotifywait: error while loading shared libraries: libinotifytools.so.0:
解决办法: ln -sv /usr/local/lib/libinotify* /usr/lib/ /usr/lib64/libinotifytools.so.
随机推荐
- js学习笔记之正则
() 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串.(\s*)表示连续空格的字符串.[]是定义匹配的字符范围.比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字 ...
- jquery : 菜单根据url变颜色
//菜单根据url变颜色$(document).ready(function(){ $('#nav li a').each(function(){ if($($(this))[0].href==Str ...
- Linux从头学05-系统启动过程中的几个神秘地址,你知道是什么意思吗?
作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...
- PHP-CGI远程代码执行漏洞(CVE-2012-1823)
影响版本 php < 5.3.12 or php < 5.4.2 访问http://p:8080/index.php?-s即爆出源码,说明漏洞存在 POST /index.php?-d+a ...
- 大数据学习(17)—— HBase表设计
为啥要把表设计拿出来独立成章?因为我觉得像我这样搞了很多年Java后端开发的技术人员,在学习HBase的时候,会受到关系型数据库3NF.BCNF的影响.事实上,数据库范式在HBase里完全没用,必须转 ...
- 《MySQL实战45讲》(1-7)笔记
<MySQL实战45讲>笔记 目录 <MySQL实战45讲>笔记 第一节: 基础架构:一条SQL查询语句是如何执行的? 连接器 查询缓存 分析器 优化器 执行器 第二节:日志系 ...
- etcd raft 处理流程图系列2-wal的读写
本文仅介绍wal的基本处理,如create.open.close.read等操作.鉴于篇幅原因,下面介绍replayWAL(启动raft节点时执行)函数涉及的读文件操作:从wal目录中加载snapsh ...
- CSS样式逐li添加,执行完,清空,反复执行
function change_light(el) { el.hide() let i = 0; function temp() { if (i > el.length - 1) { el.hi ...
- appium自动化测试(3)-控件定位&中文输入
参考-控件定位 http://www.2cto.com/kf/201410/340345.html appium接口 http://appium.io/slate/en/master/?python# ...
- Python从零开始编写控制程序(一)
Python之从零开始编写控制程序(一) 在此声明:本博客仅供学习参考,任何产生相关违法犯罪行为与本人无关. 另外如果有师傅有好的思路和想法,可以和我一起沟通交流. 最近在一直尝试做Powershel ...