上一篇文章记录了怎么安装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软件实现集群服务的数据备份(二)的更多相关文章

  1. centos7 rsync+inotify软件实现集群服务的数据备份(一)

    一.rsync软件的说明: 1.1 什么是rsync rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.它使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达 ...

  2. CentOs7.3 搭建 SolrCloud 集群服务

    一.概述 Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库: Solr是以Lucene为基础实现的文本检索应用服务.Solr部署方式有单机方式.多机Master-Slaver方式.C ...

  3. Linux Centos7 环境搭建Docker部署Zookeeper分布式集群服务实战

    Zookeeper完全分布式集群服务 准备好3台服务器: [x]A-> centos-helios:192.168.19.1 [x]B-> centos-hestia:192.168.19 ...

  4. LVS负载均衡集群服务搭建详解(一)

    LVS概述 1.LVS:Linux Virtual Server 四层交换(路由):根据请求报文的目标IP和目标PORT将其转发至后端主机集群中的某台服务器(根据调度算法): 不能够实现应用层的负载均 ...

  5. Linux集群服务 LVS

    linux虚拟服务器(LVS)项目在linux操作系统上提供了最常见的负载均衡软件. 集群定义: 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性 ...

  6. 大数据项目之_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. ...

  7. Windows10 搭建 ElasticSearch 集群服务

    一.前言 集群的搭建需要多台机器,之前我使用 ubuntu 16.04 搭建过 hadoop 的单机模式和分布式模式,这个今后会写,今天先写一篇使用 < Windows10 搭建 Elastic ...

  8. centos7.8 安装部署 k8s 集群

    centos7.8 安装部署 k8s 集群 目录 centos7.8 安装部署 k8s 集群 环境说明 Docker 安装 k8s 安装准备工作 Master 节点安装 k8s 版本查看 安装 kub ...

  9. LVS负载均衡集群服务搭建详解(二)

    lvs-nat模型构建 1.lvs-nat模型示意图 本次构建的lvs-nat模型的示意图如下,其中所有的服务器和测试客户端均使用VMware虚拟机模拟,所使用的CentOS 7 VS内核都支持ipv ...

随机推荐

  1. PTA QQ Account Manageme【map的巧妙应有】

    5-27 QQ Account Management (25分) You are supposed to implement the functions of account "Log in ...

  2. Cg profiles,如何使用CGC编译Cg语言(转)

    抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人” 计算机只能理解和执行由0.1序列(电压序列 ...

  3. python __builtins__ property类 (55)

    55.'property',  获取对象的所有属性 class property(object) | property(fget=None, fset=None, fdel=None, doc=Non ...

  4. bzoj 4589: Hard Nim【线性筛+FWT+快速幂】

    T了两次之后我突然意识到转成fwt形式之后,直接快速幂每次乘一下最后再逆回来即可,并不需要没此次都正反转化一次-- 就是根据nim的性质,先手必输是所有堆个数异或和为0,也就变成了一个裸的板子 #in ...

  5. pycharm 断点调试

    转自; https://blog.csdn.net/chenggong2dm/article/details/9368641 PyCharm 作为IDE,断点调试是必须有的功能.否则,我们还真不如用纯 ...

  6. Educational Codeforces Round 18 B

    Description n children are standing in a circle and playing the counting-out game. Children are numb ...

  7. 并查集 HDOJ 5441 Travel

    题目传送门 题意:给一张无向图,问存在多少(a, b)表示a点到b点经过的边值小于等于x ((a,b) 和 (b, a)属于不同的方案) 分析:首先将边权值和查询x值升序排序,从前往后扫描边,累加从u ...

  8. 线段树(单点更新) POJ 2886 Who Gets the Most Candies?

    题目传送门 #include <cstdio> #include <cstring> #define lson l, m, rt << 1 #define rson ...

  9. Datapatch AND What to do if the status of a datapatch action was not SUCCESS due to finding non-ignorable errors

    1. Enterprise Manager: Starting version 12.1 Enterprise Manager now calls datapatch to complete post ...

  10. 利用layui的load模块解决图片上传

    首先肯定要参考layui官网的upload模块文档:http://www.layui.com/doc/modules/upload.html 讲讲思路:在一份添加表单中,我们有个图片上传的模块,然后我 ...