mongo3.2.7部署文档

小白不怕黑 / 2024-12-29 / 原文

 

环境搭建与最优配置

  • 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();

扩容方案

知识拓展