centos7 rsync+inotify软件实现集群服务的数据备份(二)
上一篇文章记录了怎么安装rsync以及怎么使用该服务备份数据,但是在集群中需要实时备份客户发过来的相关数据,这样在使用命令或者定时任务的方式执行备份,
就满足不了整个服务的需求了。
inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,Linux内核从2.6.13开始引入,允许监控程序打开一个独立文件描述符,并针对事件集监控一个或者多个文件,
例如打开、关闭、移动/重命名、删除、创建或者改变属性。
安装过程说明:
1、下载软件
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
说明:这个软件的下载地址目前还是可以使用的,但是通过浏览器的页面访问不了,所以建议备份一下该软件,另外github上有软件的源码(还没有测试)
2、编译安装
yum -y install gcc gcc-c++ 安装编译器
tar -xf inotify-tools-3.14.tar.gz -C /usr/local/src/ 解压软件
cd /usr/local/src/inotify-tools-3.14/
./configure --prefix=/usr/local/inotify
make && make install
配置编译安装
3、编写监控的脚本
由于inotify-tools安装之后只是一个简单的命令,所以需要借助脚本来实现文件的实时备份。
#!/bin/bash
datapath=/data
bip=192.168.8.5
/usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete $datapath \ 监控目录的状态
|while read file
do
if [ -f $file ];then
rsync -az $file --delete rsync_back@$bip::backup --password-file=/etc/rsync.password 检测目录中文件的变化,有变化的同步提高性能,--delete实现无差异同步
else
cd $datapath &&\
rsync -az ./ --delete rsync_back@$bip::backup --password-file=/etc/rsync.password 删除的时候进行全目录同步
fi
done
可以使用如下命令调试脚本
bash -x ino-data.sh
可以使用如下命令查看目录的动态
watch ls 查看目录的动态,可以查看数据的实时同步的状态
4、编写inotify的启动脚本(参考)
#!/bin/bash
#chkconfig:
################################
#this script is created by oldboy
#zhou qq:
#site:
################################
. /etc/init.d/function if [ $# -ne ];then
usage:$ {start | stop}
exit
fi case "$1" in
start)
/bin/bash /server/script/inotify.sh &
if [ `ps -ef| grep inotify|wc -l` -gt ];then
action "inotify service is started" /bin/true
else
action "inotify service is started" /bin/false
fi
;;
stop)
kill - `cat /usr/run/inotify.pid` > /dev/null >&
pkill inotifywait
sleep
if [ `ps -ef| grep inotify|grep -v grep` -eq ];then
action "inotify service is started" /bin/true
else
action "inotify service is started" /bin/false
fi
;;
*)
usage: $ {start|stop}
exit
esac
5、inotify的优缺点:
inotify的优点
监控文件系统事件变化,通过同步工具实现实时数据同步
inotify的缺点
1、并发如果大于200个文件(10-100K),同步就会有延迟
2、我们写的脚本,每次都是全部推送一次,但确实是增量的
也可以只同步变化的文件,不变化的不理
3、监控到事件后,调用rsync同步时单线程的(加&并发)
注意事项:
--bwlimit=200
用于限制传输速率最大200kb,因为在实际应用中发现如果不做速率限制,会导致巨大的CPU消耗
centos7 rsync+inotify软件实现集群服务的数据备份(二)的更多相关文章
- centos7 rsync+inotify软件实现集群服务的数据备份(一)
一.rsync软件的说明: 1.1 什么是rsync rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.它使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达 ...
- CentOs7.3 搭建 SolrCloud 集群服务
一.概述 Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库: Solr是以Lucene为基础实现的文本检索应用服务.Solr部署方式有单机方式.多机Master-Slaver方式.C ...
- Linux Centos7 环境搭建Docker部署Zookeeper分布式集群服务实战
Zookeeper完全分布式集群服务 准备好3台服务器: [x]A-> centos-helios:192.168.19.1 [x]B-> centos-hestia:192.168.19 ...
- LVS负载均衡集群服务搭建详解(一)
LVS概述 1.LVS:Linux Virtual Server 四层交换(路由):根据请求报文的目标IP和目标PORT将其转发至后端主机集群中的某台服务器(根据调度算法): 不能够实现应用层的负载均 ...
- Linux集群服务 LVS
linux虚拟服务器(LVS)项目在linux操作系统上提供了最常见的负载均衡软件. 集群定义: 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性 ...
- 大数据项目之_15_帮助文档_NTP 配置时间服务器+Linux 集群服务群起脚本+CentOS6.8 升级到 python 到 2.7
一.NTP 配置时间服务器1.1.检查当前系统时区1.2.同步时间1.3.检查软件包1.4.修改 ntp 配置文件1.5.重启 ntp 服务1.6.设置定时同步任务二.Linux 集群服务群起脚本2. ...
- Windows10 搭建 ElasticSearch 集群服务
一.前言 集群的搭建需要多台机器,之前我使用 ubuntu 16.04 搭建过 hadoop 的单机模式和分布式模式,这个今后会写,今天先写一篇使用 < Windows10 搭建 Elastic ...
- centos7.8 安装部署 k8s 集群
centos7.8 安装部署 k8s 集群 目录 centos7.8 安装部署 k8s 集群 环境说明 Docker 安装 k8s 安装准备工作 Master 节点安装 k8s 版本查看 安装 kub ...
- LVS负载均衡集群服务搭建详解(二)
lvs-nat模型构建 1.lvs-nat模型示意图 本次构建的lvs-nat模型的示意图如下,其中所有的服务器和测试客户端均使用VMware虚拟机模拟,所使用的CentOS 7 VS内核都支持ipv ...
随机推荐
- bzoj 2780: [Spoj]8093 Sevenk Love Oimaster【广义SAM】
AC自动机比较简单,把询问串做成AC自动机然后模板串边跑变更新即可 SAM是把模板串做成广义SAM,然后每个节点存有几个模板串经过,具体方法是每次更新暴力向上跳直到有时间戳我不会证为什么时间复杂度是对 ...
- bzoj 3926: [Zjoi2015]诸神眷顾的幻想乡【SAM】
有一个显然的性质就是每个串一定在某个叶子为根的树中是一条直的链 然后因为SAM里是不会有相同状态的,所以以每个叶子为根dfs一遍,并且动态构造SAM(这里的节点u的last指向父亲),最后统计答案就是 ...
- 用AntDeploy如何更新Agent
AntDeploy AntDeploy是一款开源的一键发布部署工具,目的是代替重复性的发布动作,提高部署效率 1.一键部署iis 2.一键部署windows服务 3.一键部署到Docker 4.支持增 ...
- Angular 项目开发中父子组件传参
在项目开发中经常会遇到 组件之间传参的问题.今天总结下在使用angular的项目中父子组件传参的问题: 1.父组件向子组件传参: 然后在父组件中 然后在父组件的html中 然后就可以在子组件中使用了 ...
- P1223 [小数据版]边权差值最小的生成树
这道题和最小生成树kruskal的代码几乎相同,只不过不一定是最小生成树,所以不一定从最短的边开始做生成树:所以将每一条边分别作为起点,然后枚举就行了...... #include <bits/ ...
- 150 Evaluate Reverse Polish Notation 逆波兰表达式求值
求在 逆波兰表示法 中算术表达式的值.有效的运算符号包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰计数表达.例如: ["2", "1&quo ...
- CF 602 D. Lipshitz Sequence 数学 + 单调栈 + 优化
http://codeforces.com/contest/602/problem/D 这题需要注意到的是,对于三个点(x1, y1)和(x2, y2)和(x3, y3).如果要算出区间[1, 3]的 ...
- 牛客网Java刷题知识点之自动拆装箱
不多说,直接上干货! https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page=5 ...
- Suricata的配置
见官网 https://suricata.readthedocs.io/en/latest/configuration/index.html# Docs » 8. Configuration Edit ...
- P1789 【Mc生存】插火把
题目背景 初一党应该都知道...... 题目描述 话说有一天linyorson在Mc开了一个超平坦世界,他把这个世界看成一个n*n的方阵,现在他有m个火把和k个萤石,分别放在x1,y1...xm,ym ...