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 ...
随机推荐
- 解决 CentOS 7 添加用户设置家目录出现 useradd cannot set SELinux context for home directory 问题
问题描述 直接贴下代码吧~ [root@localhost ~]# useradd -d /tmp/heheda4 heheda4 useradd: cannot set SELinux contex ...
- 键值编码 KVC
http://www.cnblogs.com/dyf520/p/3805297.html 1,什么是Key-Value Coding? Key-Value Coding是一种间接访问对象属性的机制,使 ...
- Hibernate绑定session保证session为单线程操作
- css width
转载:http://blog.csdn.net/dddddz/article/details/8631655
- 【模板】c++动态数组vector
相信大家都知道$C$++里有一个流弊的$STL$模板库.. 今天我们就要谈一谈这里面的一个容器:动态数组$vector$. $vector$实际上类似于$a[]$这个东西,也就是说它重载了$[]$运算 ...
- 系统中同时存在python2和python3时 pip有时候更新后会报错 解决安装的方法如下
官网原链接:https://pip.pypa.io/en/stable/installing/ Installation Do I need to install pip? pip is alread ...
- java环境变量配置加maven配置
1.安装JDK开发环境 下载网站:http://www.oracle.com/ 确定之后,单击“下一步”. 2.配置环境变量: 单击“计算机-属性-高级系统设置”,单击“环境变量”.在“系统变量”栏下 ...
- Git之提交项目到远程github
1.在分支dev下,默认本地工作区有项目project 2. git add project [添加项目到暂存区] 3. git commit project -m "提交项目" ...
- asp.net 中文部分显示问号
很神奇的事情,今天部署了一个网站,页面从数据读取新闻后,有些新闻标题全部显示问题号,有几个新闻能正确显示汉字,然后查看新闻页面又能正常显示汉字. 解决办法: 在异常的页面上加上 < %@ COD ...
- sql通过 openrowset查询csv文件
两步即可完成 第一步. 创建cmmData.xml文件,并存入到能与sql服务器共享的文件夹中(如:\\10.252.21.6\sharedfolder) <?xml version=" ...