目錄:

前言:

在Replica Sets環境下建立索引大致上可以歸類兩大步驟:於PrimarySecondary建立索引。
雖然操作人員於Primary建立索引後,會自動同步到Secondary,在每個Secondary建立索引,
但官方網站建議完成所有的Secondary步驟後,最後於Primary環境下建立索引,對於營運中
的資料庫影響較小。

Create Indexes on the Replica Sets 步驟如下:
  1. 在Secondary建立索引
    • 關閉原有資料庫服務
    • 單獨啟動服務
    • 建立索引
    • 關閉單獨服務,重新啟動(加入Replica Sets)
  2. 在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()


參考資料:

Mongodb官方網站

--
謝謝!