復制集概念
Mongodb復制集由一組Mongod實例(進程)組成,包含一個Primary節點和多個Secondary節點,Mongodb Driver(客戶端)的所有數據都寫入Primary 節點,Secondary 節點從 Primary 節點同步寫入的數據,以保持復制集內所有成員存儲相同的數據集,提供數據的高可用。
Primary 節點配置
配置 Primary 節點其實不復雜,配置服務的時候要加上--replSet setname
參數,其中setname
是復制集的名字,同一個組復制集應擁有相同的名字。然后再登錄服務器,并運行以下命令:
rs.initiate()
Secondary 節點配置
配置 Secondary 節點也不復雜,配置服務器的時候也加上--replSet setname
參數,其中setname
要與主節點的名字保持一致。服務器啟動以后,需要登錄剛 Primary 節點,并運行以下命令:
rs.add('host:port')
** 注意:** 如果主服務器和從服務器部署在同一臺機器上,那個這里的 host 的 ip 是不允許和主服務器的 ip 相同。主服務器的地址為 127.0.0.1 ,那么從服務器的地址使用 其實際 ip 地址就行了。
從 Secondary 節點讀取數據
上面步驟完成后,一個復制集就配置好了,兩邊應該可以同步數據了。但 Secondary 節點是不允許讀取數據。如果想要在 Secondary 節點讀取數據,可以登錄 Secondary 節點,并運行如下命令:
rs.slaveOk()
結語
通過上面的步驟,一個 MongoDb 復制集就配置好了。Primary 節點可以讀寫數據 ,Secondary 節點只能讀取數據。需要注意的是,Secondary 節點的數據是從 Primary 節點的數據更新過來的,更新數據需要一定的時間。新寫入的數據最好不要通過Secondary 節點讀取。