以文件上传为例,假设一个组内有3台storage server A、B和C,文件F上传到服务器B,由B将文件F同步到其余的两台服务器A和C。我们不妨把文件F上传到服务器B的操作为源头操作,在服务器B上的F文件为源头数据;文件F被同步到服务器A和C的操作为备份操作,在A和C上的F文件为备份数据。
服务器处理文件在操作的时候会写binlog文件,格式: 时间戳,操作类型,文件名
示例如下:
1490251373 C M02/52/CB/CtAqWVjTbm2AIqTkAAACd_nIZ7M797.jpg
1490251373 表示时间戳
C 表示操作类型
M02/52/CB/CtAqWVjTbm2AIqTkAAACd_nIZ7M797.jpg 文件名
binlog文件在 $basepath/data/sync 目录下:
binlog.index : 记录了当前写binlog的索引id。
binlog.001: binglog文件,文件大小最大1G,超过1G,会重新写下个文件,同时更新binlog.index 文件中索引值。
192.168.0.1_23000.mark :记录了同步信息,文件名由同步源IP_端口组成。
同步规则总结:binlog_index=1 //binlog索引idbinlog_offset=528253386 //当前时间binlog 大小need_sync_old=1 //是否需要同步老数据sync_old_done=1 //是否同步完成until_timestamp=1480305224 //scan_row_count=27620682 //扫描记录数sync_row_count=14182877 //同步记录数
1. 只在本组内的storage server之间进行同步;
2. 源头数据才需要同步,备份数据不需要再次同步,否则就构成环路了,源数据和备份数据区 分是用binlog的操作类型来区分,操作类型是大写字母,表示源数据,小写字母表示备份数据;
3. 当先新增加一台storage server时,由已有的一台storage server将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器。
该新增服务器