关于translog的疑问

作者 hello_elastic | 发布于2018年09月27日 | 阅读数:163

看资料说如果将translog设置成request可靠性最高,想知道这是百分百的可以保证数据安全吗?想到了几点问题:1.index成功但写translog失败,这种情况客户端应该是返回失败吧?那这样会造成数据重复?
2.比如一个bluk请求,发送数据量10条,es在服务端成功处理5条后服务器宕机,那这个操作还没有完成,应该还没有记录到translog中,这种情况要么丢失剩下的5条或者再次批量提交导致数据重复?
麻烦解疑,谢谢
已邀请:

novia - 1&0

赞同来自: 陈水鱼

translog是先于index成功的,不可能出现index成功,translog失败的情况。如果出现,那就是elasticsearch的bug了吧

yayg2008

赞同来自:

问题1,客户端收到的是索引失败,对于是否会有数据重复,要看你是否有指定id,ES是通过id来判断一条记录是否存在,如果不指定,ES会自动生成随机id,这种情况下也就没有重复的概念;
问题2,同问题1,关键看是否有自定义的id。

zqc0512 - andy zhou

赞同来自:

关键是你的业务需求,写入量小的话,不会出来数据丢失的情况,关键是在大数据量写入的时候才有可能会出现问题,
translog是保持一直性的,我们一般都是asnyc异步的,同步写入的时候在5.6.4上面有BUG,进程有时候会一直卡住,不重新启动节点,进程一直在。

要回复问题请先登录注册