脚本
我想重现这样一个场景:我有两个站点(主动和被动)主动站点有es1集群(领导者)被动端有es2集群(追随者)
复制配置和follower从leader index复制数据,一切正常。
接下来的步骤是:
更新leader上的配置(put retention 1s)
“settings”:{“soft\u deletes”:{“retention\u lease”:{“period”:“1s”}}
暂停跟随器
索引一些新文档并等待3-5秒
杀死首领(可能不需要,因为我已经暂停了复制)
带领队回来
在跟随者上恢复复制
据我所知,如果leader在index.soft\u deletes.retention\u lease.period属性定义的期限内返回,follower将“赶上”delta文档。如果保留租约过期-它将尝试复制整个索引(据我所知,它将运行远程恢复过程)。。。https://www.elastic.co/guide/en/elasticsearch/reference/7.x/xpack-ccr.html#ccr-复制机制
通过这样说,第六步之后的期望是:
答。缺少的数据显示在follower中
b。我看到索引已完全复制(我在kibana快照和还原部分中查看)
现实a。delta被复制到follower,我看到了这个文档
b。我没有看到任何从头开始的恢复,不明白为什么
c。连续查看日志中的异常
"stacktrace": ["org.elasticsearch.index.seqno.RetentionLeaseNotFoundException: retention lease with ID [elasticsearch/index_test_replicated/3pwuTXy6S-6lUdAw5-JZHw-following-leader/index_test/bghGBEy7SgWwi3w5hUqzPg] not found",
"at org.elasticsearch.index.seqno.ReplicationTracker.renewRetentionLease(ReplicationTracker.java:397) ~[elasticsearch-7.9.4-SNAPSHOT.jar:7.9.4-SNAPSHOT]",
"at org.elasticsearch.index.shard.IndexShard.renewRetentionLease(IndexShard.java:2207) ~[elasticsearch-7.9.4-SNAPSHOT.jar:7.9.4-SNAPSHOT]",
如果我取消跟踪并再次跟踪-异常消失,我看到索引完全恢复。
你能告诉我吗。
暂无答案!
目前还没有任何答案,快来回答吧!