数据的实时同步
一、两主机间数据的实时同步
1.同步原理利用监控服务(inotify),监控同步数据服务器目录中信息的变化发现目录中数据产生变化,就利用rsync服务推送到备份服务器上 2.实现方式inotify+rsync方式实现数据同步 3.inotify异步的文件系统时间监控机制,利用事件驱动机制,而无须通过诸如cron等的轮询机制来获取事件,linux内核从2.6.13起支持 inotify,通过inotify可以监控文件系统中添加、删除,修改、移动等各种事件 4.实现数据同步的软件inotify-tools,sersync,lrsyncd 二、inotify和rsync实现实时同步1.inotify对同步数据目录信息的监控 三、具体步骤1.在服务端安装rsync包yum install rsync 2.配置rsync的配置文件vim /etc/rsync.conf uid = root gid = root use chroot = no max connections = 0 ignore errors exclude = lost+found/ log file = /var/log/rsyncd.log //日志文件路径 pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock //锁文件路径 reverse lookup = no hosts allow = 192.168.30.16/24 //允许此主机同步 [backup] path = /backup/ //同步数据路径 comment = backup //共享说明 read only = no //非只读 auth users = javis //允许此用户访问 secrets file = /etc/rsync.pass //账号文件路径 3.服务器端生成验证文件echo "javis:zhuzhuzhu" > /etc/rsync.pass chmod 600 /etc/rsync.pass 4.服务器端准备目录mkdir /backup 5.启动服务rsync --deamon //可加入/etc/rc.d/rc.local实现开机启动 6.客户端配置密码文件echo "zhuzhuzhu" > /etc/rsync.pass chmod 600 /etc/rsync.pass 7.客户端安装软件yum install inotify-tools rsync -y 8.客户端测试同步数据rsync -avz --password-file=/etc/rsync.pass /data/ [email?protected]::backup 9.编写客户端脚本inotify_rsync.sh实现同步#!/bin/bash SRC=‘/data/‘ //需要同步的目录 DEST=‘[email?protected]::backup‘ //同步到的目录 inotifywait -mrq --timefmt ‘%Y-%m-%d %H:%M‘ --format ‘%T %w %f‘ -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR FILE;do FILEPATH=${DIR}${FILE} rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST && echo "At ${TIME} on ${DATE},file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log done 10.inotifywait命令常见选项-m,--monitor 始终保持事件监听 11. --timefmt <fmt>时间格式,参考 man 3 strftime%Y 年份信息,包含世纪信息 12.--format <fmt> 格式定义%T 输出时间格式中定义的时间格式信息,通过 --timefmt option 语法格式指定时间信息 13.-e 选项指定的事件类型create 文件或目录创建delete 文件或目录被删除modify 文件或目录内容被写入attrib 文件或目录属性改变close_write 文件或目录关闭,在写入模式打开之后关闭的close_nowrite 文件或目录关闭,在只读模式打开之后关闭的close 文件或目录关闭,不管读或是写模式open 文件或目录被打开moved_to 文件或目录被移动到监控的目录中moved_from 文件或目录从监控的目录中被移动move 文件或目录不管移动到或是移出监控目录都触发事件access 文件或目录内容被读取delete_self 文件或目录被删除,目录本身被删除unmount 取消挂载 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |