簡介
Solr運維管理,主要有Collection、Core、Shard、Replica的創建刪除與更新,以及後續會添加一些應急處理方案。
Collection
創建Collection
注意:一定要將collection配置文件上傳到zookeeper
刪除Collection
http://localhost:8983/solr/admin/collections?action=DELETE&name=newCollection
刪除collection後,數據目錄和zookeeper中的/solr/configs/newCollection目錄不會被刪除,建議手動刪除。
重新加載配置
http://localhost:8983/solr/admin/collections?action=RELOAD&name=newCollection
修改配置文件後,可以重新上傳至zookeeper中,並執行upload。
修改參數項
http://localhost:8983/solr/admin/collections?action=MODIFYCOLLECTION&name=newCollection&maxShardsPerNode=2
可以修改的屬性有:
maxShardsPerNode
replicationFactor
autoAddReplicas
rule
snitch
有關這些屬性的詳細信息,參見創建部分。
注意:此API只更新collection中的配置屬性。
Core
增加Core
RestFul API創建Core
執行命令
http://hynamet01:8983/solr/admin/cores?action=CREATE&name=collection1_shard3_replica1&instanceDir=collection1_shard3_replica1&dataDir=data&collection=collection1&shard=shard3'
參數描述
collection:collection名稱
name:core名稱,不能和已有的core名稱衝突
shard:shard名稱,不能和已有的shard名稱衝突
instanceDir:本地配置目錄,一般與name保持一致
dataDir:存儲目錄,相對路徑,默認data即可
上面命令會創建一個新的(Shard/Core)
創建好Core後,會默認在solr.solr.home目錄下創建與name相同的目錄,目錄下會生成一個core.properties:
#Written by CorePropertiesLocator
#Thu Jun 23 15:06:13 CST 2016
name=collection1_shard3_replica1
config=solrconfig.xml
schema=schema.xml
shard=shard3
dataDir=data
collection=collection1
coreNodeName=core_node3
solr.solr.home目錄指定:
命令行創建
創建目錄
#在solr.solr.home目錄下創建目錄
mkdir /var/lib/solr/collection1_shard3_replica1
創建core.properties文件,寫入示例文件中的內容
#Written by CorePropertiesLocator
#Thu Jun 23 15:06:13 CST 2016
name=collection1_shard3_replica1
config=solrconfig.xml
schema=schema.xml
shard=shard3
dataDir=data
collection=collection1
coreNodeName=core_node3
創建core
./bin/solr create_core -c collection1_shard3_replica1 -d /var/lib/solr/collection1_shard3_replica1
填寫參數見"RestFul API創建Core"步驟。
界面創建
填寫參數見"RestFul API創建Core"步驟。
注意
1、url中指定哪臺solr服務器,就會在那臺機器上創建該Core
2、建議使用Restful API或者前臺界面創建
刪除Core
http://hynamet01:8983/solr/admin/cores?action=UNLOAD&core=collection1_shard3_repl
Core刪除後數據文件會刪除,但是數據目錄不會刪除,建議手動刪除。
Replication
Shard的一個拷貝。每個Replica存在於Solr的一個Core中。一個命名為"test"的collection以numShards=1創建,並且指定replicationFactor設置為2,這會產生2個replicas,也就是對應會有2個Core,每個在不同的機器或者Solr實例。一個會被命名為test_shard1_replica1,另一個命名為test_shard1_replica2。它們中的一個會被選舉為Leader。
添加Replication
http://hynamet02:8983/solr/admin/collections?action=ADDREPLICA&collection=collection1&shard=shard2&node=hynamet01:8983_solr
參數說明
collection:collection名稱
shard:要添加副本的shard名稱,在Cloud界面上可以查看
node:在哪臺機器上添加該副本,下面會說如何查看nodes
async:異步添加
property.coreNodeName:
界面查看zk live_nodes目錄:
查看添加結果:
副本添加成功後會立即複製數據到新增的副本中。
刪除Replication
http://hynamet02:8983/solr/admin/collections?action=DELETEREPLICA&collection=collection1&shard=shard2&replica=core_node3
參數說明:
collection:collection名稱
shard:副本所屬shardpro
replica:副本所屬的node名稱
界面查看zk /clusterstate.json文件來查找replica的值:
通過所屬collection、shard、副本core名稱來查找node名稱。
Shard Split
SolrCloud不支持自動分片,但是支持手動分片,而且手動分片後得到的新的分片所包含的Document數量有一定的差異(還不清楚SolrCloud是否支持手動分片後大致均分一個分片)。
在執行Split的時候,該Shard就不能執行寫入操作。
http://hynamet01:8983/solr/admin/collections?action=SPLITSHARD&collection=collection1&shard=shard1&async=1000
參數說明:
collection:collection名稱
shard:要刪除的shard1
async:由於刪除操作時間可能會比較長,建議使用異步操作
可選參數
ranges:一個逗號分隔的列表的哈希範圍進制例如範圍= 0-1f4,1f5-3e8,3e9-5dc
split.key:拆分的建
此時已經將shard1分成了兩個子分片:shard1_0和shard1_1,此時,在hynamet01節點上有3個分片處於"Active"狀態。實際上,到目前為止,子分片shard1_0和shard1_1已經完全接管了shard1分片,只是沒有從圖中自動離線退出,這個就需要我們在管理頁面你上手動"unload"掉不需要的shard。
這時,新得到的兩個子分片,並沒有處理之前shard1的兩個副本,他們也需要進行分片(實際上是重新複製新分片的副本),這個過程,如圖所示:
通過API刪除shard(也可以通過界面手動刪除shard對應的所有core):
http://hynamet01:8983/solr/admin/collections?action=DELETESHARD&collection=collection1&shard=shard1&async=1000
參數說明:
collection:collection名稱
shard:要刪除的shard1
async:由於刪除操作時間可能會比較長,建議使用異步操作
可選參數
deleteInstanceDir:是否刪除實例目錄
deleteDataDir:是否刪除數據目錄
deleteIndex:默認會刪除shard下面的每個副本索引數據
閱讀更多 IT維京 的文章