fastdfs 数据同步和迁移

最近做了一次fastdfs文件迁移的工作,把操作步骤记录下来,留给后面做迁移的时候参考。

其中有些细节原理尚不清楚,后续有研究再补充。

旧的 fastdfs(110.119.19.20)我们这么命名

  • tracker_old
  • storage_old

新的 fastdfs(110.119.19.21)我们这么命名

  • tracker_new
  • storage_new

我们为了不影响旧的 fastdfs 数据,我们的新的 fastdfs 是没有任何数据,全新的 storage。

然后这里示例的IP是我瞎编的,毕竟不能暴露我自己使用的 fastdfs 地址.

第一步:保证两个 fdfs 相互之间通信正常

这其实是最基本的要求,因为新旧两者需要相互协商传输一些数据。但是我操作的时候是把公网的数据同步到内网服务器当中。公网的服务器无法访问到内网的服务器,导致同步失败。

第二步:修改 storage_new 的配置
  1. 修改 tracker_server 配置,指向 tracker_old 的地址
  2. group_name 要和 storage_old 的配置保持一致
  3. 观察 storage_old 的 store_path_count 配置,storage_new 的 store_path_count 数量需要一致。
  4. 同样的, store_path 的数量配置也要符合 store_path_count 的数量。
  5. 2,3两点不做,tracker_old 会返回 22 的 errorcode。

做完以上配置后,tracker_old 上就能看到多出了一个 storage .

第二步:查看 storage

在 tracker_old 上使用命令fastdfsmonitor 可以查看到tracker 下的每个 storage 的状态。
例如

fdfs_monitor /etc/fdfs/client.conf

得到结果:
Storage 1:
	id = 110.119.19.20
	ip_addr = 110.119.19.20  ACTIVE
......
Storage 2:
	id = 110.119.19.21
	ip_addr = 110.119.19.21  ACTIVE

多说一个,删除节点的命令

fdfs_monitor /etc/fdfs/client.conf delete group1 110.119.19.20

新接入的new_storage 状态依次会是 INIT -> SYNC WAIT -> ACTIVE。

在网上查询的正常会是 INIT -> SYNC WAIT -> SYNCING。我在实际的操作当中没有看到 SYNCING 的状态。但是 ACTIVE 状态下其实是在正常同步数据的。

第四步:查看数据同步的进度

在 old_tracker 的 base_path 目录下有一个 data/sync目录。里面的文件如下

110.119.19.20_23000.mark  # 这个是 new_storage 的同步数据的情况
binlog.000  # old_tracker 的 binlog
binlog.index   # 记录着当前正在使用哪个 binlog 文件

查看 .mark 的文件内容就可看到 数据同步的情况

binlog_index=0
binlog_offset=96250360 # binlog.xxx的偏移量,可以从这个偏移量获取下一行记录
need_sync_old:本storage是否是对侧storage(110.119.19.21)的源结点,同时是否需要从起点同步所有的记录
sync_old_done:是否同步完成过
until_timestamp=1569588371 # 上次同步时间结点
scan_row_count=1524448 # binlog总记录数
sync_row_count=1524448 # 同步的binlog行数

所以从 scan_row_count 和 sync_row_count 的数量对比可以知道同步的进度。当两者一致的时候同步完成。
当然很惨的是实际操作当中碰见过 sync_row_count 的值一直不见增长,但是最后数据还是同步完成的情况。我的做法是统计一下storage/data目录的大小观察一下是否同步正在进行。

第五步:调整 storage_new 的配置

第二个步骤里把 storage_new 的 tracker 配置指向了 tracker_old。在数据同步完成之后,需要把 tracker 的设置修改成 tracker_new.

  1. 修改 tracker_server 配置,指向 tracker_new 的地址.
  2. 还有很重要的一点,base_path 目录下有一个 .data_init_flag 文件。这是一个隐藏文件,用ls -a命令找。文件当中的 sync_src_server=110.119.19.21 配置需要置空。否则 tracker_new 不能够正常的使用。

最后数据迁移就完成了

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值