Linux中mongodb複製集 sharding

2021-10-04 12:29:21 字數 4426 閱讀 7966

(一)首先搭建乙個最基礎的mongodb資料庫過程如下

解壓壓縮包

tar -zxvf mongodb-linux-x86_64-3.2.10.tgz
2.然後講壓縮包移動到/usr/local/目錄下同時改名字為mongodb

sudo

mv mongodb-linux-x86_64-3.2.10 /usr/local/mongodb

3.此時就算是安裝好了

4.然後可以開始搭建複製集+sharding的集群了。

(二) 開始搭建複製集+sharding集群

1.首先可以將這個虛擬機器轉殖出來兩個,作為另外兩個節點。

2.然後分別關閉三個虛擬機器的防火牆

由於mongodb分布式複製集初始化時需要各個節點之間的通話,所以需要將各個節點上的防火牆進行關閉。

注意:centos6和centos7關閉防火牆是不一樣的

下面是centos6關閉防火牆的方法:

檢視防火牆的狀態:service iptable status

方法一:service iptables stop (即時生效,臨時關閉防火牆,重系統後防火牆會自動開啟)

方法二:chkconfig iptables off (重啟後生效,永久關閉防火牆)

下面是centos7關閉防火牆的方法:

檢視狀態:firewall-cmd --state

關閉防火牆:systemctl stop firewalld.service

禁止開機自動啟動:systemctl disable firewalld.service

3.然後分別在三個虛擬機器的mongodb目錄建立sharda、shardb和shardc三個目錄。

4.接著分別在三個虛擬機器的mongodb->sharda(b、c)目錄下建立data目錄,接著再建立config、shard1_1和shard2_1,shardb下的data下目錄為config、shard1_2和shard2_2,shardc下的data下目錄為config、shard1_3和shard2_3。如下圖

5.接著配置複製集首先配置shard1所用到的複製集

在servera上啟動shard1所用到的服務節點1,**如下:

在serverb shard1所用到的服務節點2,**如下:

在serverc shard1所用到的服務節點3,**如下:

6.用mongo連線其中一台機器的27017埠的mongod,初始化複製集shard1,**如下:

在mongodb shell中通過rs.initiate命令初始化複製集shard1,結果顯示已經成功的初始化複製集shard1.

7.配置shard2所用到的複製集

在 servera shard2所用到的服務節點1,**如下:

在serverb shard2所用到的服務節點2,**如下:

在serverc shard2所用到的服務節點3,**如下:

8.用mongo連線其中一台機器的27018埠的mongod,初始化複製集shard2,**如下:

./mongo --port 27018

config=,,]

}rs.initiate(config)

在mongodb shell中通過rs.initiate命令初始化複製集shard2,結果顯示已經成功的初始化複製集shard2.

9.配置多台config server

在servera上啟動configserver服務,**如下:

在 serverb config server服務,**如下:

在 serverc config server服務,**如下

10.配置多台mongos

在servera 上啟動mongos 服務**如下:

在serverb 上啟動mongos 服務**如下:

在serverc 上啟動mongos 服務**如下:

11.配置shard cluster

連線到其中一台機器的埠30000的mongos程序,並切換到admin資料進行配置**如下:

/mongo --port 30000

use admin

db.runcommand(

)db.runcommand(

)

shard cluster配置完成後,即可啟用資料庫及集合的分片功能,**如下:

db.runcommand(

)db.runcommand(

})

12.驗證sharding正常工作

連線到其中乙個機器的埠為30000的mongos程序,切換到test資料庫,一邊測試新增資料,**如下

./mongo --port 30000

for(var i=1;i<=100000;i++) db.users.insert();

db.users.stats(

);

13.匯入資料

首先切換資料庫

use zmongodb
可以插入一條資料,保證建立資料庫

db.t1.insert();

然後匯入資料

./mongoimport --host 127.0.0.1 --port 30000 --db zmongodb --collection ztable --type csv --headerline --ignoreblanks --file /home/z/raw_user.csv
–db zmongodb:需要將資料匯入到哪個資料庫,這是用zmongodb資料庫;

–collection ztable:將資料匯入的 collection 名,這裡用ztable,如果這個ztable表之前是不存在的,則會自動建立乙個。如果省略–collection networkmanagement這個引數,那麼會自動新建乙個以 csv 檔名為名的 collection。

–type csv:檔案型別,這裡是 csv;

–headerline:這個引數很重要,加上這個引數後建立完成後的內容會以 csv 第一行的內容為欄位名;

–ignoreblanks:這個引數可以忽略掉 csv 檔案中的空缺值;

–file /home/z/raw_user.csv:這裡就是 csv 檔案的路徑了。

14.啟動資料庫的分片功能

sh.enablesharding(「zyymongodb」)
啟動分片然後開始分片

首先切換到admin資料庫下,

use admin
然後執行

db.runcommand(

})

然後驗證分片是否成功

use zmongodb db.ztable.stats(

)

如下圖分片已經成功

Linux 建立 Mongodb 複製集

參考文章 解壓完成後 修改檔案名字 mv mongodb linux x86 64 4.0.0 mongodb 進入目錄 cd mongodb 然後建立資料夾 conf db log mkdir conf db log 進入資料夾db,建立三個資料夾 rs1 rs2 rs3 mkdir rs1 rs...

mongodb 等待寫入複製

如果希望不管發生什麼都將寫入操作儲存到副本集中,那麼必須要確保寫入操作被同步到副本集的 大多數 可以使用 getlasterror命令來檢查寫入是否成功,有乙個特殊的關鍵字 w 就是 majority rs0 primary db.runcommand connectionid 1 n 1,sync...

MongoDB複製集和分片

複製集 複製提供了兩方面的好處 高效能 和 高可用性 奇數 應確保伺服器為奇數,這樣更容易選舉出主伺服器 複製策略 副本集數量 容錯 部署副本集 1.2.為複製集 中的每個伺服器配置 replset值。可以在檔案 mongodb.conf 中指定,也可以在命令列中指定。mongod port 270...