勾选了两个回复的解决方案 这个应该不用全部回复的解决方案都要勾的吧…
它就会显示 1 个啦,你选了 B 的话 A 就自动取消啦
好的
场景二,执行 balance data 后,30 个副本均匀分布在 5 台机器,所以有某个 partition 不在机器 A 上。
场景三,会影响读写,因为直接强制移走 AB,partition 1 只有 1 个副本了,选不了主。
正确的操作,应该是执行 balance remove A,B, 这个时候,会重新把 AB 上的副本迁移到其他3 台机器上。
好的,谢谢
你好HarrisChu,还有个问题,假如我的机器从3台扩容到5台,用什么方式可以判断数据是否已经同步完成呢
好的谢谢
Hi HarrisChu,不好意思又打扰你了,我又有个问题 假如我storage的数据离线迁移到另一台机器上,或者说换了个ip:port重新加入集群,这时候我怎么能让metad知道这台机器上有哪些parts呢。
我现在试了下,在同样的数据路径上换了端口启动storaged加入metad,在partition distribution那里会提示 “No valid partition” 。
对了,我用的是2.0版本。不清楚最新版有没有解决类似的问题。
补充一下,我做测试的是单机集群,space创建的时候都指定了replica=1。
还有一种情况,我也想询问一下,如果是replica=3的3机器集群,其中有一台机器换了个ip加入集群(仅仅只是换了ip,数据还在),新ip上也会出现"No valid partition" 的情况吗,这种情况该怎么让meta知道我这个新ip上其实是有partition的…
机器上的 part 信息,在集群里是特别重要的,为了防止用户改错,我们没有放开。
对于你的问题:
- 单副本下,只能通过比较后门的方式去做,不建议。
- 多副本,A,B,C 3 副本,然后 C 换成了 D,数据还在的话,可以加入集群后,执行 balance remove C,就会把 D 加进来追数据了,然后因为本来就有数据,其实追数据很就好了。
好的,谢谢。
1.我想确认一下,多副本情况下,ABC 3副本,C换成D,此时C offline,D online。然后balance data remove C,此时D加入集群后是追加日志的方式同步数据,还是类似传送快照的方式同步数据?换句话说,D加入AB这个集群后,AB中的leader在给D同步数据时,是否会类似离线节点重新加入集群,通过比较D的log和leader发过来的log来判断是否追加日志。 而不是直接全量数据复制。
2.有考虑对ip和parts的映射关系做优化吗?比如加一层,维护一张storageID和parts的映射,以及hosts和storageID的映射,storage启动时需要在配置指定自己的storageID。这样一来,storage host就能随便换了。对于迁移或者换机器等需求都挺方便的。
- 是追加日志的。
- 一个是 part 信息对集群特别重要,动态的去改,有可能影响 raft 选举,另外就是这种场景多副本 balance 也更好一点,因为有可能在你下线过程中,有新的数据写进来,再加进来的节点还是要追数据的。
对于换机器的话,后面我们有 br 工具,你只要复制快照就好了。
好的,谢谢
下午好,我输入这条命令curl -Gs “http://xxx:xxx/replace?from=xxx&to=xxx”, 返回的错误信息是write to kvstore failed, operator() , 162
。我想问下这是什么错误呢 看起来是MetaHttpReplaceHostHandler.cpp 第162的报错,但是不知道是拿part就错了还是raft同步错了。
是不是只能给leader角色的meta发这个http请求,我发现给leader机器上的meta发这个可以成功,follower角色会报这个错误
是的,只能发给 meta 的 leader
好的,那个链接说的是给所有meta发这条命令,有一点点误导
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。