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