Linux下將Mongodb單機升級至副本集


將單機升級至副本集,我目前實踐的方法是使用新的服務器做為臨時的primary節點進行服務,通過備份還原的方法將數據同步到新搭建的服務器(最小程度的影響線上的服務)
完成后修改線上web的連接字符串,讓應用連接集群,如果有必要的話也可以將遷移期間產生的數據還原至新服務器

1.首先得准備兩台mongodb服務器,一個做為secondary節點(臨時做為primary節點),一個做為arbiter節點
在mongodb服務器中加入集群元素,keyfile文件是集群內服務器共用的

keyFile=/usr/local/mongodb/keyfile
replSet=rs0

可能需要修改keyfile的訪問權限

chmod 600 keyfile


2.初始化集群

config={
   _id : "rs0",
   members: [
      { _id: 0, host: "192.168.0.2:27017" },
      { _id: 1, host: "192.168.0.3:27017",arbiterOnly:true}
   ]
}
rs.initiate(config)


3.完成后檢查集群的狀態

#查看現在集群的狀態
rs0:PRIMARY> rs.status();
#檢查是否是主節點
rs0:PRIMARY> rs.isMaster();


4.備份還原

1)進入原單機服務器備份 /usr/local/mongodb/bin/mongodump
2)壓縮打包 tar -zcvf backup2020.tar.gz backup2020
3)通過ftp上傳至新服務器
4)解壓 tar -zxvf backup2020.tar.gz
5)還原 
/usr/local/mongodb/bin/mongorestore
6)修改web應用連接字符串,更新部署

5.正常運行后可以將原單機服務器加至集群,這里在同步之前需要將原單機服務器的data文件夾和log文件夾里面的內容刪除(在操作之前需要備份一下數據)
完成同步后,使用rs.stepDown(),將當前主庫降級,primary角色交給192.168.0.1

rs0:PRIMARY> rs.add("192.168.0.1:27017")
rs0:PRIMARY> rs.stepDown()

 

6.強制關閉其中一個primary點后,另外一台服務器會成為primary節點

rs0:PRIMARY> db.shutdownServer();

 
7.設置副本集的優先級(該操作需要在primary節點進行)
首先通過rs.config()查看當前副本集的優先級情況
然后通過rs.reconfig(config)進行更新

rs0:PRIMARY> config=rs.conf()
rs0:PRIMARY> config.members[0].priority=3 rs0:PRIMARY> config.members[0].votes=1 rs0:PRIMARY> rs.reconfig(config);

當節點的投票數為0的時候無法設置優先級,需要修改節點的投票數
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM