数据的实时同步

一、两主机间数据的实时同步

1.同步原理

利用监控服务(inotify),监控同步数据服务器目录中信息的变化发现目录中数据产生变化,就利用rsync服务推送到备份服务器上

2.实现方式

inotify+rsync方式实现数据同步
sersyncinotify 软件基础上进行开发的,功能更加强大

3.inotify

异步的文件系统时间监控机制,利用事件驱动机制,而无须通过诸如cron等的轮询机制来获取事件,linux内核从2.6.13起支持 inotify,通过inotify可以监控文件系统中添加、删除,修改、移动等各种事件

4.实现数据同步的软件

inotify-tools,sersync,lrsyncd

二、inotifyrsync实现实时同步

1.inotify对同步数据目录信息的监控
2.rsync完成对数据的同步
3.利用脚本进行结合

三、具体步骤

1.在服务端安装rsync

yum install rsync

2.配置rsync的配置文件

vim /etc/rsync.conf
uid = root
gid = root
use chroot = no
max connections = 0
ignore errors
exclude = lost+found/
log file = /var/log/rsyncd.log   //日志文件路径
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock  //锁文件路径
reverse lookup = no
hosts allow = 192.168.30.16/24 //允许此主机同步
[backup]
path = /backup/   //同步数据路径
comment = backup    //共享说明
read only = no      //非只读
auth users = javis  //允许此用户访问
secrets file = /etc/rsync.pass  //账号文件路径

3.服务器端生成验证文件

echo "javis:zhuzhuzhu" > /etc/rsync.pass
chmod 600 /etc/rsync.pass

4.服务器端准备目录

mkdir /backup

5.启动服务

rsync  --deamon  //可加入/etc/rc.d/rc.local实现开机启动

6.客户端配置密码文件

echo "zhuzhuzhu"  > /etc/rsync.pass
chmod 600 /etc/rsync.pass

7.客户端安装软件

yum install inotify-tools rsync -y

8.客户端测试同步数据

rsync  -avz  --password-file=/etc/rsync.pass  /data/ [email protected]::backup

9.编写客户端脚本inotify_rsync.sh实现同步

#!/bin/bash
SRC=‘/data/‘  //需要同步的目录
DEST=‘[email protected]::backup‘  //同步到的目录
inotifywait -mrq --timefmt ‘%Y-%m-%d %H:%M‘ --format ‘%T %w %f‘ -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR FILE;do
FILEPATH=${DIR}${FILE}
rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST &&  echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log
done

10.inotifywait命令常见选项

-m, --monitor 始终保持事件监听
-d, --daemon 以守护进程方式执行,和-m相似,配合-o使用
-r, --recursive 递归监控目录数据信息变化
-q, --quiet 输出少量事件信息
--timefmt <fmt> 指定时间输出格式
--format <fmt> 指定的输出格式;即实际监控输出内容
-e 指定监听指定的事件,如果省略,表示所有事件都进行监听
--exclude <pattern> 指定排除文件或目录,使用扩展的正则表达式匹配的模式实现
--excludei <pattern> 和exclude相似,不区分大小写
-o, --outfile <file>打印事件到文件中,相当于标准正确输出
-s, --syslogOutput 发送错误到syslog相当于标准错误输出

11. --timefmt <fmt>时间格式,参考 man 3 strftime

%Y 年份信息,包含世纪信息
%y 年份信息,不包括世纪信息
%m 显示月份,范围 01-12
%d 每月的第几天,范围是 01-31
%H 小时信息,使用 24小时制,范围 00-23
%M 分钟,范围 00-59

12.--format <fmt> 格式定义

%T 输出时间格式中定义的时间格式信息,通过 --timefmt option 语法格式指定时间信息
%w事件出现时,监控文件或目录的名称信息
%f 事件出现时,将显示监控目录下触发事件的文件或目录信息,否则为空
%e 显示发生的事件信息,不同的事件默认用逗号分隔
%Xe显示发生的事件信息,不同的事件指定用X进行分隔

13.-e 选项指定的事件类型

create 文件或目录创建
delete 文件或目录被删除
modify 文件或目录内容被写入
attrib 文件或目录属性改变
close_write 文件或目录关闭,在写入模式打开之后关闭的
close_nowrite 文件或目录关闭,在只读模式打开之后关闭的
close 文件或目录关闭,不管读或是写模式
open 文件或目录被打开
moved_to 文件或目录被移动到监控的目录中
moved_from 文件或目录从监控的目录中被移动
move 文件或目录不管移动到或是移出监控目录都触发事件
access 文件或目录内容被读取
delete_self 文件或目录被删除,目录本身被删除
unmount 取消挂载

