Slave復制

2018-01-16 11:27 更新

Slave復制(Slave Replication)

master完全不知道slave。

slave服務器持續(xù)不斷地輪詢master(取決于pollInterval參數(shù))以檢查master的當前索引版本。如果slave服務器發(fā)現(xiàn)master服務器有更新版本的索引,它將啟動復制過程。步驟如下:

  • slave發(fā)出一個filelist命令來獲取文件列表。此命令返回文件的名稱以及一些元數(shù)據(jù)(例如大小,上次修改的時間戳和別名(如果有的話))。
  • 如果slave目錄中有本地索引中的任何文件,則它將檢查其自身的索引。然后運行filecontent命令來下載缺少的文件。這將使用自定義格式(類似于HTTP塊編碼)來下載完整內(nèi)容或每個文件的一部分。如果連接中斷,下載將從失敗的地方恢復。在任何時候,slave嘗試5次,然后才能完全放棄一個復制。
  • 這些文件被下載到一個臨時目錄中,以便在下載過程中如果slave服務器或master服務器崩潰,則不會損壞任何文件。相反,當前的復制將會中止。
  • 下載完成后,所有新文件將被移動到實時索引目錄,并且文件的時間戳與master服務器上的對應文件相同。
  • slave的ReplicationHandler在slave設備上發(fā)出提交命令,并加載新的索引。

復制配置文件

要復制配置文件,請使用confFiles參數(shù)列出它們。只有在 master 的 Solr 實例的conf目錄中找到的文件才會被復制。

只有當索引本身被復制時,Solr才會復制配置文件。這意味著即使在master服務器上更改了配置文件,只有在master服務器的索引上有新提交/優(yōu)化之后,該文件才會被復制。

與索引文件不同的是,時間戳足以確定它們是否相同,配置文件將與其校驗和進行比較。如果它們的校驗和是相同的,則認為這些schema.xml文件(在master和slave上)是相同的。

作為復制配置文件的一個預防措施,Solr將配置文件復制到臨時目錄,然后將它們移動到conf目錄中的最終位置。舊的配置文件被重命名并保存在同一個conf/目錄中。ReplicationHandler不會自動清理這些舊文件。

如果復制涉及至少下載一個配置文件,則ReplicationHandler將發(fā)出核心重新加載命令而不是提交命令。

解決slave服務器上的損壞問題

如果將文檔添加到slave,則slave不再與其master同步。但是,slave不會采取任何行動使其自身同步,直到master有新的索引數(shù)據(jù)。

當在master設備上進行提交操作時,master設備的索引版本與slave設備的索引版本不同。然后,slave服務器獲取文件列表,發(fā)現(xiàn)master服務器上的一些文件也存在于本地索引中,但大小和時間標記不同。這意味著master和slave具有不兼容的索引。

為了解決這個問題,slave服務器將所有索引文件從master服務器復制到一個新的索引目錄,并要求核心從新目錄中加載新的索引。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號