数据同步介绍
在生产环境,有时会需要两台主机的特定目录实现实时同步。比如,将NFS共享目录的数据文件,自动实时同步到备份服务器特定目录中
同步的方式
实现实时同步的方法
- notify + rsync 方式实现数据同步,notify部署在源文件的服务器上
- sersync :前金山公司周洋(花椒直播)在 inotify 软件基础上进行开发的功能更加强大
工作原理:
- 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化
- 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上
inotify(内核工具)
异步的文件系统事件监控机制,利用事件驱动机制,而无须通过诸如cron等的轮询机制来获取事件,linux内核从2.6.13起支持 inotify,通过inotify可以监控文件系统中添加、删除,修改、移动等各种事件
inotify 内核参数说明:
- max_queued_events:inotify 事件队列最大长度,如值太小会出现 Event Queue Overflow 错误,默认值:16384, 生产环境建议调大,比如:327679
- max_user_instances:每个用户创建inotify实例最大值,默认值:128
- max_user_watches:可以监视的文件的总数量(inotifywait 单进程),默认值:8192,建议调大
vim /etc/sysctl.conf #修改内核参数
inotify-tools工具
指定事件类型
重点监视的范例
实验环境描述
172.16.10.10实时同步至172.16.10.19,rsync采用daemon方式
NFS配置(172.16.10.10)
yum -y install epel-release
yum clean all && yum makecache
yum install inotify-tools -y #部署在要被监控的设备上
echo "123456" > /etc/rsync.pas #设置访问passwordd,在10.19上配置
chmod 600 /etc/rsync.pas
Backup配置(172.16.10.19)
yum install rsync -y
rsync --daemon #设置作为服务端,如果报错,创建/etc/rsyncd.conf文件
vim /etc/rsyncd.conf
echo "rsyncuser:123456" > /etc/rsync.pas #设置验证password
chmod 600 /etc/rsync.pas #设置文件权限
rsync --daemon #配置完需要重新开启进程,后期要制作开机自启
setfacl -m u:nobody:rwx /data/backup/ #给nobody读写执行权限
结尾~
监控和同步已经实现,最后写一个自动化脚本实现自动化实时同步
#制作开机启动的模板参考