W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
如果您擔(dān)心數(shù)據(jù)丟失,當(dāng)然您應(yīng)該這樣做,那么您需要一種備份Solr索引的方法,以便在出現(xiàn)災(zāi)難性故障的情況下能夠快速恢復(fù)。
Solr提供了兩種方法來(lái)備份和恢復(fù)Solr核心或集合,具體取決于您如何運(yùn)行Solr。如果在SolrCloud模式下運(yùn)行,則將使用Collections API。如果以獨(dú)立模式運(yùn)行Solr,則將使用復(fù)制處理程序。
Collections API提供了運(yùn)行SolrCloud時(shí)支持備份的功能。這樣可以在多個(gè)碎片之間生成備份,并將其恢復(fù)為與原始分類(lèi)相同數(shù)量的碎片和副本。
有兩個(gè)命令可用:
備份和恢復(fù)使用Solr的復(fù)制處理程序。Solr包含對(duì)復(fù)制的隱式支持,因此可以使用此API。但是,可以通過(guò)在solrconfig.xml中定義自己的復(fù)制處理程序來(lái)自定義復(fù)制處理程序的配置。有關(guān)配置復(fù)制處理程序的詳細(xì)信息,請(qǐng)參閱“配置ReplicationHandler”一節(jié)。
該backup API需要發(fā)送一個(gè)命令到/replication處理程序來(lái)備份系統(tǒng)。
您可以使用這樣的HTTP命令來(lái)觸發(fā)備份(用正在使用的核心名稱(chēng)替換“getting start”):
backup API示例如下:
http://localhost:8983/solr/gettingstarted/replication?command=backup
該backup命令是一個(gè)異步調(diào)用,它將表示來(lái)自最新索引提交點(diǎn)的數(shù)據(jù)。所有的索引和搜索操作將像往常一樣繼續(xù)對(duì)索引執(zhí)行。
在任何時(shí)間點(diǎn),只能對(duì)一個(gè)核心進(jìn)行一次備份調(diào)用。當(dāng)正在進(jìn)行的備份操作正在發(fā)生時(shí),隨后的恢復(fù)調(diào)用將引發(fā)異常。
備份請(qǐng)求還可以采用以下附加參數(shù):
將創(chuàng)建備份的路徑。如果路徑不是絕對(duì)的,則備份路徑將與Solr的實(shí)例目錄相關(guān)。|name |The snapshot將在名為snapshot.<name>
的目錄中創(chuàng)建。如果沒(méi)有指定名稱(chēng),則目錄名稱(chēng)將具有以下格式:snapshot.<yyyyMMddHHmmssSSS>
。
要保留的備份數(shù)量。如果maxNumberOfBackups
已在solrconfig.xml
中的復(fù)制處理程序指定,則始終使用maxNumberOfBackups
并嘗試使用numberToKeep
將導(dǎo)致錯(cuò)誤。另外,如果指定了備份名稱(chēng),則不會(huì)考慮此參數(shù)。有關(guān)maxNumberOfBackups
的詳細(xì)信息,請(qǐng)參閱配置ReplicationHandler一節(jié)。
用于備份的存儲(chǔ)庫(kù)的名稱(chēng)。如果沒(méi)有指定倉(cāng)庫(kù),那么本地文件系統(tǒng)倉(cāng)庫(kù)將被自動(dòng)使用。
使用CREATESNAPSHOT命令拍攝快照時(shí)使用的提交的名稱(chēng)。
可以監(jiān)視備份操作, 以便通過(guò)將details命令發(fā)送到/replication處理程序來(lái)查看它是否已完成,如以下示例所示:
Status API示例如下所示:
http://localhost:8983/solr/gettingstarted/replication?command=details
輸出代碼片段:
<lst name="backup">
<str name="startTime">Sun Apr 12 16:22:50 DAVT 2015</str>
<int name="fileCount">10</int>
<str name="status">success</str>
<str name="snapshotCompletedAt">Sun Apr 12 16:22:50 DAVT 2015</str>
<str name="snapshotName">my_backup</str>
</lst>
如果失敗了,則會(huì)在響應(yīng)中發(fā)送 snapShootException。
還原備份需要將restore命令發(fā)送到/replication處理程序,然后是要還原的備份的名稱(chēng)。
您可以使用如下命令從備份中還原:
用法示例:
http://localhost:8983/solr/gettingstarted/replication?command=restore&name=backup_name
這會(huì)將指定的索引快照還原到當(dāng)前的核心。還原完成后,搜索將開(kāi)始反映快照數(shù)據(jù)。
該restore請(qǐng)求可以采取這些附加參數(shù):
備份快照文件的位置。如果未指定,它將在Solr的數(shù)據(jù)目錄中查找備份。
要還原的備份索引快照的名稱(chēng)。如果沒(méi)有提供該名稱(chēng),則snapshot.<timestamp>
在位置目錄中查找?guī)в懈袷降膫浞荨K谶@種情況下選擇最新的時(shí)間戳備份。
用于備份的存儲(chǔ)庫(kù)的名稱(chēng)。如果沒(méi)有指定倉(cāng)庫(kù),那么本地文件系統(tǒng)倉(cāng)庫(kù)將被自動(dòng)使用。
該restore命令是一個(gè)異步調(diào)用。一旦恢復(fù)完成,反映的數(shù)據(jù)將是還原的備份索引。
在一個(gè)時(shí)間點(diǎn)上只能對(duì)一個(gè)核心進(jìn)行一次restore調(diào)用。當(dāng)正在進(jìn)行的還原操作正在發(fā)生時(shí),隨后的還原調(diào)用將引發(fā)異常。
您還可以通過(guò)將restorestatus命令發(fā)送到/replication處理程序來(lái)檢查restore操作的狀態(tài),如下例所示:
Status API 示例:
http://localhost:8983/solr/gettingstarted/replication?command=restorestatus
Status API輸出:
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
</lst>
<lst name="restorestatus">
<str name="snapshotName">snapshot.<name></str>
<str name="status">success</str>
</lst>
</response>
狀態(tài)值可以是“In Progress”,“success”或“failed”。如果失敗了,那么也會(huì)在響應(yīng)中發(fā)送一個(gè)“exception”。
快照(snapshot)功能與備份(backup)功能不同,因?yàn)樗饕募粫?huì)復(fù)制到任何位置。索引文件在同一個(gè)索引目錄中被快照,并且可以在進(jìn)行備份時(shí)被引用。
您可以用這樣的HTTP命令觸發(fā)一個(gè)快照命令(將 "techproducts" 替換為您正在使用的核心名稱(chēng)):
Create Snapshot API示例:
http://localhost:8983/solr/admin/cores?action=CREATESNAPSHOT&core=techproducts&commitName=commit1
所述CREATESNAPSHOT請(qǐng)求參數(shù)是:
將快照存儲(chǔ)為的名稱(chēng)。
要在其上執(zhí)行快照的核心的名稱(chēng)。
請(qǐng)求ID來(lái)跟蹤這個(gè)將被異步處理的操作。
該LISTSNAPSHOTS命令列出了特定核心的所有拍攝快照。
您可以使用像這樣的 HTTP 命令觸發(fā)列表快照命令(將 "techproducts" 替換為您正在使用的核心的名稱(chēng)):
List Snapshot API示例:
http://localhost:8983/solr/admin/cores?action=LISTSNAPSHOTS&core=techproducts&commitName=commit1
列表快照請(qǐng)求參數(shù)是:
要列出其快照的核心的名稱(chēng)。
請(qǐng)求ID來(lái)跟蹤這個(gè)將被異步處理的動(dòng)作。
該DELETESNAPSHOT命令刪除特定核心的快照。
您可以像這樣使用HTTP命令來(lái)觸發(fā)刪除快照(將“techproducts”替換為正在使用的核心的名稱(chēng)):
Delete Snapshot API示例:
http://localhost:8983/solr/admin/cores?action=DELETESNAPSHOT&core=techproducts&commitName=commit1
刪除快照請(qǐng)求參數(shù)是:
指定要?jiǎng)h除的提交名稱(chēng)
我們要?jiǎng)h除快照的核心的名稱(chēng)
請(qǐng)求ID來(lái)跟蹤這個(gè)將被異步處理的操作
Solr提供了接口來(lái)插入不同的存儲(chǔ)系統(tǒng)進(jìn)行備份和還原。例如,您可以在本地文件系統(tǒng)(如EXT3)上運(yùn)行Solr群集,但可以將索引備份到HDFS文件系統(tǒng),反之亦然。
存儲(chǔ)庫(kù)接口需要在solr.xml文件中配置。在運(yùn)行備份/恢復(fù)(backup/restore )命令時(shí),我們可以指定要使用的存儲(chǔ)庫(kù)。
如果未配置任何存儲(chǔ)庫(kù),則將自動(dòng)使用本地文件系統(tǒng)存儲(chǔ)庫(kù)。
示例solr.xml部分用于配置類(lèi)似HDFS的存儲(chǔ)庫(kù):
<backup>
<repository name="hdfs" class="org.apache.solr.core.backup.repository.HdfsBackupRepository" default="false">
<str name="location">${solr.hdfs.default.backup.path}</str>
<str name="solr.hdfs.home">${solr.hdfs.home:}</str>
<str name="solr.hdfs.confdir">${solr.hdfs.confdir:}</str>
</repository>
</backup>
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: