FastDFS不同步怎么破

本文深入剖析了FastDFS分布式文件系统的同步机制,包括其binlog同步流程、增量同步原理及mark文件的作用。同时,针对实际部署中遇到的数据不同步问题,提供了详细的解决方案,包括手动修正mark文件以确保数据一致性。

一、背景说明

FastDFS是一款开源的分布式文件系统,具体介绍就不说了,有兴趣的可以自行百度下。

 

以下是官方的架构图:

 

 

一次完整的写交互过程如下:

1、Client向Tracker查询可用的Storage;

2、Tracker随机返回一个Storage;

3、Client向Storage发起写请求;

 

一次完整的读交互:

1、Client向Tracker查询可用的Storage;

2、Tracker随机返回一个Storage;

3、Client向Storage发起读请求;

 

可以看到每个Storage都是对等的,即每个Storage上存储的文件都是全量的。

 

最近一朋友线上FastDFS服务器老是报文件不存在的错误,版本为5.11:

  •  
[2020-08-12 23:16:37] WARNING - file: storage_service.c, line: 6899, client ip: xx.xx.xxx.xxx, logic file: 06/75/xxxx.jpg not exist

架构如下:

2台Tracker,2台Storage。

 

每台机器上都有上述报错。

 

二、FastDFS同步机制分析

 

我们先分析FastDFS如何实现文件在不同服务器的同步的,FastDFS是以binglog的格式同步各自上传/修改的文件的,具体位置在安装目录的data/sync目录下,文件一般叫binlog.000这样,以下为我开发机的截图:

 

 

具体内容如下:

1589182799 C M00/00/00/rBVrTV65AU-ACKi2AAARqXyG2io334.jpg1589182885 C M00/00/00/rBVrTV65AaWAAYwKAAARqXyG2io765.jpg1589427410 C M00/00/00/rBVrTV68vNKAbceuAAARqXyG2io657.jpg

 

第1列是时间戳,第2列是修改内容,示例中大部分是创建文件,所以是C,其它参考文件 storage/storage_sync.h:

 

#define STORAGE_OP_TYPE_SOURCE_CREATE_FILE  'C'  //upload file#define STORAGE_OP_TYPE_SOURCE_APPEND_FILE  'A'  //append file#define STORAGE_OP_TYPE_SOURCE_DELETE_FILE  'D'  //delete file#defi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值