实时同步备份的部署

第1章 企业实时同步备份服务部署-inotify

1.1 inotify是什么?

inotify是一种强大的,细粒度的.异步文件系统监控机制,通过inotify可以监控文件系统中添加/删除/修改/移动等各种事件,inotify-tools正是实施这样监控的软件

sersync就是在inotify基础上强化了一些功能,比如重试机制,过滤机制,提供接口做CDN

1.2 linux内核从2.16.13起才支持inotify

/proc/sys/fs/inotify    系统默认的目录下有三个文件,对inotify机制有一定的限制

max_user_watches   设置inotify或inotifywatch命令可以监视的文件数量(单进程)默认8192

max_user_ instances  设置每个用户可以运行inotifywait或inotifywatch命令的进程数,默认进程数128

max_queued_events  设置inotify实例事件(event)队列可容纳的事件数量

1.2.1 多实例的含义:

一个服务识别不同的配置文件,启动多个进程,开启不同的socket条目信息,生成多个不同端口信息,这样就实现了一个服务的多实例创建

1.3 实时备份原理过程:

1.      划分nfs存储与rsync备份服务器

2.      在存储服务器上部署监控服务,监控相应文件或目录中数据信息的变化

3.      将监控文件或目录,变化的数据信息进行推送,从而实现实时备份到rsync服务器中

1.4 inotify实现实时同步部署流程:

1.      部署rsync服务,守护进程模式要开启

2.      部署inotify软件,进行实时监控数据信息的变化

a)        默认没有inotify软件,需要进行yum安装

yum  install  -y  inotify-tools

b)        检查事件目录监控命令执行是否正确

inotifywait -mrq /data

inotifywait -mrq --timefmt "%y/%m/%d %H:%M" --format "%T %w%f" /data

inotifywait -mrq --timefmt "%F" --format "%T %w%f 事件信息:%e" /data

inotifywait -mrq --timefmt "%F" --format "%T %w%f 事件信息:%:e" -e create /data

c)        脚本需要编写监控命令:

inotifywait -mrq  --format "%w%f" -e create,close_write,delete,moved_to /data

3.      编写inotify+rsync的结合脚本

#!/bin/bash

inotifywait -mrq  --format "%w%f" -e create,close_write,delete,moved_to /data|\

while read line

do

rsync -az /data/ --delete [email protected]::backup --password-file=/etc/rsync.password

done

1.5 inotify命令如何使用:

1.5.1 inotifywait   命令参数  开启实时监控服务,监控文件目录

-m   始终保持监控状态

-r    递归监控目录中的数据变化

-o    打印事件到文件中,相当于标准正确输出

-q    安静模式,输出信息少

--timefmt    指定事件格式

--format     指定输出格式

-s     输出错误信息

-e     指定监听的事件,比如只监听删除的事件或者 只监听添加的事件

1.5.2 inotify命令语法格式:

%T  = 时间格式

%w  = 监控的文件或目录名称

%f   = 事件出现时,将显示监控目录下触发时间的文件或目录信息

%e  = 显示发生的事件信息,不同的事件信息用逗号进行分割

1.5.3 inotify中事件都有什么?

access   数据内容被读取

modify  数据内容被写入

attrib   属性被改变

close_write   修改文件目录之后关闭

close_nowrite   没有修改文件或目录之后关闭

close   文件或目录被关闭

open   文件或目录被打开

move   文件或目录被移动

create   在目录中创建文件或目录

delete   在目录中删除文件或目录

在实际使用时,只要监控以下事件即可:

create---创建

delete---删除

move---移动

close_write---修改

1.5.4 对文件的监控信息:

命令为: [[email protected] ~]# inotifywait -mr --timefmt "%Y-%m-%d" --format '%T: %w %e'  /data/

查看文件的逻辑过程:

2018-01-26: /data/ OPEN,ISDIR

2018-01-26: /data/ CLOSE_NOWRITE,CLOSE,ISDIR

创建文件的逻辑过程:

2018-01-26: /data/ CREATE

2018-01-26: /data/ OPEN

2018-01-26: /data/ ATTRIB

2018-01-26: /data/ CLOSE_WRITE,CLOSE

删除文件的逻辑过程:

2018-01-26: /data/ DELETE

移动文件的逻辑过程:

2018-01-26: /data/ MOVED_FROM

1.5.5 对目录的监控信息:

创建目录的逻辑过程:

2018-01-26 /data/ CREATE,ISDIR

2018-01-26 /data/ OPEN,ISDIR

2018-01-26 /data/ CLOSE_NOWRITE,CLOSE,ISDIR

删除目录的逻辑过程:

2018-01-26 /data/ OPEN,ISDIR

2018-01-26 /data/ CLOSE_NOWRITE,CLOSE,ISDIR

2018-01-26 /data/ OPEN,ISDIR

2018-01-26 /data/boyang/ OPEN,ISDIR

2018-01-26 /data/ DELETE,ISDIR

2018-01-26 /data/ CLOSE_NOWRITE,CLOSE,ISDIR

2018-01-26 /data/boyang/ CLOSE_NOWRITE,CLOSE,ISDIR

2018-01-26 /data/boyang/ DELETE_SELF

移动目录的逻辑过程:

2018-01-26 /data/ MOVED_FROM,ISDIR

2018-01-26 /data/jiang/ MOVE_SELF

Failed to remove watch on /data/jiang/: Unknown error 18446744073709551615

Error removing watch on /data/jiang/: Unknown error 18446744073709551615

2018-01-26 /data/ OPEN,ISDIR

