赞
踩
取巧:如果新增副本节点B,可以先人工选择一节点A作为拷贝源,把A节点自身的data/sync目录下的同步时间比较相近(也就是偏移量最大)的mark文件复制一份为B_port.mark,同时把同group的其他storage的data/sync/A_port.mark文件复制一份为B_port.mark,然后把A节点的数据手动复制到B节点,然后启动B节点,最后让节点之间自动完成最近的增量同步,这样效率会比较高,因为节点间的单线程同步太慢。
如果新增加一台tracker server,storage server连接该tracker server,发现该tracker server返回的本组storage server列表比本机记录的要少,就会将该tracker server上没有的storage server同步给该tracker server。
在集群创建初期,集群的存储能力肯定是有限的,那么随着业务的增长,fdfs的空闲空间肯定会越来越小,如果剩余空间小于磁盘的10%(默认)的话,就会导致上传异常(errno code:28)不能再继续往集群中上传文件,由于上传失败会导致大量的重试,最糟糕的情况就是大量的上传重试导致集群崩溃,此时本能正常提供读取文件的服务也会收到影响。如果说很不幸,你们的磁盘没有做 LVM的话,那么就不能在线扩容磁盘空间,所以能做的只有增加group数量或者同时增加group内的storage的数据存储目录Path,这样的话需要为每台机器新增加一块磁盘。
假如group1下面有3个storage,一个文件F被上传到As,如果配置的下载策略是轮询的话,那么被轮询的s怎么确定已经同步到了F呢?
每个s会定期告知tracker,自己往其他节点上已经同步的文件时间戳,这个时间戳列表存在tracker的/data/storage_sync_timestamp.dat文件中。前面说了,从文件的Id可以解析出源s以及文件的上传的时间戳等信息,那么如果说往其中一个节点上同步的时间戳大于接续出来的时间戳,那么就可以肯定这个文件肯定在这个节点上,进而可以通过轮询负载服务器压力。
data/.data_init_flag这个文件在s节点加入的时候创建;
storage_join_time=1000000000 #节点加入的时间
sync_old_done=1 #表示已完成获取源主机的操作
sync_src_server= #已获取源主机IP
sync_until_timestamp=0 #源s同步此时间戳之前的全量文件
data/sync/IP_Port.mark
binlog_index=2 #已经同步到的binlog index
binlog_offset=986836772 #同步的偏移量
need_sync_old=1 #是否需要全量同步
sync_old_done=1 #是否已完成全量同步
until_timestamp=1483511493 #全量同步的截至时间
scan_row_count=53124322 #扫描多少行binglog
sync_row_count=9180742 #同步多少行binlog
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。