mongo3.2.7部署文件

小白不怕黑發表於2024-10-26

環境搭建與最優配置

  • 3臺機器10.111.62.21,10.111.62.22,10.111.62.23
  • 3個分片。每個分片一主一副一仲裁
  • mongo 版本 mongodb-linux-x86_64-rhel70-3.2.7.tgz(注意版本,根據不同的linux版本選擇不同的安裝包)
  • 保證安裝目錄下的磁碟空間足夠大
  • 伺服器有8G以上的剩餘記憶體(對於生產環境而言)
  • 需要保證三臺伺服器時間一致,否則可能對分片產生影響

1>每個機器上建立如下目錄(選擇目錄是注意磁碟空間大小)

mkdir -p /opt/app/media/mongodb/data/mongodb/mongos/log

mkdir -p /opt/app/media/mongodb/data/mongodb/config/{data,log}

mkdir -p /opt/app/media/mongodb/data/mongodb/shard{1,2,3}/{data,log}

2>編輯如下配置檔案

config.conf

systemLog:

destination: file

###日誌儲存位置

path: /opt/app/media/mongodb/data/mongodb/config/log/config.log

logAppend:true

storage:

##journal配置

journal:

enabled:true

##資料檔案儲存位置

dbPath: /opt/app/media/mongodb/data/mongodb/config/data/

##是否一個庫一個資料夾

directoryPerDB:true

##資料引擎

engine: wiredTiger

##WT引擎配置

wiredTiger:

engineConfig:

##WT最大使用cache(根據伺服器實際情況調節)

cacheSizeGB:4

##是否將索引也按資料庫名單獨儲存

directoryForIndexes:true

##表壓縮配置

collectionConfig:

blockCompressor: zlib

##索引配置

indexConfig:

prefixCompression:true

##埠配置

net:

port:21000

##分片配置

sharding:

##分片角色

clusterRole: configsvr

mongos.conf

##日誌配置

systemLog:

destination: file

##日誌位置

path:/opt/app/media/mongodb/data/mongodb/mongos/log/mongos.log

logAppend: true

##網路配置

net:

##埠配置

port:20000

##分片配置

sharding:

##指定config server

configDB:10.10.73.225:21000,10.10.73.186:21000,10.10.73.226:21000

shard1.conf

systemLog:

destination: file

###日誌儲存位置

path: /opt/app/media/mongodb/data/mongodb/shard1/log/shard1.log

logAppend:true

storage:

##journal配置

journal:

enabled:true

##資料檔案儲存位置

dbPath: /opt/app/media/mongodb/data/mongodb/shard1/data/

##是否一個庫一個資料夾

directoryPerDB:true

##資料引擎

engine: wiredTiger

##WT引擎配置

wiredTiger:

engineConfig:

##WT最大使用cache(根據伺服器實際情況調節)

cacheSizeGB:4

##是否將索引也按資料庫名單獨儲存

directoryForIndexes:true

##表壓縮配置

collectionConfig:

blockCompressor: zlib

##索引配置

indexConfig:

prefixCompression:true

##埠配置

net:

port:22001

replication:

##oplog大小

oplogSizeMB:20480

##複製集名稱

replSetName: shard1

##分片配置

sharding:

##分片角色

clusterRole: shardsvr

shard2.conf

systemLog:

destination: file

###日誌儲存位置

path: /opt/app/media/mongodb/data/mongodb/shard2/log/shard2.log

logAppend:true

storage:

##journal配置

journal:

enabled:true

##資料檔案儲存位置

dbPath: /opt/app/media/mongodb/data/mongodb/shard2/data/

##是否一個庫一個資料夾

directoryPerDB:true

##資料引擎

engine: wiredTiger

##WT引擎配置

wiredTiger:

engineConfig:

##WT最大使用cache(根據伺服器實際情況調節)

cacheSizeGB:4

##是否將索引也按資料庫名單獨儲存

directoryForIndexes:true

##表壓縮配置

collectionConfig:

blockCompressor: zlib

##索引配置

indexConfig:

prefixCompression:true

##埠配置

net:

port:22002

replication:

##oplog大小

oplogSizeMB:20480

##複製集名稱

replSetName: shard2

##分片配置

sharding:

##分片角色

clusterRole: shardsvr

shard3.conf

systemLog:

