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通知接口,用来监控文件系统的各种变化情况,如文件存取.删除.移动等 ...
随机推荐
- 深入理解Java虚拟机阅读心得(二)
垃圾收集 程序计数器.虚拟机栈.本地方法栈三个区域随线程而生,随线程而灭:这几个区域的内存分配和回收都具备稳定性,不需要过多的考虑回收的问题.而Java堆和方法区则不一样. Java堆中存储了几乎所有 ...
- Django——图书管理系统
基于Django的图书管理系统 1.主体功能 1.列出图书列表.出版社列表.作者列表 2.点击作者,会列出其出版的图书列表 3.点击出版社,会列出旗下图书列表 4.可以创建.修改.删除 图书.作者.出 ...
- dbconfig.properties
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/数据库名 jdbc.username=root jdbc. ...
- [LeetCode] Transform to Chessboard 转为棋盘
An N x N board contains only 0s and 1s. In each move, you can swap any 2 rows with each other, or an ...
- nginx + rtmp 搭建流媒体服务器
一.安装nginx服务器 1.路径说明: 路径:/usr/local/src 2.下载nginx-rtmp-module (我这里的目录是在/usr/local/src/下面) cd /usr/loc ...
- 总结:极光推送java服务端(1)
遇到的问题: 1.怎么用极光推送 2.极光推送发送失败报错 返回{ } 3.透传和推送区别以及怎么设置 我的解决方案: 问题1.极光推送类里面有不同的方法,需要发给那些人就调用相应的方法.有安卓.io ...
- linux定时备份mysql数据并同步到其他服务器
(备份还原操作) ###导出数据库 /usr/bin/mysqldump -u root -pwd database > database20180808.sql ###导入数据库 mysql ...
- C# 类库中添加注释方法
C# 类库中添加注释方法 C#中新建的类库添加注释时,应注意以下问题: 1.编译动态类库时命名空间要规范,一般不要和类同名,命名空间一般定义格式:项目名+类文件名: 2.动态类库中,类.方法的注释都采 ...
- 容器—stack
c++ stl栈stack介绍 C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构. c++ stl栈stack的头文件 ...
- SQL SERVER 基本操作语句
Sql 是一种结构化的查询语言:Sql是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理‘关系型数据库’系统:Sql对大小写不敏感:Sql不是数据库,是行业标准,是结构化的查询语言 In ...