mongodb副本集搭建

本文以mongodb4.2.1為例搭建副本集,記錄搭建流程,便于大家學(xué)習(xí)

1.準備三臺機器(阿里云)

????mongo1? ? ? 47.100.32.119(192.168.0.78)

????mongo2? ? ? 106.15.40.89(192.168.0.79)

????mongo3? ? ? 106.15.40.101(192.168.0.80)

2.安裝mongodb

詳情可參考官方安裝文檔:(本文以ubuntu 16.4為例)

????https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

????1.安裝:

????????1.wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

????????2.echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

????????3.sudo apt-get update

????????4.sudo apt-get install -y mongodb-org

? ??2.啟動:

????????1.sudo service mongod start? ? #以默認配置文件啟動

????????2.sudo service mongod status #查看mongodb狀態(tài)

????????3.sudo service mongod stop? ? #停止服務(wù)

????????4.sudo service mongod restart #重啟服務(wù)

? ??3.卸載:

????1.sudo service mongod stop

????2.sudo apt-get purge mongodb*

????3.sudo rm -r /var/log/mongodb

? ? ? ? sudo rm -r /var/lib/mongodb

3.修改mongodb配置文件

????默認啟動文件為:

????????啟動文件:/usr/bin/mongod

????????配置文件:/etc/mongod.conf

????????數(shù)據(jù)文件:/var/lib/mongodb

????????日志文件:/var/log/mongodb.log

????修改文件位置為:(便于管理和配置,下面的文件位置需要自己手動在服務(wù)器上創(chuàng)建目錄和文件)

????????配置文件:/home/mongo/config/mongod.conf(拷貝默認文件 cp /etc/mongod.conf /home/mongo/config/mongod.conf)

????????數(shù)據(jù)文件:/home/mongo/data

????????日志文件:/home/mongo/log/mongod.log

4.修改配置文件:

????修改完成如下:

? ? #db path(1.修改數(shù)據(jù)存儲位置為自己新建的位置)

????????storage:

????????????? dbPath: /home/mongo/data

????# logger(2.修改日志文件為自己新建的位置)

????????systemLog:

????????????? destination: file

? ????????????logAppend: true

? ????????????path: /home/mongo/log/mongod.log

????# network interfaces (3.修改bindIp,解除綁定到本地限制)

? ? ? ? ?net:

? ????????????port: 27017

????????????? bindIp: 0.0.0.0

????#replication(4.注意修改副本集名稱,三臺服務(wù)器需要統(tǒng)一)

????????replication:

? ????????????replSetName: testRepl

????#sharding:

部分修改如上所示,需要別的可以繼續(xù)修好

5.啟動副本集

????????sudo /usr/bin/mongod --config /home/mongo/config/mongod.conf??

????依次在三臺機器上啟動,按照指定的配置文件, 然后進入本機客戶端:

????????sudo /usr/bin/mongo

????在三臺機器上任意一臺登陸mongodb(我這里在mongo1上登陸)

????#進入數(shù)據(jù)庫

????????user admin

????#進行初始化配置

????????config={_id:"testRepl",members:[{_id:0,host:"47.100.32.119:27017"},{_id:1,host:"106.15.40.89:27017"},{_id:2,host:"106.15.40.101:27017"}]}

????#初始化副本集

????????rs.initiate(config);

????#查詢初始化狀態(tài)(此處可查看到當(dāng)前節(jié)點是主節(jié)點還是副本集)

????????rs.status();

????#重啟當(dāng)前節(jié)點

????????db.shutdownServer();

6.數(shù)據(jù)測試

????找到主節(jié)點所在的服務(wù)器,也可自己設(shè)置主節(jié)點,然后建立test數(shù)據(jù)庫

????????use test

????#往testdb插入數(shù)據(jù)

????????db.testdb.insert({"test1":"test11"})

????#然后在副節(jié)點上查看數(shù)據(jù)是否復(fù)制過來

????#使用test 數(shù)據(jù)庫。

????????repset:SECONDARY> use test;

????????repset:SECONDARY> show tables;

????#如果看見錯誤信息:not master and slaveOk

????解決方案:

????????#mongodb默認是從主節(jié)點讀寫數(shù)據(jù)的,副本節(jié)點上不允許讀,需要設(shè)置副本節(jié)點可以讀。

????????????repset:SECONDARY> db.getMongo().setSlaveOk();

????????#可以看到數(shù)據(jù)已經(jīng)復(fù)制到了副本集。

????????????repset:SECONDARY> db.testdb.find();

問題備注:

????搭建過程遇到的問題:

????????1.防火墻未關(guān)閉,導(dǎo)致三臺機器之間不能相互訪問

????????解決方法:

????????????1.查看防火墻當(dāng)前狀態(tài)

????????????????sudo ufw status

????????????2.開啟防火墻

????????????????sudo ufw enable

????????????3.關(guān)閉防火墻(解決方案是關(guān)閉防火墻,此處列出一系列命令,便于使用查看)

????????????????sudo ufw disable

????????2.三臺機器中有一二臺開啟的權(quán)限認證,此時會報錯

????????解決方法:

????????????將對應(yīng)機器的配置文件中授權(quán)注釋掉

? ??????3.數(shù)據(jù)庫版本不一致,也可能導(dǎo)致失敗

????????解決方法:

????????????統(tǒng)一數(shù)據(jù)庫版本,將不相同版本的數(shù)據(jù)庫卸載重裝,卸載步驟可參看官網(wǎng)文檔

單間完成后即可寫代碼測試,本副本集方案僅為測試使用參考!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容