destination: file

###日誌儲存位置

path: /opt/app/media/mongodb/data/mongodb/shard3/log/shard3.log

logAppend:true

storage:

##journal配置

journal:

enabled:true

##資料檔案儲存位置

dbPath: /opt/app/media/mongodb/data/mongodb/shard3/data/

##是否一個庫一個資料夾

directoryPerDB:true

##資料引擎

engine: wiredTiger

##WT引擎配置

wiredTiger:

engineConfig:

##WT最大使用cache(根據伺服器實際情況調節)

cacheSizeGB:4

##是否將索引也按資料庫名單獨儲存

directoryForIndexes:true

##表壓縮配置

collectionConfig:

blockCompressor: zlib

##索引配置

indexConfig:

prefixCompression:true

##埠配置

net:

port:22003

replication:

##oplog大小

oplogSizeMB:20480

##複製集名稱

replSetName: shard3

##分片配置

sharding:

##分片角色

clusterRole: shardsvr

3>安裝
在每臺機器執行
a.啟動configserver 和 mongos

./mongod -f ../conf/config.conf -fork

./mongos -f ../conf/mongos.conf -fork

b.啟動分片

./mongod -f ../conf/shard1.conf -fork

./mongod -f ../conf/shard2.conf -fork

./mongod -f ../conf/shard3.conf -fork

任意一臺機器執行(除了仲裁節點)
a.初始化分片配置--應當設定優先順序

./mongo --port 22001

use admin

config = {_id:"shard1",members:[{_id:0,host:"10.111.62.21:22001","priority":9},{_id:1,host:"10.111.62.22:22001","priority":8},{_id:2,host:"10.111.62.23:22001",arbiterOnly:true}]}

rs.initiate(config);

#檢視分片

use dns_testdb;

rs.isMaster();

./mongo --port 22002

use admin

config2 = {_id:"shard2",members:[{_id:0,host:"10.111.62.21:22002","priority":9},{_id:1,host:"10.111.62.23:22002","priority":8},{_id:2,host:"10.111.62.22:22002",arbiterOnly:true}]}

rs.initiate(config2);

#檢視分片

use dns_testdb;

rs.isMaster();

./mongo --port 22003

use admin

config3 = {_id:"shard3",members:[{_id:0,host:"10.111.62.22:22003","priority":9},{_id:1,host:"10.111.62.23:22003","priority":8},{_id:2,host:"10.111.62.21:22003",arbiterOnly:true}]}

rs.initiate(config3); #如果報錯可以換一個非仲裁節點執行

#檢視分片

use dns_testdb;

rs.isMaster();

b.串聯路由伺服器與分配副本集

./mongo --port 20000

use admin

sh.addShard("shard1/10.111.62.21:22001,10.111.62.22:22001,10.111.62.23:22001")

sh.addShard("shard2/10.111.62.21:22002,10.111.62.22:22002,10.111.62.23:22002")

sh.addShard("shard3/10.111.62.21:22003,10.111.62.22:22003,10.111.62.23:22003")

c.檢視分片伺服器的配置

db.runCommand({listshards:1});

重新整理分片

db.adminCommand("flushRouterConfig")

安裝完成
4>插入測試

./mongo --port 20000

use admin

建立資料庫,指定資料庫'testdb'進行分片生效

db.runCommand( { enablesharding :"testdb"});

指定資料庫需要分片鍵片

db.runCommand({shardcollection:"testdb.table1",key:{_id:'hashed'}})

###建立Hash片鍵,指定'testdb'資料庫中的'table1'表中的資料進行分片

##插入

for(var i=1;i<10000000;i++) db.table1.save({"a":i+"wwe","acId":"45334"+i,"areaCode":"3346"+i,"deliverd":true,"destId":"13346"+i,"doneTime":"6334"+i,"dup":0,"gwId":"2","gwMsgId":"6334"+i,"mobile":"166673","msgType":"UmsReportReq"+i,"operator":"ChinaMobile","priority":0,"reqId":"1","revTime":"245"+i,"smscSeq":0,"srcReqId":"06235"+i,"status":"DELIVRD","subTime":"26230"+i,"submitTime":"1062348"+i,"traceNo":"92363"+i});

##檢視狀態

db.table1.stats();

擴容方案

知識擴充

相關文章