在实际生产环境当中,我们总会遇见需要把一些重要数据进行备份,且随着应用系统规模的增大,对数据的安全性、可靠性、时效性要求还是比较高的,
因此我自己有在用rsync+inotify来实现数据实时同步备份,下面记录下操作步骤,以防日后自己忘记。
实验背景:
操作系统 IP 机器名角色
CentOS 7.2 172.16.22.1 nginx01 数据源(服务器端)
CentOS 7.2 172.16.22.7 nginx02 备份地(客户端)
一、rsync的安装
在服务器端与客户端都安装rsync
[root@nginx01]#yuminstall-yrsync[root@nginx02]#yuminstall-yrsync
分别启动服务器端和客户端的rsync守护进程
[root@nginx01]#/usr/bin/rsync--daemon[root@nginx02]#/usr/bin/rsync--daemon
二、安装inotify
因为inotify是一种强大的、细粒度的、异步文件系统事件监控机制,从Linux内核2.6.13版本起,加入了对inotify的支持。
inotify可以监控文件系统的各种变化,当文件出现任何变动时,就会触发rsync同步,恰好解决了数据实时同步的问题。
inotify只需要安装在服务器端即可。
[root@nginx01]#uname-r3.10.0-327.el7.x86_64[root@nginx01]#ll/proc/sys/fs/inotifytotal0-rw-r--r--.1rootroot0Jun1213:43max_queued_events-rw-r--r--.1rootroot0Jun1213:43max_user_instances-rw-r--r--.1rootroot0Jun1213:43max_user_watches如果出现了上面的3项内容,说明系统默认支持inotify,那么我们就可以安装inotify-tools了。
我们可以到inotify-tools.sourceforge.net 下载相应版本的inotify-tools,我发现最新的也就是2010年出的inotify-tool-3.1.14
下载完毕后,进行安装
先解压
[root@nginx01]#tar-xfinotify-tools-3.14.tar.gz进入解压后的安装包目录里
[root@nginx01]#cdinotify-tools-3.14
进行检查编译,并制定安装路径
[root@nginx01inotify-tools-3.14]#./configure--prefix=/data0/inotify
进行make编译安装
[root@nginx01inotify-tools-3.14]#make&&makeinstall
安装完毕,查看是否生成了inotifywait、inotifywatch这两个指令
[root@nginx01]#ll/data0/inotify/bin/inotifywa*-rwxr-xr-x.1rootroot60892Jun1213:45/data0/inotify/bin/inotifywait-rwxr-xr-x.1rootroot55183Jun1213:45/data0/inotify/bin/inotifywatch注:inotifywait --用于等待文件或者文件集上的一个特定时间,可以监控任何文件和目录设定,并且可递归监控整个目录树;inotifywatch--用于收集被监控的文件系统统计数据,包括每个inotify事件发生的次数等相关信息。关于它们的用法可以使用 /data0/inotify/bin/inotifywait --help、/data0/inotify/bin/inotifywatch --help的方式来了解
三、inotify的相关参数
inotify定义了一些接口参数,可以用来限制inotify消耗kernel memory的大小,所以我们要根据实际应用的需求,来调节其大小。
[root@nginx01]#ll/proc/sys/fs/inotifytotal0-rw-r--r--.1rootroot0Jun1213:43max_queued_events-rw-r--r--.1rootroot0Jun1213:43max_user_instances-rw-r--r--.1rootroot0Jun1213:43max_user_watches
/proc/sys/fs/inotify/max_queued_events --表示调用inotify_init时分配至inotify instance中可以排队的最大事件数,一旦超过这个值,事件就会被抛弃,但是会触发IN_Q_OVERFLOW事件
/proc/sys/fs/inotify/max_user_instances --表示每一个real user ID 可创建的inotify instances数量的最大上限
/proc/sys/fs/inotify/max_user_watches --表示每个inotify实例相关联的watches的上限,也就是每个inotify实例可监控的最大目录数量,如果你所需要监控的数量巨大,可以适当增大它。
我就随便增大了我的上述设定值
[root@nginx01]#echo32768>/proc/sys/fs/inotify/max_queued_events[root@nginx01]#echo1024>/proc/sys/fs/inotify/max_user_instances[root@nginx01]#echo90000000>/proc/sys/fs/inotify/max_user_watches四、配置双机ssh信任
使用rsync同步有两种方式可以实现:
一:使用rsync用户、密码
二:使用机器上的用户,无需输密码即可实现
我为了贪图方便选择后者
在数据源、备份机上创建RSA密钥
以下操作在两台机器上都要执行,下列提供其中一台的为例
1.使用root用户登入机器
2.在root用户的主目录下创建.ssh目录,并设置正确的权限
[root@nginx01]#mkdir~/.ssh[root@nginx01]#chmod700~/.ssh3.使用ssh-keygen命令生成第2版的SSH协议的RSA密钥
[root@nginx01]#ssh-keygen-trsa接下来的动作就是根据提示保存私钥(key)和公钥(public key)的位置时,使用默认值。如果需要私钥密码(passphrase), 则输入一个私钥密码(如果使用私钥密码,在利用ssh执行远程命令是需要输入私钥密码)
我是为了方便,直接回车就好!
添加密钥到授权的密钥文件中
1.使用root用户登入机器
2.在数据源机器上执行下列操作
[root@nginx01]#cd~/.ssh[root@nginx01./ssh]#ssh172.16.22.7cat/root/.ssh/id_rsa.pub>>authorized_keys[root@nginx01./ssh]#ssh172.16.22.1cat/root/.ssh/id_rsa.pub>>authorized_keys[root@nginx01./ssh]#scpauthorized_keys172.16.22.7:/root/.ssh/[root@nginx01./ssh]#chmod600/root/.ssh/authorized_keys3.在备份机上执行
[root@nginx02]#chmod600/root/.ssh/authorized_keys4.分别在两台机器上进行测试
[root@nginx01]#ssh172.16.22.1dateTueJun1320:39:56CST2017[root@nginx01]#ssh172.16.22.7dateTueJun1320:39:57CST2017[root@nginx02]#ssh172.16.22.1dateTueJun1320:39:57CST2017[root@nginx02]#ssh172.16.22.7dateTueJun1320:39:58CST2017在第一次执行的时候,可能会要输入密码信息,再次执行的时候,你会发现不需要输入密码信息就能够显示系统日期,这就说明ssh互相信任配置成功!
海外回国专线能够提供全球性的专线网络覆盖,同时提供全球性的IT资源,并具备海外业务快速实施与交付的能力,彻底解决移动出海业务中跨境网络体验、网络覆盖与运维管理等问题。
五、实现实时同步
因为inotifywait是一个监控等待事件,所以我们可以使用shell脚本来配合使用它。
常用的inotifywait参数:
-m --monitor 表示始终保持事件的监听状态
-r --recursive 表示递归查询目录
-q --quit 表示打印出监控事件
-e --event 通过此参数可以指定要监控的事件,常见的有modify、delete、create、attrib等等
下面是我的一个实时同步脚本,仅供参考:
[root@nginx01]#vim/data0/webscripts/inotify.sh#!/bin/bashSRC=/data0/nginx/res/home/DST=root@172.16.22.7:/data0/nginx/res/home//data0/inotify/bin/inotifywait-mrq-emodify,delete,create,attrib${SRC}|whilereadabcdo/usr/bin/rsync-ahqzt--delete$SRC$DSTdone
让同步脚本具有可执行权限
[root@nginx01]#chmod+x/data0/webscripts/inotify.sh在后台执行实时备份的脚本操作
[root@nginx01]#sh/data0/webscripts/inotify.sh&在备份的同时,你可以去到你的备份机上备份目录里查看它是不是一直在变大,直到和数据源目录一样大呢
如果你的备份目录比较大,从数字上可能不是那么好辨认的话,建议使用查看目录文件数量的方式来比对确认
如在数据源目录查看后,在去备份目录看是否一致。
[root@nginx01]#find/data0/nginx/res/home-typef|wc-l30777[root@nginx02]#find/data0/nginx/res/home-typef|wc-l30777到这里配置完成,测试成功
相关推荐
Linux中的Rsync备份服务
push推送:rsync 选项 远程主机模块(不是目录) 远程主机用户(虚拟机用户) 远程主机地址 将远程主机模块备份至本地的位置。数据很重要,减少数据的几率,便于快速恢复,一般对于用户录入数据这些重要数据可以选择录入,对于一般的软件、配置文件来讲可以不做备份。pull拉取:rsync 选项 远程主机用户(虚拟用户) 远程主机地址 远程主机模块(不是目录) 将远程主机数据备份至本地的位置。(1)创建rsync账户,不允许登录不创建家目录(用于运行rsync服务的用户身份)
Rsync 数据备份工具
1、Rsync简介 2、数据备份简介 2.1 数据备份方式 2.2 数据备份架构 3、Rsync本地模式和远程模式 3.1 安装Rsync工具 3.2 rsync命令选项 3.3 本地模式用法 3.4 远程模式用法 4、Rsync服务模式 4.1 服务端配置 4.2 客户端配置 5、Rsync服务模式实战...
inotify+rsync实时备份,inotify+rsync同步备份mysql数据模拟,inotify功能和实现原理,rsync文件实时同步-~@Twang
inotify+rsync实时备份环境准备简介原理A上操作1、安装EPEL2、安装inotify和rsync服务3、修改rsync的配置文件4、创建目录5、建立rsync用户名和密码文件,加权限6、启动服务,验证端口B上操作7、安装EPEL8、安装inotify和rsync服务9、设置客户端密码文件,修改权限10、编写脚本11、创建目录12、执行脚本13、进入相应的目录,创建文件14、切回到A上查验 环境准备 centos7两台,关闭防火墙和selinux A 备份端——192.168.112.153 【服
数据备份系列:Rsync 备份实战记录(一)
rsync特性: 支持拷贝特殊文件,如连接文件、设备等。 可以有排除指定文件或目录同步的功能,相当于打包命令 tar 的排除功能。 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变(参数:–p)。 可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar -N)。 可以使用 scp、rsh、ssh 等方式来配合传输文件(rsync 本身不对数据加密)。 可以通过 socket(进程方式)传输文件和数据(服务端和客户端)。 支持匿名的活认证(无需系统用户)的进程模式传输
notify+rsync实时备份,notify+rsync同步备份mysql数据模拟,inotify功能和实现原理,rsync文件实时同步
简介 Inotify 是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件 rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,但是rsync不能实时的去监测、同步数据 原理 Inotify只需要要按照部
腾讯音乐数据科学秋招笔试复盘:统计、SQL与业务分析全解析
数据科学岗位不仅要求算法功底,更强调统计推断与业务理解的结合。AB实验作为验证策略效果的核心工具,其原理涵盖假设检验、多重比较校正和新颖效应识别,直接决定业务决策的可靠性。SQL窗口函数则是处理用户行为数据的基础能力,连续活跃分析、留存率统计等场景都依赖它。当这些技术被应用于音娱平台的会员增长、推荐优化与预算归因时,就构成了数据科学笔试的典型考察范围。腾讯音乐秋招笔试复盘,详细拆解统计与机器学习客观题、SQL编程题及业务案例题的备考重点,帮助求职者构建从理论到实战的完整能力图谱。
rsync+inotify实现Git数据实时同步备份
定时备份和实时备份 说到备份,无疑于定时备份和实时同步备份。定时备份可以通过脚本或者Crontab来实现,而实时同步备份可以通过某些接口监控文件的各种变化情况来实现的(比如内核接口inotify);通过对比可以发现对数据信息要求高的环境使用实时同步备份可以更好更有利的保护数据的安全性。 软件介绍之rsync rsync说明 ...
rsync+inotify实现数据的实时同步与备份
一、rsync与inotify的介绍1、rsync与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也...
CentOS 6.5 rsync+inotify实现数据实时同步备份
CentOS 6.5 rsync+inotify实现数据实时同步备份 rsync remote sync 远程同步,同步是把数据从缓冲区同步到磁盘上去的、数据在内存缓存区完成之后还没有写入到磁盘中去、所以有时候要同步到磁盘中去的,而rsync跟复制差不多能将一个文件从一个地方复制到另外一个地方,但是他也可以实现跨主机复制,兼具了cp和scp的功能,但是在跨主机时...
rsync数据镜像备份+inotify实时同步的简单实现
1.什么是rsync rsync是 Linux / UNIX 系统下的文件同步和数据传输工具,通过rsync可以将同一个服务器的数据从一个分区备份到另外一个分区,也可以将本地系统的数据通过网络传输方式eifen到任何一个远程主机上,可以执行完整备份或增量备份。 2.rsync的安装与基本操作 2.1 yum安装rsync [root@test1 ~]#
Centos 配置rsync远程同步及使用inotify+rsync实时备份
博文目录 一、rsync概述 1、rsync命令的基本用法 二、配置rsync 1、配置同步身份验证的rsync 2、rsync定期同步 3、配置inotify+rsync实时同步 一、rsync概述 rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适...
rsync数据同步+inotify实时同步
rsync数据同步+inotify实时同步 一.rsync 1.rsync概述 rsync(remote sync)远程同步; rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。已支持跨平台,可以在Windows与Linux间进行数据同步。 rsync监听端口:873 rsync运行模式:C/S 2.rsync优缺点 优点: 1,可以镜像保存整个目录树和文件系统。 2,可以做到保持原来文件的权限、时间
Linux 文件实时备份 rsync+lsyncd
rsync+lsyncd linux文件实时备份,有具体示例
rsync(线上服务器数据同步与备份工具)
在同步数据的时候,默认情况下,rysnc通过其独特的quick check算法,仅同步大小或者最后修改时间发生变化的文件或目录,也可以根据权限、属主等属性的变化同步,但是需要制定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以可实现快速的同步备份数据。具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能。scp每次都是全量拷贝,rsync可以增量拷贝。类似于ssh的scp命令,优于scp命令。
RSYNC---文件实时同步
rsync是类unix系统下的数据镜像备份工具。一款支持快速完全备份和增量备份的工具,支持本地复制,远程同步等,类似于scp命令;rsync 命令在同步文件之前要先登录目标主机进行用户身份认证,认证过后才能进行数据同步,身份认证方式取决于所使用的协议类型,rsync一般使用两种协议进行数据同步:ssh协议和rsync协议。
CentOS下(rsync+inotify)监听式实现服务器间的备份实时同步
背景:前几天,整理了一篇 (rsync+crontab) 实现文件同步的文章,不过从网上得知,网上很多言论认为在优势上不如监听实现的效果,所以在此进行新的配置尝试,同时建议可以对比两篇文章进行参考,但是要注意服务器扮演角色的不同以及配置方式的差异,切勿混淆 rsync 可以实现服务器间的文件同步,有两种方式 一种是触发式(crontab),另一种是监听式(inotify)
3300




被折叠的 条评论
为什么被折叠?



