数据写入流程
1.数据同时写入indexbuffer缓冲和translog日志文件
2.默认每隔一秒钟,buffer中的数据被写入新的segmentfile,并进入os cache,此时segment被打开并供search使用
3.buffer被清空
4.重复1~3的步骤,新的segment不断添加,buffer不断被清空,而translog中的数据不断累加
commit(flush)操作
当translog文件达到一定的阀值(默认512M),commit操作发生
1.buffer中的所有数据写入一个新的segment,并写入os cache,打开供使用
2.buffer被清空
3.一个commitponit被写入磁盘,标明了所有写入的indexsegment
4.oscache中的所有indexsegment缓存数据,被fsync强行刷到磁盘上
5.现有的translog被清空,创建一个新的translog
lunce的数据恢复
基于translog和commit point,如何进行数据恢复
fsync+清空translog,就是flush,默认每隔30分钟flush一次,或者当translog过大的时候,也会flush
POST /my_index/_flush,一般来说别手动flush,让它自动执行就可以了
translog,每隔5秒被fsync一次到磁盘上。在一次增删改操作之后,当fsync在primary shard和replica shard都成功之后,那次增删改操作才会成功