您好,登錄后才能下訂單哦!
什么是MongoDB復制集?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
一、mongo復制集簡介
近年來,隨著大數據越來越火,非關系型數據庫的重要性被越來越多的人所認知,越來越多的開發者逐漸加入到NoSQL的陣營中。我們知道NoSQL是Not Only SQL的意思,既然如此,很多關系型數據庫所支持的特性在非關系型數據中也是同樣適用,比如復制集。
MongoDB是支持數據復制的,它在復制集方面的優勢與其他數據復制集一樣,它通過將數據部署在多個不同的服務器上,防止因單機故障而造成數據的丟失,借助數據冗余來提高數據的可靠性和安全性。而且還可以通過復制技術構建分布式數據庫,提高系統的訪問性能和安全性。
MongoDB的復制集模式是主從復制。在所有的數據庫服務的機器中,只有一臺機器擔當Primary角色,其余的機器均是Secondaries。擔當Primary角色的機器接收所有來自客戶端的寫(Write)操作請求,并完成該操作,從而保證了數據的一致性。擔當Primary角色的機器還能夠把來自客戶端的讀(Read)操作分配給其他機器(Secondaries),減輕主數據庫服務器的壓力。
二、復制集創建和配置
1.如果之前開了mongo的服務,那么首先要結束掉mongo的服務
cmd:pkill -9 mongo
2.刪除掉之前的dbs和log
cmd:rm -rf /home/m*
3.在三臺機器上分別配置dbs和log(這里使用一臺設備模擬三臺設備做復制集,所以在一臺設備上創建了三個數據庫地址以及日志存放路徑。)
mkdir -p /home/m17 /home/m18 /home/m19 /home/mlog
4.啟動三個實例,并且申明屬于同一個復制集
①、首先要切換到mongodb目錄下,在執行下面的命令。
②、啟動三個實例
./bin/mongod --dbpath /home/m17 --logpath /home/mlog/m17.log --fork --port 27017 --replSet fmong --journal --smallfiles -storageEngine=mmapv1
--dbpath:指定數據庫路徑
--logpath:指定日志存放路徑
--fork:后臺運行
--port:設置啟動的端口
--replSet:設置同一個復制集,復制集的名稱自定義
--journal:32linux需要這個參數才能啟動,64位不需要這個參數
--smallfiles:啟動時占用較小的空間,如果空間不是很缺少,一般不需要這個參數
-storageEngine:設置數據庫的引擎,由于不支持wiredTiger引擎,需要切換支持的引擎,64位系統不需要切換引擎。
三個數據實例啟動成功截圖:
③、查看三個實例啟動成功。
5、配置復制集文件,并初始化復制集
①、首先進入任意一個實例的mongo客戶端命令模式
./bin/mongo
②、切換到admin
③、定義變量
var rsconf ={ _id:'fmong', members:[ { _id:0, host:'192.168.135.1:27017' }, { _id:1, host:'192.168.135.1:27018' }, { _id:2, host:'192.168.135.1:27019' } ] }
查看變量是否生成打印變量名稱: printjson(rsconf)
④、根據上面的配置做初始化:rs.initiate(rsconf)
⑤、查看初始化成功后,各個節點的狀態:rs.status()
6、節點的增加與刪除操作
①、刪除節點:rs.remove('子節點的host:port')
②、查看刪除節點后的復制集節點狀態:rs.status()
③、增加節點:rs.add('子節點的host:port')(注意:使用增加節點命令添加的host必須是上面配置復制集變量包含的host在內的才可以添加,如果沒有包含的host是添加不進去的。如果想添加沒有包含的host需要修改復制集變量,才可以添加。)
7、修改復制集的節點變量和初始化
①、修改之前的復制集變量,只需要修改里面的host子節點即可。例如:將三臺設備修改為兩臺設備。
②、修改完的變量,初始化要使用reconfig方法。
三、復制集添加數據
①、在主節點上添加一條數據。
②、退出主節點,進入子節點
③、查看子節點數據,如果發現報錯為
原因:子節點只能和主節點通信,別人不能操作,需要將slaveOK改為可操作。需要執行如下命令:
rs.slaveOk()
查看數據,已經同步到27018子節點上。
四、模擬主節點宕機,啟動子節點為主節點
①、首先在主節點命令下,切換到admin數據庫,然后執行關閉主節點。
②、登錄子節點
看完上述內容,你們掌握什么是MongoDB復制集的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。