fastdfs 数据同步和迁移

本文详细介绍了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 不能够正常的使用。

最后数据迁移就完成了

FastDFS 是一种轻量级的分布式文件系统,适用于大规模文件存储访问场景。在进行数据迁移时,通常希望尽可能减少停机时间,同时确保数据的一致性完整性。根据现有信息,以下是一种可行的 FastDFS 数据迁移方法及步骤: ### 数据迁移方法 FastDFS 支持在线迁移,这意味着迁移过程中源存储节点可以停机。新部署的 Storage Server 可以作为源 Storage Server 的备份节点,通过 FastDFS文件同步机制将数据从源节点同步到目标节点。 迁移的基本思路是: 1. 部署新的 Tracker Server Storage Server。 2. 将新的 Storage Server 指向源 Tracker Server,并配置为源 Storage Server 同组的备份节点。 3. 利用 FastDFS 内置的同步机制进行数据同步。 4. 数据同步完成后,将源节点停机以避免新数据写入。 5. 修改新 Storage Server 的配置,使其指向新的 Tracker Server。 6. 确认新 Storage Server 的状态正常,完成迁移。 ### 数据迁移步骤 1. **部署新节点**:在目标环境中部署新的 Tracker Server Storage Server 实例,确保网络可达性端口开放(如 Tracker Server 的 22122 端口)。 2. **配置新 Storage Server**: - 修改新 Storage Server 的配置文件 `storage.conf`,设置 `group_name` 与源节点一致,并将 `tracker_server` 指向源 Tracker Server。 - 设置 `base_path` `store_path` 指向新的存储路径。 3. **启动新 Storage Server**:启动新部署的 Storage Server,它会自动连接源 Tracker Server,并开始从源 Storage Server 同步数据。 4. **监控同步状态**: - 使用 FastDFS 提供的命令行工具(如 `fdfs_monitor`)查看 Storage Server 的状态,确认数据同步是否完成。 - 示例命令: ```bash /usr/bin/fdfs_monitor /etc/fdfs/storage.conf ``` 5. **停止源节点**:在确认数据同步完成后,停止源 Storage Server,以避免在迁移过程中有新的数据写入。 6. **修改新 Storage Server 配置**: - 将新 Storage Server 的 `tracker_server` 配置指向新的 Tracker Server。 - 清空 `sync_src_server` 配置项(可选),以确保新节点再从源节点同步数据。 7. **重启新 Storage Server**:重启新 Storage Server,使其生效新的配置,并连接到新的 Tracker Server。 8. **验证迁移结果**:通过上传下载文件的方式,验证新 Storage Server 是否能够正常工作,并确保数据一致性。 ### 文件删除操作(可选) 如果需要清理源节点的数据,可以使用 `fdfs_test` 工具删除文件: ```bash /usr/bin/fdfs_test /etc/fdfs/client.conf delete <group_name> <remote_filename> ``` ### 配置示例 以下是一个典型的 `mod_fastdfs.conf` 配置示例: ```bash base_path=/fastdfs/fdfs_nginx tracker_server=192.168.1.244:22122 url_have_group_name=true store_path_count=1 store_path0=/fastdfs/fdfs_storage/fdfs_storage_0 ``` ### 注意事项 - 在迁移过程中,确保源节点目标节点之间的网络稳定。 - 迁移前建议备份所有配置文件,以防止配置错误导致服务异常。 - 在生产环境中进行迁移前,建议在测试环境中进行验证。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值