原文地址:https://blog.51cto.com/14230230/2397592

时间: 2024-11-08 03:17:50

数据的实时同步的相关文章

利用unison+inotify 实现数据双向实时同步

利用unison+inotify 实现数据双向实时同步 环境:Centos 6.5 64位 server1 :192.168.1.201 server2 :192.168.1.250 需求软件:ocaml unison inotify 我这里全是使用yum安装的,若是喜欢使用源码编译安装的可以官网下载源码包. yum install ocaml unison inotify 第一步:保证两台服务器之间可以通过ssh无密码访问,为了安全,需要创建一个普通用户: 两边执行的步骤一样: useradd

rsync+inotify实现数据的实时同步

一,简介: 1. rsync是类unix系统下的数据镜像备份工具--remote sync.一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH.rsync主机同步.与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等.随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业

rsync+inotify实现数据单向实时同步

主服务器端,向从服务器端实时同步数据 master端IP地址:192.168.1.39(node1) slave端IP地址:192.168.1.40 (node2) 一.配置从服务器 在从服务器安装rsync,创建并配置rsync文件. [[email protected] ~]# yum install -y rsync hosts allow = 192.168.1.39 hosts deny = * list = true uid = root gid = root pid file = 

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

因近期项目需求,需要同步云端服务器的数据给**方做大数据分析. 思路: 起初只要数据同步,准备开放数据采集接口.但实时性较差,会有延迟. 故而寻觅各种解决方案,最终确定使用 rsync 进行文件同步,otter(阿里的开源工具) 进行数据库同步 最终使用成功,同步效果显著! 本文先只介绍 rsync 的文件同步,otter 会在其他文章分享 一.简介 网上简介一堆,不过都写的很官方,下面的介绍是我自己使用后的感受. sersync 用于监控目录后调用 rsync 同步命令,进行文件传输! 可以监

rsync+Inotify数据的实时同步

1,安装完inotify-tools后,会在 /usr/local/bin 目录下新生成inotifywait和inotifywatch两个指令; inotifywait:用于等待一个特定事件; inotifywatch:用于收集被监控的文件系统统计数据,包括每个inotify事件发生多少次等信息; inotifywait命令常用选项如下: -m 是保持一直监听 -r 是递归查看目录 -q 是打印出事件 -e <event>, --event <event> 指定需要监控的特定事件

烂泥:rsync与inotify集成实现数据实时同步更新

本文首发于烂泥行天下. 上篇文章我们介绍了如何使用rsync同步文件,这篇文章我们再来介绍下,如何把rsync与inotify集成实现数据的实时同步. 要达到这个目的,我们需要分以下几个步骤: 1.rsync的优点与不足 2.inotify是什么 3.检测OS是否支持inotify 4.inotify相关参数详解 5.inotify监控的文件事件类似 6.inotify-tools是什么 7.安装inotify-tools 8.inotifywait使用详解 9.inotifywatch使用详解

rsync与inotify集成实现数据实时同步更新

本文转载:http://ilanni.blog.51cto.com/526870/1605200 把rsync与inotify集成实现数据的实时同步. 要达到这个目的,我们需要分以下几个步骤: 1.rsync的优点与不足 2.inotify是什么 3.检测OS是否支持inotify 4.inotify相关参数详解 5.inotify监控的文件事件类似 6.inotify-tools是什么 7.安装inotify-tools 8.inotifywait使用详解 9.inotifywatch使用详解

inotify和rsync实现数据实时同步

数据的实时同步 ?实现实时同步 ?要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 ?发现目录中数据产生变化,就利用rsync服务推送到备份服务器上 ?实现实时同步的方法 ?inotify+rsync 方式实现数据同步 ?sersync :金山公司周洋在 inotify 软件基础上进行开发的,功能更加强大 ?inotify: 异步的文件系统事件监控机制,利用事件驱动机制,而无须通过诸如cron等的轮询机制来获取事件,linux内核从2.6.13起支持 inotify,通过in

rsync+inotify实时同步环境部署记录

随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足.首先,rsync在同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的,并且正在发生变化的往往是其中很少的一部分,这是非常低效的方式.其次,rsync不能实时的去监测.同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应