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 ...
随机推荐
- 园艺研究生中途自学Java,赶上校招终进美团,分享面试经验
前言 最近,圈子里的很多小伙伴都在面试,有些小伙伴儿拿到不错的offer,今天给大家推荐的这位小伙伴拿到美团点评的校招offer,他将自己这次面试的经历写下来供大家参考,看看你能回答多少? 背景 上海 ...
- JVM的参数详解
今天就整理下JVM的参数!相对而已JVM有很多参数,但对于一般开发人员执行知道和堆栈大小,GC.远程调试的参数即可. JVM Parameters 首先需要说明的是JVM的参数形式: -X 开头的参数 ...
- SpringBoot 整合SpringMVC 原理探究
https://blog.csdn.net/cml_blog/article/details/70196572 Spring Web MVC 的配置 Bean :WebMvcProperties
- LCA+树状数组 POJ 2763 Housewife Wind
题目传送门 题意:两种操作,问u到v的距离,并且u走到了v:把第i条边距离改成w 分析:根据DFS访问顺序,将树处理成链状的,那么回边处理成负权值,那么LCA加上BIT能够知道u到v的距离,BIT存储 ...
- 题解报告:poj 1985 Cow Marathon(求树的直径)
Description After hearing about the epidemic of obesity in the USA, Farmer John wants his cows to ge ...
- tsconfig.json No inputs were found in config file
Build:No inputs were found in config file '/tsconfig.json'. Specified 'include' paths were '["* ...
- 金蝶Apusic中间件适配JetSpeed2过程记录
金蝶Apusic中间件适配JetSpeed2过程记录: 1.安装金蝶并配置域,确保域运行正常. 2.参考<JetSpeed2部署至Apusic操作步骤记录>进行应用迁移. https:// ...
- 把AM_B_ENTRY表里的ARCHIVAL_CODE字段,值复制给BA_ARCHIVAL_CODE_160812字段
UPDATE AM_B_ENTRY T SET T.BA_ARCHIVAL_CODE_160812=T.ARCHIVAL_CODE SELECT BA_ARCHIVAL_CODE_160812 FRO ...
- D. Black Hills golden jewels 二分答案 + 二分判定
http://codeforces.com/gym/101064/problem/D 题目是给定一个数组,如果两两组合,有C(n, 2)种结果,(找出第一个大于等于第k大的结果) 思路, 二分答案va ...
- 【转】JobScheduler
JobScheduler JobScheduler是Android L(API21)新增的特性,用于定义满足某些条件下执行的任务.它的宗旨是把一些不是特别紧急的任务放到更合适的时机批量处理,这样可以有 ...