目錄:
7. [Database][MongoDB][Windows] Create Indexes on the Replica Sets
7. [Database][MongoDB][Windows] Create Indexes on the Replica Sets
前言:
在Replica Sets環境下建立索引大致上可以歸類兩大步驟:於Primary與Secondary建立索引。
雖然操作人員於Primary建立索引後,會自動同步到Secondary,在每個Secondary建立索引,
但官方網站建議完成所有的Secondary步驟後,最後於Primary環境下建立索引,對於營運中
的資料庫影響較小。
Create Indexes on the Replica Sets 步驟如下:
- 在Secondary建立索引
- 關閉原有資料庫服務
- 單獨啟動服務
- 建立索引
- 關閉單獨服務,重新啟動(加入Replica Sets)
- 在Primary建立索引
- 背景執行建立索引
- 切換Secondary至primary
雖然操作人員於Primary建立索引後,會自動同步到Secondary,在每個Secondary建立索引,
但官方網站建議完成所有的Secondary步驟後,最後於Primary環境下建立索引,對於營運中
的資料庫影響較小。
Create Indexes on the Replica Sets 步驟如下:
- 在Secondary建立索引
- 關閉原有資料庫服務
- 單獨啟動服務
- 建立索引
- 關閉單獨服務,重新啟動(加入Replica Sets)
- 在Primary建立索引
- 背景執行建立索引
- 切換Secondary至primary
執行步驟:
一、在Secondary建立索引
Step 1. 開啟命令提示字元(shell or command),連線到primary db確認環境。
Step 2. 下方工具列點選右鍵,選擇啟動服務管理員,點選服務。
Step 3. 找到Secondary服務後,右鍵點選,選擇停止
Step 4. 從第一步驟的命令提是字元,觀看secondary是否已經關閉
rs.status()
Step 5. 啟動另一個命令提示字元(shell or command line),單獨啟動資料庫
mongod --port 27020 --dbpath C:\data1\db1
Step 6. 啟動第三個命令提示字元(shell or command line),連線到剛才的資料庫
mongo --port 27020
Step 7. 切換資料庫後,建立索引。
use database
db.collections.createIndex({"Id":1})
Step 7. 於第五步驟的命令提示字元,確認建立索引狀態。
確認完成後,關閉服務(關閉command line)
Step 8. 重新啟動服務。
Step 9. 於第一步驟的命令提是字元,確認服務啟動,有接上Replca Sets。
依此類推,完成所有Secondary區塊。
二、在Primary建立索引
背景執行的好處是可以同步寫入資料,但需要花費較多時間且可能會影響primary的寫
入效能,適用於較不複雜的資料結構。
下列步驟背景建立索引:
Step 1. 開啟命令提示字元(shell or command),連線到資料庫
切換資料庫後,建立索引
use database
db.collections.createIndex({id:1},{background: true})
Step 2. 觀看索引建立狀態,完成後,Replica Sets匯自動將索引帶到Secondary。
下列步驟為切換Secondary為Primary:
Step 1. 開啟命令提示字元(shell or command),連線到primary db確認環境。
rs.status()
Step 2. 開啟另一個命令提示字元,連線到另一個Secondary,輸入下列指令,使他不會變成
primary。(30秒內)
rs.freeze(30)
Step 3. 在primary環境下,輸入下列指令,即可讓出primary。(30秒內)
rs.stepDown(30)
Step 4. 再次確認Replica Sets狀態,完成。切換成primary的資料庫,會將索引同步到其他 Secondary 。
rs.status()
rs.status()
primary。(30秒內)
rs.freeze(30)
rs.stepDown(30)
rs.status()
0 留言