mongodb 3.4分片復制集配置


1:啟動三個實例
mongod -f /home/mongodb/db27017/mongodb27017.conf
mongod -f /home/mongodb/db27018/mongodb27018.conf
mongod -f /home/mongodb/db27019/mongodb27019.conf

配置文件如下:

verbose = true #日志信息
vvvv = true #日志的級別
logpath=/home/mongodb/db27019/log/mongodb.log #日志文件
logappend=true #設置文件記錄格式TRUE為追加,false為覆蓋p
port = 27019 #指定端口號
maxConns = 2000 #最大鏈接數,默認情況是根據系統限制最大不超過2W
pidfilepath =/home/mongodb/db27019/tmp/mongo.pid #進程ID,沒有指定則啟動時候就沒有PID文件
nounixsocket = false #當設置為true時,不會生成socket文件
unixSocketPrefix =/home/mongodb/db27019/tmp #套接字文件路徑,默認/tmp
fork = true #后台運行的守護進程模式
dbpath=/home/mongodb/db27019/data #數據存放目錄
noprealloc = false #預分配方式來保證寫入性能,true會帶來性能下降
nssize = 16 #命名空間默認大小16M,最大2G
#慢日志
profile = 1 #0 關。無分析1僅包括慢操作2包括所有操作。
slowms = 200 #大於200ms的日志將會被記錄下來
replSet=sharingmxq
configsvr=true
2:進入一台機器進行初始化:
mongo
use admin
rs.initiate(
{
_id: "sharingmxq",
configsvr: true,
members: [
{ _id : 0, host : "localhost:27017" },
{ _id : 1, host : "localhost:27018" },
{ _id : 2, host : "localhost:27019" }
]
}
)

3:創建分片的復制集

[root@mxqmongodb2 mongodb]# mkdir -p /home/mongodb/db37017/data
[root@mxqmongodb2 mongodb]# mkdir -p /home/mongodb/db37017/tmp
[root@mxqmongodb2 mongodb]# mkdir -p /home/mongodb/db37017/log
[root@mxqmongodb2 mongodb]# mkdir -p /home/mongodb/db37017/key
[root@mxqmongodb2 mongodb]# mkdir -p /home/mongodb/db37018/data
[root@mxqmongodb2 mongodb]# mkdir -p /home/mongodb/db37018/tmp
[root@mxqmongodb2 mongodb]# mkdir -p /home/mongodb/db37018/log
[root@mxqmongodb2 mongodb]# mkdir -p /home/mongodb/db37018/key
[root@mxqmongodb2 mongodb]# mkdir -p /home/mongodb/db37019/key
[root@mxqmongodb2 mongodb]# mkdir -p /home/mongodb/db37019/log
[root@mxqmongodb2 mongodb]# mkdir -p /home/mongodb/db37019/tmp
[root@mxqmongodb2 mongodb]# mkdir -p /home/mongodb/db37019/data

啟動:

mongod -f /home/mongodb/db37017/mongodb37017.conf
mongod -f /home/mongodb/db37018/mongodb37018.conf
mongod -f /home/mongodb/db37019/mongodb37019.conf

要注意一點,如果是添加分片復制集的話。每一個分片要指定不同的replSet,然后進行初始化。把一個復制集當成是每一個單機節點就好了,但是添加分片的時候必須指定的是master

4:啟動一個mongos實例鏈接配置mongodb數據庫
mongos --configdb "sharingmxq"/localhost:27017,localhost:27018,localhost:27019 --port=30000

然后添加分片節點:

use admin
mongos> sh.addShard('localhost:37017')
{ "shardAdded" : "shard0000", "ok" : 1 }
mongos> sh.addShard('localhost:37018')
{ "shardAdded" : "shard0001", "ok" : 1 }
mongos> sh.addShard('localhost:37019')
{ "shardAdded" : "shard0002", "ok" : 1 }

如果三個分片節點使用的是復制集的話就要用以下的方式添加:

mongos> sh.addShard( "sharingmxq/localhost:37017")
{ "shardAdded" : "sharingmxq", "ok" : 1 }
mongos> sh.addShard( "sharingmxq/localhost:37018")
{ "shardAdded" : "sharingmxq", "ok" : 1 }
mongos> sh.addShard( "sharingmxq/localhost:37019")
{ "shardAdded" : "sharingmxq", "ok" : 1 }

5:分片的配置

mongos --port=30000
為某個數據庫啟動分片
sh.enableSharding("maxiangqian")
為某張表添加分片:
sh.shardCollection("maxiangqian.maxiangqian", { 'id':1} )
sh.shardCollection('aedata.ac01_test',{'id':1,'idcard':1})

6:驗證分片是否完成

mongos --port=30000
use maxiangqian
for (var i = 1; i <= 100000; i++) db.maxiangqian.save({id:i,"test1":"testval1"});

登錄各個分片服務器進行驗證:

99981
1
18
已經完成了分片。但是為什么分布會不均勻呢,因為我們使用的是RANGE分區,再插入他個九十萬看一下。(要區別hash分區和range分區,hash分區具有易擴展性,但是分布的服務器卻不好控制)
for (var i = 100000; i <= 1000000; i++) db.maxiangqian.save({id:i,"test1":"testval1"});
再去驗證一下:
328487 --port=37019
335552 --port=37018
335962 --port=37017


免責聲明!

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



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