基于sersync海量文件实时同步

基于sersync海量文件实时同步 

项目需求:最近涉及到数百万张图片从本地存储迁移到云存储,为了使完成图片迁移,并保证图片无缺失,业务不中断,决定采用实时同步,同步完后再做流量切换。在实时同步方案中进行了几种尝试。

方案1:rsync+inotify同步,最先想到的是此方案,先看下脚本
此前在多台服务器间同步代码就用此方法,基本上没问题,因为代码文件数并不多,但这次面对大量小文件时其缺陷暴露了,同步非常耗时,并且没不能做到实时同步。为什么呢?每次新增数据rsync都会对全目录扫描,对比文件差异,并且是全量同步,耗时很长,新增的数据只能等上一次全量同步完再触发同步,这样就没法实时同步,因此此方案最终被我放弃。

方案2:采用sersync,sersync由金山的一位同学开发,实际上是整合了inotify和rsync上做的二次开发,对监听事件进行了过滤,并且同步时只同步单个文件或单个目录,对于数百万的文件或目录比较多的的情况,只用同步单个子目录而不是整个目录,并且支持多线程同步,也就是说可同时同步多个子目录,这样同步效率大大提高,并且做到了实时同步。 

总结:经过实际检验,sersync对我数百万张图片数据做到了实时同步,新增的数据能够立马同步到另一台,最后上百G的图片数据实现了平滑迁移。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sersync +rsync实现数据实时同步 主机A 装sersync (数据源,源机器)192.168.0.63 主机B装rsync (备份端,目标机器)192.168.0.64 实验结果:主机A进行新增,修改,删除文件的操作,文件或目录发生了变化,主机B会实时同步发生变化的文件或目录。rsync同步的时候是对整个目录进行同步,数据量大时,效率低,sersync可以监控变化的文件,配合rsync同步变化的文件,效率提高。 同步过程 在主机A开启sersync服务,配置sersyncsersync会监控配置文件路径中的文件变化 A主机调用rsync客户端命令把变化的文件同步到B主机 在B主机配置rsync服务,用来接收A主机的推送命令 A主机解压 tar -xzvf sersync2.5.4.tar.gz -C /opt 把目录改名 mv GNU-Linux-x86 sersync 进入目录 cd /opt/sersync 备份配置文件 cp confxml.xml confxml.xml.bak 修改配置文件  vim confxml.xml <sersync> <localpath watch="/var/www/html"> #本地同步数据目录。 <remote ip="B主机ip地址" name="wwwroot"/> #B主机rsync 模块名称 users="B主机/etc/rsyncd.conf配置文件中的auth users值" passwordfile="B主机/etc/rsyncd.conf配置文件中的secrets file值" A主机/opt/sersync/confxml.xml配置文件如下图 B主机/etc/rsyncd.conf配置文件如下图 A主机 加载配置文件并启动 /opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml A主机检查sersync是否运行  ps aux | grep 'sersync'|grep -v 'grep' A主机sersync成功运行后,B主机的/var/www/html目录下输入 watch ls -l 进行观察 A主机的/var/www/html目录下新建或删除文件等操作,B主机查看同步效果 设置sersync开机自动执行 vi /etc/rc.d/rc.local /opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml 添加脚本监控 sersync 是否正常运行 vim check_sersync.sh #!/bin/bash sersync="/opt/sersync/sersync2" confxml="/opt/sersync/confxml.xml" status=$(ps aux |grep 'sersync2'|grep -v 'grep'|wc -l) if [ $status -eq 0 ];then         $sersync -d -r -o $confxml & else echo "$sersync已运行无需再次运行" exit 0; fi 给脚本添加执行权限,并添加到定时任务,每周一执行(分,时,日,月,周) chmod +x /opt /check_sersync.sh crontab -e * * * * 1 /opt/check_sersync.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值