首页 > 系统管理 > 构建企业实时备份数据服务器(Rsync+inotify)
2015
02-12

构建企业实时备份数据服务器(Rsync+inotify)

一、Rsync简介



Rsync(remotesynchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远
程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

二、Rsync优点与不足


优点:

  • 快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。
  • 安全:rsync 允许通过 ssh 协议来加密传输数据。
  • 更少的带宽:rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
  • 特权:安装和执行 rsync 无需特别的权限

缺点:

  • 由于 rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输,所以不适宜传输大数据
  • Rsync不能实时的去监测文件系统中添加、删除、修改等操作,无法及时的同步数据。

 

三、Inotify 简介


Inotify
是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统
中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样
的一个第三方软件。

四、Rsync+Inotify组合实验案例


  • Web ? ?IP: ? 172.16.10.1
  • Mysql ?IP: ? 172.16.10.2
  • Backup IP: ? 172.16.10.3

1423730295811547

 

Backup服务器配置

1、安装部署Rsync服务器?

 

[root@localhost?~]#?yum?install?rsync?-y
[root@localhost?~]#?rpm?-qa?|?grep?rsync
rsync-3.0.6-9.el6.x86_64
[root@localhost?~]#

?2、创建rsync的主配置文件

[root@localhost?~]#?vim?/etc/rsyncd.conf
uid?=?nobody
gid?=?nobody
user?chroot?=?no
max?connections?=?200
timeout?=?600
pid?file?=?/var/run/rsyncd.pid
lock?file?=?/var/run/rsyncd.lock
log?file?=?/var/log/rsyncd.log
[web]
path=/backup/web
ignore?errors
read?only?=?no
list?=?no
hosts?allow?=?172.16.10.0/255.255.0.0
auth?users?=?test
secrets?file?=?/etc/rsyncd.password
[mysql]
path=/backup/mysql
ignore?errors
read?only?=?no
list?=?no
hosts?allow?=?172.16.10.0/255.255.0.0
auth?users?=?test
secrets?file?=?/etc/rsyncd.password

 

注释:

第1-2行:指定备份的用户和组,nobody为任何用户

? ?第3行: ?此处传输文件时无需chroot到path参数所指定的目录下

? ?第4行: ?最大连接数

? ?第5行: ?覆盖客户指定的IP超时时间,也就是说rsync服务器不会永远等待一个崩溃的客户端。

? ?第6-8行:指定pid,lock,log的文件

? ?第9行: ?指定认证模块名称,注意此模块是对外公布的模块

? ?第10行: 指定备份的路径

? ?第11行: 可以忽略一些无关的IO错误

? ?第12行: 允许可读可写

? ?第13行: 不允许列清单

? ?第14行: 只允许172.16.10.0网段进行同步,拒绝其它IP

? ?第15行: 认证的用户名

? ?第16行: 指定密码文件的存放路径

3、创建备份目录并设置目录的权限并启动rsync服务??

[root@localhost?~]#?cd?/
[root@localhost?/]#?mkdir??-pv?/backup/web
[root@localhost?/]#?mkdir??-pv?/backup/mysql
[root@localhost?/]#?chmod?-R?777/backup/
[root@localhost?/]#?echo?"test:test">?/etc/rsyncd.password
[root@localhost?/]#?chmod?600/etc/rsyncd.password
[root@localhost?~]#rsync?--daemon?--config=/etc/rsyncd.conf?#启动服务
[root@localhost?~]#?netstat?-anpt?|?grep?rsync??#rsync监听873端口
tcp????????0??????0?0.0.0.0:873?????????????????0.0.0.0:*???????????????????LISTEN??????1306/rsync
[root@localhost?~]#

?

Web服务器与Mysql服务器配置

1、创建认证文件并设置权限 (web与mysql)

[root@localhost?~]#?echo?"test"?>?/etc/rsyncd.password
[root@localhost?~]#?chmod?600?/etc/rsyncd.password

2、服务器进行服务测试(web服务配置成功)

[root@localhost?~]#?rsync?-avp?/etc/fstab?test@172.16.10.3::web??--password-file=/etc/rsyncd.password
sending?incremental?file?list
fstab
sent?848?bytes??received?27?bytes??1750.00?bytes/sec
total?size?is?779??speedup?is?0.89
[root@localhost?~]#

此时rsync已经配置成功但是不能监控文件的变化此时就需要安装inotify

由于inotify特性需要Linux内核的支持,在安装inotify-tools前要先确认Linux系统内核是否达到了2.6.13以上,如果Linux内核低于2.6.13版本,就需要重新编译内核加入inotify的支持

3、判断内核是否支持inotify:(web与mysql)

[root@localhost?~]#?uname?-r
2.6.32-358.el6.x86_64

4、检查系统是否支持inotify(Web与Mysql)

[root@localhost?~]#?ll?/proc/sys/fs/inotify/
total?0
-rw-r--r--?1?root?root?0?Sep??1?10:02?max_queued_events
-rw-r--r--?1?root?root?0?Sep??1?10:02?max_user_instances
-rw-r--r--?1?root?root?0?Sep??1?10:02?max_user_watches
[root@localhost?~]#

如果有以上3个文件说明系统默认是支持inotfiy功能的

5、安装inotfiy-tools工具(Web与Mysql)

[root@localhost?~]#?wget?http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
[root@localhost?~]#tar?xf?inotify-tools-3.14.tar.gz
[root@localhost?~]#?cd?inotify-tools-3.14
[root@localhost?inotify-tools-3.14]#?./configure?--prefix=/usr/local/inotify
[root@localhost?inotify-tools-3.14]#?make?&&?make?install

6、创建rsync脚本(web服务器)

[root@localhost?~]#?vim?/etc/rsync.sh
#!/bin/bash
host=172.16.10.3
src=/usr/local/httpd/apache/htdocs
des=web
user=test
/usr/local/inotify/bin/inotifywait?-mrq?--timefmt?'%d/%m/%y?%H:%M'?--format?'%T?%w%f%e'?-e?modify,delete,create,attrib?$src?\
|?while?read?files
??do
/usr/bin/rsync?-vzrtopg?--delete?--progress?--password-file=/etc/rsyncd.password?$src?$user@$host::$des
echo?"${files}?was?rsynced"?>>/tmp/rsync.log?2>&1
done

创建rsync脚本(Mysql服务器)

[root@localhost?~]#?vim?/etc/rsync.sh
#!/bin/bash
host=172.16.10.3
src=/data
des=mysql
user=test
/usr/local/inotify/bin/inotifywait?-mrq?--timefmt?'%d/%m/%y?%H:%M'?--format?'%T?%w%f%e'?-e?modify,delete,create,attrib?$src?\
|?while?read?files
??do
/usr/bin/rsync?-vzrtopg?--delete?--progress?--password-file=/etc/rsyncd.password?$src?$user@$host::$des
echo?"${files}?was?rsynced"?>>/tmp/rsync.log?2>&1
done

注释:

–timefmt:指定时间的输出格式。
? ? –format:指定变化文件的详细信息。

 

7、设置脚本权限(Web与Mysql)

[root@localhost?inotify-tools-3.14]#?chmod?764?/etc/rsync.sh

?8、Web服务器测试

[root@localhost?inotify-tools-3.14]#?bash?-x??/etc/rsync.sh
+?host=172.16.10.3
+?src=/usr/local/httpd/apache/htdocs
+?des=web
+?user=test
+?read?files
+?/usr/local/inotify/bin/inotifywait?-mrq?--timefmt?'%d/%m/%y?%H:%M'?--format?'%T?%w%f%e'?-e?modify,delete,create,attrib?/usr/local/httpd/apache/htdocs

此时脚本处于监控状态:

Web服务器创建文件检查是否能及时同步

[root@localhost?~]#?cd?/usr/local/httpd/apache/htdocs/
[root@localhost?htdocs]#?touch?abc

查看脚本状态:

 

在Mysql服务器上测试同理,此处省略。。

9、让脚本开机时自动启动(web与mysql)

root@localhost?inotify-tools-3.14]#?echo?"/etc/rsync.sh?"?>>?/etc/rc.local

至此整个实验过程告一段落。在此实验中遇到的问题,总结如下:

 

同步时遇到的问题

rsync:?failed?to?connect?to?172.16.10.2:?Connection?refused?(111)
rsync?error:?error?in?socket?IO?(code?10)?at?clientserver.c(124)?[sender=3.0.6]

故障原因:

服务没有启动

解决办法:

rsync?--daemon?--config=/etc/rsyncd.conf

到此结束,希望能帮到你!

 

 




最后编辑:
作者:tshare365
这个作者貌似有点懒,什么都没有留下。
捐 赠您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击

留下一个回复