2018-01-26 /data/ CLOSE_NOWRITE,CLOSE,ISDIR

1.6 shell循环方式:

1.      for循环:   指定循环条件,循环条件不满足会停止循环

2.      while循环: 指定循环条件,循环条件满足时,会无限循环=死循环

3.      until(直到): 指定循环条件,循环不满足时,会无线循环

1.6.1 脚本在循环执行时:

利用ctrl+z 只是暂停脚本运行,进程还在

jobs命令将前台运行脚本命令,放入后台

利用kill将进程杀死

然后在将进程转到前台,

将进程暂停,然后直接用pkill+进程名字将其杀死

1.7 inotify服务优化:

根据/proc/目录下的机制文件,对自己的需求进行更改

inotify缺点:

并发大于200个文件时 ,同步就会有延迟

前面写的脚本,每次都是全部推送一次,单确实是泽尼昂的.也可以只同步变化的文件,不变化的不理会

监控到事件后,rsync同步是单线程的,serync是多线程同步

inotify实现实时同步必须要编写脚本

原文地址:http://blog.51cto.com/13520772/2065766

时间: 2024-11-05 13:33:44

实时同步备份的部署的相关文章

sersync 配合rsync实时同步备份

sersync 配合rsync实时同步备份 sersync是基于Inotify开发的,类似于Inotify-tools的工具,基本上Inotify能实现的功能,sersync也具备,因此,sersync 也可以实时监听目录中发生变化的(包括增加.删除.修改) sersync 配合rsync实时同步备份 1. sersync 介绍 2. 部署rsync daemon 3. 安装sersync sersync 配合rsync实时同步备份 1. sersync 介绍 sersync是基于Inotify

sersync2+rsync目录文件实时同步备份

说明: 192.168.1.2(sersync+rsync)---------------FTP 192.168.1.3(rsync)--------------------------backup 实验目的: 实时自动同步:192.168.1.2 ------->192.168.1.3到目录:/data/ftpdata ; 764  viconfxml.xml 765  ./GNU-Linux-x86/sersync2 -d -r confxml.xml 767  ./GNU-Linux-x8

inotify介绍及rsync + inotify 实时同步备份

1.前言 rsync (remote sync)是一款非常好的数据同步工具,能够通过对比同步双方的数据变动,实现增量同步,还可以通过LAN/WAN实现远程多台主机间文件的同步,还能结合crond任务计划来执行自动备份,又可以结合ssh实现远程数据备份的安全,种种特性使他看起来相当优秀.但如果需备份数据十分庞大时,它的不足之处就显现出来了,比如每次执行同步操作时,rsync都会扫描全部数据进而计算出增量部分,而后再同步增量数据,这将会十分耗时,使其变得低效:并且受限于crond计划任务最小时间间隔

rsync+inotify实现数据实时同步备份

在实际生产环境当中,我们总会遇见需要把一些重要数据进行备份,且随着应用系统规模的增大,对数据的安全性.可靠性.时效性要求还是比较高的, 因此我自己有在用rsync+inotify来实现数据实时同步备份,下面记录下操作步骤,以防日后自己忘记. 实验背景: 操作系统          IP         机器名        角色 CentOS 7.2       172.16.22.1     nginx01        数据源(服务器端) CentOS 7.2       172.16.22

rsync+inotify实现Git数据实时同步备份

定时备份和实时备份 说到备份,无疑于定时备份和实时同步备份.定时备份可以通过脚本或者Crontab来实现,而实时同步备份可以通过某些接口监控文件的各种变化情况来实现的(比如内核接口inotify):通过对比可以发现对数据信息要求高的环境使用实时同步备份可以更好更有利的保护数据的安全性. 软件介绍之rsync rsync说明 rsync 远程同步,同步是把数据从缓冲区同步到磁盘上去的.数据在内存缓存区完成之后还没有写入到磁盘中去.所以有时候要同步到磁盘中去的,而rsync说白了和复制差不多.能将一

Rsync + sersync 实时同步备份

Rsync + sersync 实时同步备份 一      Rsync + Sersync  实时同步介绍 1.Rsync 服务搭建介绍 云机上搭建Rsync server,在本地搭建Rsync Clinet. 2. Sersync 服务搭建介绍 在本地服务器上搭建 Sersync  Server  检测本地的ftp目录变化,实时同步到云机上 二.Rsync编译安装 1.检查本机是否存在 [[email protected]云机 ~]# rpm -qa  rsync rsync-3.0.6-12

rsync+inotify 数据实时同步备份

一.rsync rsync - a fast, versatile, remote (and local) file-copying tool. rsync synopsis: rsync 支持三种传输模式: local    本地 remote shell   (ssh, rsh) rsync daemon rsync连接远程主机进行同步或备份时有两种途径:使用远程shell程序(如ssh或rsh)进行连接,或使用TCP直接连接rsync daemon.    当源路径或目的路径的主机名后面包

实战:配置rsync+inotify实现实时同步备份

实战:配置rsync+inotify实现实时同步 Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取.删除.移动等.利用这一机制,可以非常方便地实现文件异动告警.增量备份,并针对目录或文件的变化及时作出响应. 使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性.周期过密等问题. inotify

sersync+rsync实现实时同步备份

第一个里程:下载安装sersync软件 先进行软件下载,把软件包上传到系统中 unzip sersync_installdir_64bit.zip cd sersync_installdir_64bit mv sersync /usr/local/ tree 第二个里程:编写sersync配置文件 [[email protected] sersync]# cd /usr/local/sersync/conf/ [[email protected] conf]# ll 总用量 4 -rw-r--r