mongodb分片操作

                       Mongodb分片搭建

可以參考:

http://blog.csdn.net/chris_111x/article/details/52440003

 

圖片1.png 

 

拓撲圖:

圖片2.png 

 

注意:下面的服務器啓動要有順序,不然啓動不了

一、安裝config服務器

 

tar zxf mongodb-linux-x86_64-rhel70-3.2.8.tgz

mv mongodb-linux-x86_64-rhel70-3.2.8/ mongodb-rh7

mv mongodb-rh7/ /usr/local/

 

創建目錄

mkdir -p log

mkdir data

 

Cd data

 mkdir configdb

  圖片3.png

添加環境變量到/etc/profile目錄下

export MONGODB_HOME=/usr/local/mongodb-rh7

export PATH=$MONGODB_HOME/bin:$PATH

 

創建mongod.conf文件

chmod +x mongod.conf

圖片4.png 

systemLog:

         destination: file

         path: /usr/local/mongodb-rh7/log/mongodb.log

         logAppend: true

storage:

         dbPath: /usr/local/mongodb-rh7/data/configdb

 

processManagement:

         fork: true

 

net:

#         bindIP: 127.0.0.1

          port: 27019

#security:

#           authorization: enabled

sharding:

       clusterRole: configsvr

 

 

創建啓動文件:

vi /usr/lib/systemd/system/mongodb.service

 圖片5.png

[Unit]

Description=Mongodb service daemon

After=network.target

 

[Service]

Type=forking

ExecStart=/usr/local/mongodb-rh7/bin/mongod -f /usr/local/mongodb-rh7/bin/mongod.conf

ExecStop=/usr/local/mongodb-rh7/bin/mongod --shutdown -f /usr/local/mongodb-rh7/bin/mongod.conf

PrivateTmp=true

 

[Install]

WantedBy=multi-user.target

 

啓動查看

 圖片6.png

 

二、安裝mongos服務器

安裝步驟和上面的都一樣
但是不一樣的是

 圖片7.png

 圖片8.png

systemLog:

         destination: file

         path: /usr/local/mongodb-rh7/log/mongos.log

         logAppend: true

#storage:

#         dbPath: /usr/local/mongodb-rh7/data/

processManagement:

         fork: true

 

net:

#         bindIP: 127.0.0.1

          port: 2080

#security:

#           authorization: enabled

sharding:

         configDB: 172.16.2.117:27019

 

 

配置啓動文件

圖片9.png 

 圖片10.png

[Unit]

Description=Mongodb service daemon

After=network.target

 

[Service]

Type=forking

ExecStart=/usr/local/mongodb-rh7/bin/mongos -f /usr/local/mongodb-rh7/bin/mongos.conf

ExecStop=/usr/local/mongodb-rh7/bin/mongos --shutdown -f /usr/local/mongodb-rh7/bin/mongos.conf

PrivateTmp=true

 

[Install]

WantedBy=multi-user.target

 

 

啓動查看

 

圖片11.png

 

三、配置shared服務器

 

安裝配置也都一樣但是在配置文件的地方需要修改

 圖片12.png

 圖片13.png

systemLog:

         destination: file

         path: /usr/local/mongodb-rh7/log/mongodb.log

         logAppend: true

storage:

         dbPath: /usr/local/mongodb-rh7/data

processManagement:

         fork: true

 

#net:

#         bindIP: 127.0.0.1

#         port: 27017

#security:

#           authorization: enabled

 

 

 

配合啓動文件

 圖片14.png

 圖片15.png

[Unit]

Description=Mongodb service daemon

After=network.target

 

[Service]

Type=forking

ExecStart=/usr/local/mongodb-rh7/bin/mongod -f /usr/local/mongodb-rh7/bin/mongod.conf

ExecStop=/usr/local/mongodb-rh7/bin/mongod --shutdown -f /usr/local/mongodb-rh7/bin/mongod.conf

PrivateTmp=true

 

[Install]

WantedBy=multi-user.target

 

啓動查看一下

圖片16.png 

 

注意:另外一臺的shared也這一臺配置方法一樣

 

 

四、mongos中添加分片服務器

 ./mongo 172.16.2.134:2080/admin              #連接mongos服務器,並且默認選擇admin數據庫

 

#添加分片服務器

db.runCommand({addshard:"172.16.0.208:27017"})           

db.runCommand({addshard:"172.16.2.177:27017"})

 

圖片17.png 

 

函數結構:db.runCommand({addshard:mongodb服務器地址:端口號 })

如果添加的是副本分片,函數結構:

db.runCommand({addshard:"副本集名稱/服務器地址:端口號"})

 

五、在mongos中添加分片數據庫

 圖片18.png

 

開啓數據庫分片功能,命令很簡單 enablesharding(),這裏我就開啓copp數據庫

#db.runCommand({enablesharding:"copp"})  #開啓copp數據庫分片

六、設置片鍵

圖片19.png 

db.runCommand({shardcollection:"copp.userInfo",key:{"userName":1}})

指定集合中分片的片鍵,這裏我就指定爲UserInfo.userName,即userInfo集合中的userName字段。

 

 

函數結構:

db.runCommand({shardcollection:"數據庫名稱.集合名稱 ",key:{"字段名稱":1}})

 

 

塊(chunk)

在一個shard server內部,MongoDB還是會把數據分爲chunks,每個chunk代表這個shard server內部一部分數據,每個chunk的大小默認是64MB。

chunk的產生,會有以下兩個用途:

Splitting(切分)

當一個chunk的大小超過配置中的chunk size時,MongDB的後臺進程會把這個chunk切分成更小的chunk,從而避免chunk過大的情況

Balancing(均衡)

MongoDB中,balancer是一個後臺進程,負責chunk的遷移,從而均衡各個shard server的負載

 

七、通過mongos向mongodb插入數據

八、注意這裏要切換數據庫到coop庫當中

 

配置完分片後,我們將通過mongos向mongodb插入10萬條記錄

 圖片20.png

#for(vari=0;i<100000;i++){db.userInfo.insert({"userName":"user"+i,"depart":"towngas","userNo":"no."+i})}

插入數據成功後,會返回提示信息:WriteResult({“nInserted”:1})

 

九、分別在mongodb數據庫的userinfo數據

 

 

圖片21.png 

 

十、打印數據庫分片信息

mongos數據服務器(172.16.2.134)下,必須進入到admin數據庫下,

輸入db.runCommand({“listShards”:1})查看所有分片服務器。

#./mongo 172.16.2.134:2080

#use admin

# db.runCommand({"listShards":1})

 圖片22.png

 圖片23.png

有點問題已經開啓了切片功能,但是數據沒有chunks成功

 

 

十一、移除切片服務器:

db.runCommand({"listShards":1})

 圖片24.png

移除

db.runCommand({"removeshard":"172.16.0.208:27017"})

圖片25.png 

db.runCommand({"removeshard":"分片服務器地址和端口"})

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章