计划三台机器:192.168.0.1,192.168.0.2,192.168.0.3
本次示例 mongodb 版本为3.4
一 部署架构:
二 端口规划:
三 部署实施步骤:
1. 创建数据和日志目录
建立mongos及日志目录
mkdir -p /data/mongodb/mongos/log
建立config server 数据文件存放目录
mkdir -p /data/mongodb/config/data
建立config server 日志文件存放目录
mkdir -p /data/mongodb/config/log
建立shard1 数据文件存放目录
mkdir -p /data/mongodb/shard1/data
建立shard1 日志文件存放目录
mkdir -p /data/mongodb/shard1/log
建立shard2 数据文件存放目录
mkdir -p /data/mongodb/shard2/data
建立shard2 日志文件存放目录
mkdir -p /data/mongodb/shard2/log
建立shard3 数据文件存放目录
mkdir -p /data/mongodb/shard3/data
建立shard3 日志文件存放目录
mkdir -p /data/mongodb/shard3/log
2.config server服务
2.1 按部署规划启动相应节点(三台)
bin/mongod --configsvr --replSet cfgReplSet --dbpath /data/mongodb/config/data --port 19001 --logpath /data/mongodb/config/log/config.log --fork
2.2 连接任意一台config server
bin/mongo --host 192.168.0.1 --port 19001
2.3 执行命令创建副本集
rs.initiate({_id:"cfgReplSet",configsvr:true,members:[{_id:0,host:"192.168.0.1:19001"},{_id:1,host:"192.168.0.2:19001"},{_id:2,host:"192.168.0.3:19001"}]})
3.分片1及副本集服务
3.1按部署规划启动相应节点(三台)
bin/mongod --shardsvr --replSet shard1ReplSet --port 19002 --dbpath/data/mongodb/shard1/data --logpath /data/mongodb/shard1/log/shard1.log --fork --nojournal
3.2 连接任意一台分片1服务
bin/mongo --host 192.168.0.1 --port 19002
3.3 创建副本集并初始化
rs.initiate({_id:"shard1ReplSet",members:[{_id:0,host:"192.168.0.1:19002"},{_id:1,host:"192.168.0.2:19002"},{_id:2,host:"192.168.0.3:19002"}]})
4.同样操作shar2 shard3
bin/mongod --shardsvr --replSet shard2ReplSet --port 19003 --dbpath/data/mongodb/shard2/data --logpath /data/mongodb/shard2/log/shard2.log--fork --nojournal
bin/mongo --host 192.168.0.1 --port 19003
rs.initiate({_id:"shard2ReplSet",members:[{_id:0,host:"192.168.0.1:19003"},{_id:1,host:"192.168.0.2:19003"},{_id:2,host:"192.168.0.3:19003"}]})
bin/mongod --shardsvr --replSet shard3ReplSet --port 19004 --dbpath/data/mongodb/shard3/data --logpath /data/mongodb/shard3/log/shard3.log--fork --nojournal
bin/mongo --host 192.168.0.1 --port 19004
rs.initiate({_id:"shard3ReplSet",members:[{_id:0,host:"192.168.0.1:19004"},{_id:1,host:"192.168.0.2:19004"},{_id:2,host:"192.168.0.3:19004"}]})
5. mongos服务
启动任意一台mongos路由服务
bin/mongos --configdb cfgReplSet/192.168.0.1:19001,192.168.0.2:19001,192.168.0.3:19001 --port 19000 --logpath /data/mongodb/mongos/log/mongos.log --fork
登录路由服务客户端
bin/mongo --host 192.168.0.1 --port 19000
添加分片到集群
sh.addShard("shard1ReplSet/192.168.0.1:19002,192.168.0.2:19002,192.168.0.3:19002")
sh.addShard("shard2ReplSet/192.168.0.1:19003,192.168.0.2:19003,192.168.0.3:19003")
sh.addShard("shard3ReplSet/192.168.0.1:19004,192.168.0.2:19004,192.168.0.3:19004")
6.测试
连接路由登录mongos:
sh.enableSharding("test") #建库
sh.shardCollection("test.Log", { id: "hashed"}) #建表并指定分片主键
use test #切库
for(var i = 1; i <= 100000; i++){db.Log.save({id:i,"message":"message"+i});} #循环插入10万条数据
db.Log.status() #查询对应表的状态
7 遇到错误
安装MongoDB成功,启动的时候提示找不到共享库文件libcrypto.so.10
https://centos.pkgs.org/8/centos-appstream-x86_64/compat-openssl10-1.0.2o-3.el8.x86_64.rpm.html
rpm -i compat-openssl10-1.0.2o-3.el8.x86_64.rpm
8 开启验证
开启验证之前需要先建账号,以防无法连接上 admin下
use admin
db.createUser({user:"账号", pwd:"密码", roles:[{role:"root",db:"admin"}]})
创建验证文档
openssl rand -base64 756 > /data/mongodb/keyfile/KeyFile.file
chmod 400 /data/mongodb/keyfile/KeyFile.file
启动命令添加验证
--keyFile /data/mongodb/keyfile/KeyFile.file
启动时添加内存分配
--wiredTigerCacheSizeGB 8
有验证并分配内存启动 启动前需要全部结束掉
bin/mongod --keyFile /data/mongodb/keyfile/KeyFile.file --configsvr --replSet cfgReplSet --dbpath /data/mongodb/config/data --port 19001 --logpath /data/mongodb/config/log/config.log --fork
bin/mongod --keyFile /data/mongodb/keyfile/KeyFile.file --wiredTigerCacheSizeGB 8 --shardsvr --replSet shard1ReplSet --port 19002 --dbpath /data/mongodb/shard1/data --logpath /data/mongodb/shard1/log/shard1.log --fork --nojournal
bin/mongod --keyFile /data/mongodb/keyfile/KeyFile.file --wiredTigerCacheSizeGB 8 --shardsvr --replSet shard2ReplSet --port 19003 --dbpath /data/mongodb/shard2/data --logpath /data/mongodb/shard2/log/shard2.log --fork --nojournal
bin/mongod --keyFile /data/mongodb/keyfile/KeyFile.file --wiredTigerCacheSizeGB 8 --shardsvr --replSet shard3ReplSet --port 19004 --dbpath /data/mongodb/shard3/data --logpath /data/mongodb/shard3/log/shard3.log --fork --nojournal
bin/mongos --keyFile /data/mongodb/keyfile/KeyFile.file --configdb cfgReplSet/192.168.0.2:19001,192.168.0.3:19001,192.168.0.1:19001 --port 19000 --logpath /data/mongodb/mongos/log/mongos.log --fork
9 有验证登录
登录
use admin
db.auth("账号","密码")
10 结束
pkill -9 mongod
pkill -9 mongos