CentOS 7 Sersync+Rsync 实现数据文件实时同步
rsync+inotify-tools与rsync+sersync架构的区别?
1、rsync+inotify-tools
inotify只能记录下被监听的目录发生了变化(增,删,改)并没有把具体是哪个文件或者哪个目录发生了变化记录下来;
rsync在同步的时候,并不知道具体是哪个文件或目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此效率很低
2、rsync+sersync
sersync可以记录被监听目录中发生变化的(增,删,改)具体某个文件或目录的名字;
rsync在同步时,只同步发生变化的文件或目录(每次发生变化的数据相对整个同步目录数据来说很小,rsync在遍历查找对比文件时,速度很快),因此效率很高
同步过程:
1. 在源数据服务器上开启sersync服务,sersync负责监控配置路径中的文件系统事件变化;
2. 调用rsync命令把更新的文件同步到目标服务器;
3. 需要在源数据服务器配置sersync,在同步目标服务器配置rsync server
同步原理:
1. 用户实时的往sersync服务器上写入更新文件数据;
2. 此时需要在源数据服务器上配置sersync服务;
3. 在另一台服务器开启rsync守护进程服务,以同步拉取来自sersync服务器上的数据;
通过rsync的守护进程服务后可以发现,实际上sersync就是监控本地的数据写入或更新事件;然后,在调用rsync客户端的命令,将写入或更新事件对应的文件通过rsync推送到目标服务器
CentOS 7 192.168.94.33(Sersync server)
CentOS 7 192.168.94.44(Rsync server)
先安装Rsync
[root@Rsync ~]# yum -y install rsync
[root@Rsync ~]# vim /etc/rsyncd.conf
#Rsync server
uid = root #运行进程的身份
gid = root #运行进程的组
use chroot = yes #是否锁定家目录
max connections = #最大连接数
timeout = #超时时间
log file = /var/log/rsyncd.log #日志文件
ignore errors #忽略错误
read only = false #设置服务端文件读写权限
list = false #不显示服务端资源列表
hosts allow = 192.168.94.0/ #*代表所有
hosts deny = 0.0.0.0/
auth users = backup
secrets file = /etc/rsync.password [www]
comment = www
path = /var/www/html
创建备份目录和密码文件
[root@Rsync ~]# mkdir -p /var/www/html
[root@Rsync ~]# ls /var/www/html/ [root@Rsync ~]# echo "backup:damowang" > /etc/rsync.password
[root@Rsync ~]# chmod /etc/rsync.password
在数据源端创建密码文件 , 然后在rsync命令中使用rsync --password-file 指定该文件
[root@Sersync ~]# echo "damowang" > /etc/rsync.password
[root@Sersync ~]# chmod /etc/rsync.password
测试
[root@Sersync ~]# cp /etc/passwd .
[root@Sersync ~]# rsync -azvp /root/passwd backup@192.168.94.44::www/ --password-file=/etc/rsync.password
sending incremental file list
passwd sent bytes received bytes ,368.00 bytes/sec
total size is , speedup is 1.95 [root@Rsync ~]# ls /var/www/html/
passwd
测试这步一定要成功,不然进行不了下一步
部署Sersync服务
下载sersync :
goodle code地址 : https://code.google.com/archive/p/sersync/downloads
Git Hub 镜像地址 : https://github.com/orangle/sersync
[root@Sersync ~]# unzip sersync-master.zip
[root@Sersync ~]# tar xf sersync-master/release/sersync2..4_64bit_binary_stable_final.tar.gz -C /usr/local/
[root@Sersync ~]# cd /usr/local/
[root@Sersync local]# mv GNU-Linux-x86/ sersync
[root@Sersync local]# cd sersync/
[root@Sersync sersync]# cp confxml.xml confxml.xml.$(date +%F)
[root@Sersync sersync]# vim confxml.xml
# 修改24、25行
<sersync>
<localpath watch="/var/www/html"> # 本地同步目录
<remote ip="192.168.94.44" name="www"/> # rsync模块名 # 修改31行
<rsync>
<commonParams params="-artuz"/>
<auth start="true" users="backup" passwordfile="/etc/rsync.password"/>
开启sersync守护进程 同步数据
[root@Sersync sersync]# sersync2 -d -r -o /usr/local/sersync/confxml.xml
set the system param
execute:echo > /proc/sys/fs/inotify/max_user_watches
execute:echo > /proc/sys/fs/inotify/max_queued_events
parse the command param
option: -d run as a daemon
option: -r rsync all the local files to the remote servers before the sersync work
option: -o config xml name: /usr/local/sersync/confxml.xml
daemon thread num:
parse xml config file
host ip : localhost host port:
daemon start,sersync run behind the console
use rsync password-file :
user is backup
passwordfile is /etc/rsync.password
config xml parse success
please set /etc/rsyncd.conf max connections= Manually
sersync working thread = (primary thread) + (fail retry thread) + (daemon sub threads)
Max threads numbers is: = (Thread pool nums) + (Sub threads)
please according your cpu ,use -n param to adjust the cpu rate
------------------------------------------
rsync the directory recursivly to the remote servers once
working please wait...
execute command: cd /var/www/html && rsync -artuz -R --delete ./ backup@192.168.94.44::www --password-file=/etc/rsync.password >/dev/null >&
run the sersync:
watch path is: /var/www/html
测试
添加数据
[root@Sersync sersync]# cd /var/www/html
[root@Sersync html]# ls
[root@Sersync html]# mkdir damowang.cn
[root@Sersync html]# cd damowang.cn/
[root@Sersync damowang.cn]# touch {1..5}.txt
[root@Sersync damowang.cn]# ll
总用量 0
-rw-r--r-- 1 root root 0 8月 28 01:08 1.txt
-rw-r--r-- 1 root root 0 8月 28 01:08 2.txt
-rw-r--r-- 1 root root 0 8月 28 01:08 3.txt
-rw-r--r-- 1 root root 0 8月 28 01:08 4.txt
-rw-r--r-- 1 root root 0 8月 28 01:08 5.txt
验证
[root@Rsync ~]# ll /var/www/html/
总用量
drwxr-xr-x root root 8月 : damowang.cn
[root@Rsync ~]# ll /var/www/html/damowang.cn/
总用量
-rw-r--r-- root root 8月 : .txt
-rw-r--r-- root root 8月 : .txt
-rw-r--r-- root root 8月 : .txt
-rw-r--r-- root root 8月 : .txt
-rw-r--r-- root root 8月 : .txt
CentOS 7 Sersync+Rsync 实现数据文件实时同步的更多相关文章
- Sersync+Rsync实现数据文件实时同步
rsync+inotify-tools与rsync+sersync架构的区别1,rsync+inotify-tools只能记录下被监听的目录发生的变化(增删改)并没有把具体变化的文件或目录记录下来在同 ...
- sersync+rsync实现服务器文件实时同步
sersync+rsync实现服务器文件实时同步 一.为什么要用rsync+sersync架构? 1.sersync是基于inotify开发的,类似于inotify-tools的工具 2.sersyn ...
- rsync+sersync实现数据文件实时同步
一.简介 sersync是基于Inotify开发的,类似于Inotify-tools的工具: sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字: ...
- Rsync+inotify实现文件实时同步#附shell脚本
强烈推荐先仔细看此文 https://segmentfault.com/a/1190000002427568 实验环境 centos 7.3 vm2:192.168.221.128 同步服务器 vm1 ...
- 数据文件实时同步(rsync + sersync2)
因近期项目需求,需要同步云端服务器的数据给**方做大数据分析. 思路: 起初只要数据同步,准备开放数据采集接口.但实时性较差,会有延迟. 故而寻觅各种解决方案,最终确定使用 rsync 进行文件同步, ...
- python自动化运维-编写rsync+sersync安装脚本实现文件实时同步
rsync+sersync组合可以实时监听目录的变化,实现实时同步数据. 具体安装教程可查看:http://www.osyunwei.com/archives/7447.html. 安装着实有些复杂, ...
- Centos 6.5配置rsync+inotify实现文件实时同步
1.安装rsync(两台机器执行相同的步骤)yum install gcc yum install rsyncd xinetd -y因为rsync是由xinetd启动的,所以需要修改一个配置vim / ...
- Linux学习-利用inotify和rsync实现数据的实时同步
一.inotify简介 1.inotify介绍 异步的文件系统事件监控机制,利用事件驱动机制,而无须通过诸如cron等的 轮询机制来获取事件,linux内核从2.6.13起支持 inotify,通过i ...
- Rsync + inotify 实现文件实时同步
Rsync 用来实现触发式的文件同步. Inotify-tools是一套组件,Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取.删除.移动等 ...
随机推荐
- c#一步一步实现ORM(二)
c#一步一步实现ORM(二) 上一篇描述了简单的思路,这一片我们来稍微细化一下 1插入的时候忽略某些字段 public int Insert<T>(T o, params string[] ...
- [转]Web应用防火墙WAF详解
通过nginx配置文件抵御攻击 0x00 前言 大家好,我们是OpenCDN团队的Twwy.这次我们来讲讲如何通过简单的配置文件来实现nginx防御攻击的效果. 其实很多时候,各种防攻击的思路我们都明 ...
- python3 使用代理
#代理使用 >>> proxy_handler=urllib.request.ProxyHandler({'http':'211.81.31.18:8081'}) >>& ...
- HDU3072 Intelligence System
题目传送门 有个中文版的题面...和原题稍有不同 /* Description “这一切都是命运石之门的选择.” 试图研制时间机器的机关SERN截获了中二科学家伦太郎发往过去的一条短信,并由此得知了伦 ...
- vi编辑器常用操作
vi的三种模式 1.命令模式 2.编辑模式 3.末行模式(命令模式下,按":"即可进入末行模式) 命令模式到编辑模式:插入命令i,附加命令a,打开命令o,修改命令c,取代命令r,替 ...
- JavaFile I/O
Java流类图结构: 流的概念和作用: 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.及数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将抽象为各种类,方便更直观 ...
- git 强制覆盖分支
假设要用develop覆盖master分支,如下操作 git checkout master git reset --hard develop //先将本地的master分支重置成develop gi ...
- [LeetCode] Global and Local Inversions 全局与局部的倒置
We have some permutation A of [0, 1, ..., N - 1], where N is the length of A. The number of (global) ...
- Dynamics365 WebAPI ADFS token 获取
public class CrmAuth { ///<summary> /// Token /// </summary> public string access_token ...
- java集成微软的ad域,实现单点登录
1.ad域介绍: windos server 2008R2服务器下的ad域,见下图(我是在虚拟机安装到windos server) 2.连接ad域代码:(里面代码自行修改) public Result ...