官方文檔-Translog

對應7.2官方文檔路徑:Index modules ? Translog
官方地址如下:
https://www.elastic.co/guide/en/elasticsearch/reference/7.2/index-modules-translog.html

1.Translog

對Lucene的修改只有在commit時才落盤,這個操作非常耗資源,所以不能每次索引、刪除之后都進行commit操作。在進程退出或者硬件故障時,沒有commit的修改操作將被從lucene索引中移除。

因為對每個修改操作都進行l(wèi)ucene的commit操作非常耗資源,所以構造了每個分片的事務日志與其相關聯(lián),也就是translog。在由內(nèi)部Lucene索引處理之后但在確認之前,所有索引和刪除操作都將寫入事務日志。如果發(fā)生崩潰,則可以在分片恢復時從事務日志中恢復已被確認但尚未包括在上次Lucene提交中的最近事務。

es flush操作就是進行一次lucene commit操作并新開一個translog。flush操作會在后臺自動進行以防止translog日志過大,如果translog過大,會使意外后的恢復過程中的重放操作花費大量時間。也可以通過api進行手動flush,盡管很少需要這樣做。

2.Translog 設置

僅在translog進行了fsync和commit后,傳輸日志中的數(shù)據(jù)才會持久保存到磁盤 。如果發(fā)生硬件故障,操作系統(tǒng)崩潰,JVM崩潰或分片故障,則自上一個translog commit以來寫入的所有數(shù)據(jù)都將丟失。

默認情況下,index.translog.durability設置為request,這意味著僅在主分片和每個分配的副分片的translog成功進行了fsync和commit后,才將索引,刪除,更新或批量請求的成功報告給客戶端 。
如果將index.translog.durability設置為async,則es將每隔index.translog.sync_interval(默認為5秒)時間進行一次fsync和commit操作。

以下可動態(tài)更新的設置可以控制每個索引的translog行為:

index.translog.sync_interval
translog多久被同步到磁盤并提交一次(忽略寫操作)。默認5秒。這個值不能小于100ms。

index.translog.durability
在每一個索引,刪除,更新或批量請求之后是否進行fsync和commit操作。此設置接受以下參數(shù):

  • request:(默認)在每次請求后fsync并commit。如果發(fā)生硬件故障,所有已確認的寫入將已經(jīng)提交到磁盤。
  • async:每隔sync_interval段時間進行fsync并commit。如果發(fā)生故障,則自上次自動提交以來所有已確認的寫入將被丟棄。

index.translog.flush_threshold_size
translog存儲尚未安全地保留在Lucene中的所有操作(即不是Lucene commit的部分)。盡管這些操作可用于讀取,但是如果要恢復關閉的分片,則需要重新索引它們。此設置控制這些操作的最大總大小,以防止恢復花費太長時間。一旦達到最大大小,將進行flush操作,從而生成新的Lucene提交點。默認為512mb。

index.translog.retention.size
要保留的translog文件的總大小。保留更多的事務日志文件會增加恢復副本時執(zhí)行基于操作的同步的機會。如果事務日志文件不足,則副本恢復將回退到基于文件的同步。默認為512mb。

index.translog.retention.age
translog文件保留的最長時間。默認為12h。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容