目錄:
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 留言