如何合并两套环境的FastDFS数据吗?

  

背景

,,由于历史原因文件数据被存到两套FastDFS环境中,由于项目需求需要将两套环境合为一个,需要提供统一的接口来访问数据,这时就要将两套环境的数据合并到一起了。检查发现两套FastDFS上传生成的关键不同,顾这里不用考虑文件冲突的问题。
,,简单验证了下,将环境B的存储直接拷贝到环境,并通过环境一的域名进行访问,是可以做到数据合并(FastDFS通过Nginx访问数据,故只要Nginx指向的路径上存在文件,访问是没问题的)。但是这带来一个问题,后期FastDFS扩容增加节点时,这些拷贝过来的文件由于不被环境一的tracerServer所识别,所以这部分数据在扩容后可能会出现异常。

环境信息

    <李>环境一地址192.168.1.49文件关键为wKgBMV .....李李 <>环境B地址172.18.73.129文件关键为rBJJgV……李李 <>环境一个新增服务器地址192.168.1.50(用于迁移环境B的数据) <李>环境一的扩展服务器地址192.168.1.51(用于合并后验证集群扩展)

实现原理

,, FastDFS4.0后新增storage_id功能,可以为每个存储的节点指别定id名。当存储迁移时,若迁移后的IP与原服务IP不一致时,只需修改id的指向即可完成迁移。此次由于两套环境都未开启storage_id,故只需在两套环境分别开启,并为其分配不同的id (id不能不冲突)。然后在环境一上新增一个节点,新节点使用的id是环境B已经指定的id,再将环境B的数据放到这个新增节点上,这样两个节点之间会自动相互同步数据,实现合并。
,,若已经开启storage_id,且id冲突,这里猜想只需扩容一次,分配到一个新id,将新id的数据迁移过去再合并即可。

操作过程

一、开启storage_id

 <代码> 1。修改/etc/fdfs/tracker.conf
  # use_storage_id=false
  use_storage_id=true
  
  将100001的ID分配给环境(192.168.1.49),将100002的ID分配给环境B (172.18.73.129)
  2./etc/fdfs/storage_ids.conf修改环境
  [root@localhost fdfs] #猫/etc/fdfs/storage_ids.conf
  # & lt; id>,& lt; group_name>,& lt; ip_or_hostname>
  100001年,group1, 192.168.1.49
  # 100002,group1, 192.168.0.116
  
  3.B/etc/fdfs/storage_ids.conf修改环境
  [root@localhost fdfs] #猫storage_ids.conf
  # & lt; id>,& lt; group_name>,& lt; ip_or_hostname>
  # 100001,group1, 192.168.0.196
  100002年,group1, 172.18.73.129  

重启服务,检查切换情况

如何合并两套环境的FastDFS数据?

二、输出两套环境文件的MD5信息,用于校验。

 <代码> #生成环境一的文件摘要
  (root@localhost ~) #发现/数据/fastdfs/存储/数据/类型f -print0 | xargs md5sum 0比;/tmp/1.49.md5
  #生成环境B的文件摘要
  (root@localhost ~) #发现/数据/fastdfs/存储/数据/类型f -print0 | xargs md5sum 0比;/tmp/73.129.md5  

三,分别打包两套环境的存储。

 <代码> #备份环境的数据,当合并失败时可用于回滚
  (root@localhost数据)# cd/数据/(root@localhost数据)#焦油-czf fastdfs-1.49.bak.tar。广州fastdfs/#备份环境B数据,用于迁移合并
  (root@localhost数据)# cd/数据/(root@localhost数据)#焦油-czf fastdfs-73.129.bak.tar。广州fastdfs/<代码> 

四、迁移合并

 <代码> #修改192.168.1.49/etc/fdfs/storage_ids.conf,增加10002的信息(此10002年前已经预配置为环境B)
  #猫/etc/fdfs/storage_ids.conf root@localhost数据
  # & lt; id>,& lt; group_name>,& lt; ip_or_hostname>
  100001年,group1, 192.168.1.49
  100002年,group1, 192.168.1.50
  
  #在192.168.1.50安装FastDFS,修改/etc/fdfs storage.conf中的服务器信息(与49使用同一跟踪,先不启动)
  bind_addr=192.168.1.50
  tracker_server=192.168.1.49:22122
  
  1.49 #重启的跟踪服务
  (root@localhost数据)# ps ef | grep trac
  根,,,1938年,,,1 0不必?,,,,就是/usr/local/FastDFS/bin/fdfs_trackerd/etc/fdfs/tracker.conf
  根,,,2079年,今天11点49分2014,0/2,就是grep trac
  (root@localhost数据)#杀死1938人
  (root@localhost数据)#/usr/local/FastDFS/bin/fdfs_trackerd/etc/fdfs/tracker.conf
  
  #将172.18.73.129的数据拷贝到1.50的存储上
  1.50 #启动的存储服务
  (root@localhost等)#/usr/local/FastDFS/bin/fdfs_storaged,/etc/fdfs/storage.conf  

五,分别检查1.49/1.50的binlog状态。

可以看到两个节点相互同步的日志,最终两个节点状态为积极为同步完成。

如何合并两套环境的FastDFS数据?”> <h2 class=如何合并两套环境的FastDFS数据吗?