本次安装操作系统:CentOS7.4,数据库版本:3.6.2企业版
- 系统升级及依赖安装
# 更新软件包,我的是最小安装的centos7.4(建议操作)
$ yum update
# 安装依赖(必须安装)
$ yum install net-snmp
单实例安装
创建用户及目录
# 切换用户root
$ su root
# 创建用户:mongo_single
$ adduser mongo_single
# 创建日志目录
$ mkdir -p /data/log
# 创建数据库目录
$ mkdir -p /data/db
# 将目录归属者变更为mongo_single
$ chown mongo_single:mongo_single /data/log /data/db
下载及解压
# 切换用户mongo_single
$ su mongo_single
# 切换到目录/home/mongo_single下
$ cd
# 使用wget下载下载软件包
$ wget https://downloads.mongodb.com/linux/mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz
# 解压
$ tar -xzvf mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz
# 更改解压后目录名称
$ mv mongodb-linux-x86_64-enterprise-rhel70-3.6.2 mongodb3.6.2
创建配置文件
官方配置文档: https://docs.mongodb.com/manual/reference/configuration-options/
$ cd mongodb3.6.2/
$ vim mongod.cfg
配置文件内容
systemLog:
destination: file
#配置日志所在位置
path: /data/log/mongod.log
storage:
#配置数据所在位置
dbPath: /data/db
net:
#配置IP(自行更改),若不配置访问不通,3.6起新特性
bindIp: 127.0.0.1,192.168.56.101
port: 27017
#以后台进程方式启动fork=true
processManagement:
fork: true
创建启动脚本
# 切换路径到/home/mongo_single
$ cd
$ vim run_mongod.sh
启动脚本文件内容
mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod.cfg
启动MongoDB
$ chmod 751 run_mongod.sh
$ ./run_mongod.sh
如果启动正常会显示以下内容:
[mongo_single@localhost ~]$ ./run_mongod.sh
about to fork child process, waiting until server is ready for connections.
forked process: 21053
child process started successfully, parent exiting
验证是否启动
- 端口查看验证
# 已监听27017端口,则启动成功!
$ ss -tanl
- 登入验证
# 能正常登入,则安装成功!
$ mongodb3.6.2/bin/mongo
复制集安装
使用用户mongo_repl,复制集信息如下:
|复制集名称|节点信息|
|:--|---:|
|myReplSet|192.168.56.101:27007|
|myReplSet|192.168.56.101:27008|
|myReplSet|192.168.56.101:27008|
创建用户及目录
# 切换root用户
$ su root
# 创建用户mongo_repl
$ adduser mongo_repl
# 创建日志目录
$ mkdir -p /data/log07 /data/log08 /data/log09
# 创建数据库目录
$ mkdir -p /data/db07 /data/db08 /data/db09
# 将目录归属者变更为mongo_repl
$ chown mongo_repl:mongo_repl /data/log07 /data/log08 /data/log09 /data/db07 /data/db08 /data/db09
# 查看目录信息
$ ls -l /data
下载解压
# 切换用户
$ su mongo_repl
# 切换到目录/home/mongo_repl下
$ cd
#使用wget下载下载软件包
$ wget https://downloads.mongodb.com/linux/mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz
# 解压
$ tar -xzvf mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz
# 更改解压后目录名称
$ mv mongodb-linux-x86_64-enterprise-rhel70-3.6.2 mongodb3.6.2
创建配置文件
官方配置文档: https://docs.mongodb.com/manual/reference/configuration-options/
创建命令
$ cd mongodb3.6.2/
# 分别创建mongod07.cfg,mongod08.cfg,mongod09.cfg
$ vim mongod07.cfg
$ vim mongod08.cfg
$ vim mongod09.cfg
mongod07.cfg内容
systemLog:
destination: file
#配置日志所在位置
path: /data/log07/mongod.log
storage:
#配置数据所在位置
dbPath: /data/db07
net:
#配置IP(自行更改),若不配置访问不通,3.6起新特性
bindIp: 127.0.0.1,192.168.56.101
port: 27007
#以后台进程方式启动fork=true
processManagement:
fork: true
#副本集配置
replication:
oplogSizeMB: 1024
replSetName: myReplSet
mongod08.cfg内容
systemLog:
destination: file
#配置日志所在位置
path: /data/log08/mongod.log
storage:
#配置数据所在位置
dbPath: /data/db08
net:
#配置IP(自行更改),若不配置访问不通,3.6起新特性
bindIp: 127.0.0.1,192.168.56.101
port: 27008
#以后台进程方式启动fork=true
processManagement:
fork: true
#副本集配置
replication:
oplogSizeMB: 1024
replSetName: myReplSet
mongod09.cfg内容
systemLog:
destination: file
#配置日志所在位置
path: /data/log09/mongod.log
storage:
#配置数据所在位置
dbPath: /data/db09
net:
#配置IP(自行更改),若不配置访问不通,3.6起新特性
bindIp: 127.0.0.1,192.168.56.101
port: 27009
#以后台进程方式启动fork=true
processManagement:
fork: true
#副本集配置
replication:
oplogSizeMB: 1024
replSetName: myReplSet
创建启动脚本
创建命令
# 切换到目录/home/mongo_repl
$ cd
# 分别创建启动脚本run_mongod07.sh,run_mongod08.sh,run_mongod09.sh
$ vim run_mongod07.sh
$ vim run_mongod08.sh
$ vim run_mongod09.sh
run_mongod07.sh内容
mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod07.cfg
run_mongod08.sh内容
mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod08.cfg
run_mongod09.sh内容
mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod09.cfg
启动MongoDB
$ chmod 751 run_mongod07.sh
$ chmod 751 run_mongod08.sh
$ chmod 751 run_mongod09.sh
$ ./run_mongod07.sh
$ ./run_mongod08.sh
$ ./run_mongod09.sh
如果启动正常会显示以下内容:
复制集配置
# 连接27007端口的mongodb,-host:IP地址,-port:端口
$ mongodb3.6.2/bin/mongo -host 192.168.56.101 -port 27007
# 复制集初始化
rs.initiate(
{
_id: "myReplSet",
version: 1,
members: [
{ _id: 0, host : "192.168.56.101:27007" },
{ _id: 1, host : "192.168.56.101:27008" },
{ _id: 2, host : "192.168.56.101:27009" }
]
}
)
如果出现下图则复制集安装成功!
复制集常用命令
常用命令可以通过rs.help()获取
官方文档:https://docs.mongodb.com/manual/reference/method/js-replication/
| 命令 |介绍 |
|:-----|----------:|
|rs.status()|查看复制集状态
|rs.initiate(cfg)|初始化复制集,本教程采用此方式
|rs.conf()|获取复制集配置信息
|rs.reconfig(cfg)|更新复制集的配置信息
|rs.add(hostportstr)|向复制集添加一个新节点
|rs.remove(hostportstr)|从复制集移除一个节点
|rs.stepDown|主节点主动放弃主节点位置,提升其余节点为主节点
|rs.slaveOk()|允许从节点查询,默认从节点无法查询
|rs.printReplicationInfo()|查看oplog信息
|rs.printSlaveReplicationInfo()|查看从节点延时
|db.isMaster()|查看谁为主节点
分片安装
概述
使用用户mongo_shard,mongos使用30000端口,
复制集具体内容如下表:
|复制集名 |节点信息|
|:-----|--------:|
|confogRepl|192.168.56.101:27001|
|confogRepl|192.168.56.101:27002|
|confogRepl|192.168.56.101:27003|
|shard1Repl|192.168.56.101:27017|
|shard1Repl|192.168.56.101:27018|
|shard1Repl|192.168.56.101:27019|
|shard2Repl|192.168.56.101:27027|
|shard2Repl|192.168.56.101:27028|
|shard2Repl|192.168.56.101:27029|
创建用户及目录
# 切换root用户
$ su root
# 用户名可随意起,此处使用mongo_shard
$ adduser mongo_shard
# 创建日志目录
$ mkdir -p /data/logs /data/log01 /data/log02 /data/log03 /data/log17 /data/log18 /data/log19 /data/log27 /data/log28 /data/log29
# 创建数据库目录
$ mkdir -p /data/db01 /data/db02 /data/db03 /data/db17 /data/db18 /data/db19 /data/db27 /data/db28 /data/db29
# 将目录归属者变更为mongo_shard
$ cd /data
$ chown mongo_shard:mongo_shard logs log01 log02 log03 log17 log18 log19 log27 log28 log29 db01 db02 db03 db17 db18 db19 db27 db28 db29
# 查看目录信息
$ ls -l /data
下载解压
# 切换用户
$ su mongo_shard
# 切换到目录/home/mongo_shard
$ cd
#使用wget下载下载软件包
$ wget https://downloads.mongodb.com/linux/mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz
# 解压
$ tar -xzvf mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz
# 更改解压后目录名称
$ mv mongodb-linux-x86_64-enterprise-rhel70-3.6.2 mongodb3.6.2
创建配置文件
官方配置文档: https://docs.mongodb.com/manual/reference/configuration-options/
复制集configRepl配置文件
创建命令
$ cd mongodb3.6.2/
# 创建复制集configRepl的三个配置文件mongod01.cfg,mongod02.cfg,mongod03.cfg
$ vim mongod01.cfg
$ vim mongod02.cfg
$ vim mongod03.cfg
mongod01.cfg内容
systemLog:
destination: file
#配置日志所在位置
path: /data/log01/mongod.log
storage:
#配置数据所在位置
dbPath: /data/db01
net:
#配置IP(自行更改),若不配置访问不通,3.6起新特性
bindIp: 127.0.0.1,192.168.56.101
port: 27001
#以后台进程方式启动fork=true
processManagement:
fork: true
#副本集配置
replication:
oplogSizeMB: 1024
replSetName: configRepl
#shard配置,角色为配置服务器
sharding:
clusterRole: configsvr
mongod02.cfg内容
systemLog:
destination: file
#配置日志所在位置
path: /data/log02/mongod.log
storage:
#配置数据所在位置
dbPath: /data/db02
net:
#配置IP(自行更改),若不配置访问不通,3.6起新特性
bindIp: 127.0.0.1,192.168.56.101
port: 27002
#以后台进程方式启动fork=true
processManagement:
fork: true
#副本集配置
replication:
oplogSizeMB: 1024
replSetName: configRepl
#shard配置,角色为配置服务器
sharding:
clusterRole: configsvr
mongod03.cfg内容
systemLog:
destination: file
#配置日志所在位置
path: /data/log03/mongod.log
storage:
#配置数据所在位置
dbPath: /data/db03
net:
#配置IP(自行更改),若不配置访问不通,3.6起新特性
bindIp: 127.0.0.1,192.168.56.101
port: 27003
#以后台进程方式启动fork=true
processManagement:
fork: true
#副本集配置
replication:
oplogSizeMB: 1024
replSetName: configRepl
#shard配置,角色为配置服务器
sharding:
clusterRole: configsvr
复制集shard1Repl配置文件
创建命令
# 创建复制集shard1Repl的三个配置文件mongod17.cfg,mongod18.cfg,mongod19.cfg
$ vim mongod17.cfg
$ vim mongod18.cfg
$ vim mongod19.cfg
mongod17.cfg内容
systemLog:
destination: file
#配置日志所在位置
path: /data/log17/mongod.log
storage:
#配置数据所在位置
dbPath: /data/db17
net:
#配置IP(自行更改),若不配置访问不通,3.6起新特性
bindIp: 127.0.0.1,192.168.56.101
port: 27017
#以后台进程方式启动fork=true
processManagement:
fork: true
#副本集配置
replication:
oplogSizeMB: 1024
replSetName: shard1Repl
#shard配置,角色为分片服务器
sharding:
clusterRole: shardsvr
mongod18.cfg内容
systemLog:
destination: file
#配置日志所在位置
path: /data/log18/mongod.log
storage:
#配置数据所在位置
dbPath: /data/db18
net:
#配置IP(自行更改),若不配置访问不通,3.6起新特性
bindIp: 127.0.0.1,192.168.56.101
port: 27018
#以后台进程方式启动fork=true
processManagement:
fork: true
#副本集配置
replication:
oplogSizeMB: 1024
replSetName: shard1Repl
#shard配置,角色为分片服务器
sharding:
clusterRole: shardsvr
mongod19.cfg内容
systemLog:
destination: file
#配置日志所在位置
path: /data/log19/mongod.log
storage:
#配置数据所在位置
dbPath: /data/db19
net:
#配置IP(自行更改),若不配置访问不通,3.6起新特性
bindIp: 127.0.0.1,192.168.56.101
port: 27019
#以后台进程方式启动fork=true
processManagement:
fork: true
#副本集配置
replication:
oplogSizeMB: 1024
replSetName: shard1Repl
#shard配置,角色为分片服务器
sharding:
clusterRole: shardsvr
复制集shard2Repl配置文件
创建命令
# 创建复制集shard2Repl的三个配置文件mongod27.cfg,mongod28.cfg,mongod29.cfg
$ vim mongod27.cfg
$ vim mongod28.cfg
$ vim mongod29.cfg
mongod27.cfg内容
systemLog:
destination: file
#配置日志所在位置
path: /data/log27/mongod.log
storage:
#配置数据所在位置
dbPath: /data/db27
net:
#配置IP(自行更改),若不配置访问不通,3.6起新特性
bindIp: 127.0.0.1,192.168.56.101
port: 27027
#以后台进程方式启动fork=true
processManagement:
fork: true
#副本集配置
replication:
oplogSizeMB: 1024
replSetName: shard2Repl
#shard配置,角色为分片服务器
sharding:
clusterRole: shardsvr
mongod28.cfg内容
systemLog:
destination: file
#配置日志所在位置
path: /data/log28/mongod.log
storage:
#配置数据所在位置
dbPath: /data/db28
net:
#配置IP(自行更改),若不配置访问不通,3.6起新特性
bindIp: 127.0.0.1,192.168.56.101
port: 27028
#以后台进程方式启动fork=true
processManagement:
fork: true
#副本集配置
replication:
oplogSizeMB: 1024
replSetName: shard2Repl
#shard配置,角色为分片服务器
sharding:
clusterRole: shardsvr
mongod29.cfg内容
systemLog:
destination: file
#配置日志所在位置
path: /data/log29/mongod.log
storage:
#配置数据所在位置
dbPath: /data/db29
net:
#配置IP(自行更改),若不配置访问不通,3.6起新特性
bindIp: 127.0.0.1,192.168.56.101
port: 27029
#以后台进程方式启动fork=true
processManagement:
fork: true
#副本集配置
replication:
oplogSizeMB: 1024
replSetName: shard2Repl
#shard配置,角色为分片服务器
sharding:
clusterRole: shardsvr
mongos配置文件
创建命令
# 创建mongos配置文件mongos.cfg
$ vim mongos.cfg
mongos.cfg内容
systemLog:
destination: file
path: /data/logs/mongos.log
processManagement:
fork: true
net:
bindIp: 192.168.56.101
port: 30000
sharding:
configDB: configRepl/192.168.56.101:27001,192.168.56.101:27002,192.168.56.101:27003
创建启动脚本
复制集configRepl启动脚本
创建命令
# 切换到目录/home/mongo_shard
$ cd
# 创建configRepl的三个run_mongod01.sh,run_mongod02.sh,run_mongod03.sh
$ vim run_mongod01.sh
$ vim run_mongod02.sh
$ vim run_mongod03.sh
run_mongod01.sh内容
mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod01.cfg
run_mongod02.sh内容
mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod02.cfg
run_mongod03.sh内容
mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod03.cfg
复制集shard1Repl启动脚本
创建命令
# 创建shard1Repl的三个run_mongod17.sh,run_mongod18.sh,run_mongod19.sh
$ vim run_mongod17.sh
$ vim run_mongod18.sh
$ vim run_mongod19.sh
run_mongod17.sh内容
mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod17.cfg
run_mongod18.sh内容
mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod18.cfg
run_mongod19.sh内容
mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod19.cfg
复制集shard2Repl启动脚本
创建命令
# 创建shard2Repl的三个run_mongod27.sh,run_mongod28.sh,run_mongod29.sh
$ vim run_mongod27.sh
$ vim run_mongod28.sh
$ vim run_mongod29.sh
run_mongod27.sh内容
mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod27.cfg
run_mongod28.sh内容
mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod28.cfg
run_mongod29.sh内容
mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod29.cfg
mongos启动脚本
创建命令
# 创建mongos启动脚本run_mongos.sh
$ vim run_mongos.sh
run_mongos.sh内容
mongodb3.6.2/bin/mongos --config mongodb3.6.2/mongos.cfg
启动MongoDB
$ chmod 751 run_mongod01.sh run_mongod02.sh run_mongod03.sh run_mongod17.sh run_mongod18.sh run_mongod19.sh run_mongod27.sh run_mongod28.sh run_mongod29.sh run_mongos.sh
$ ./run_mongod01.sh
$ ./run_mongod02.sh
$ ./run_mongod03.sh
$ ./run_mongod17.sh
$ ./run_mongod18.sh
$ ./run_mongod19.sh
$ ./run_mongod27.sh
$ ./run_mongod28.sh
$ ./run_mongod29.sh
如果启动正常会显示以下内容:
复制集配置
初始化configRepl
# 连接27001端口的mongodb,-host:IP地址,-port:端口
$ mongodb3.6.2/bin/mongo -host 192.168.56.101 -port 27001
# 复制集初始化
rs.initiate(
{
_id: "configRepl",
version: 1,
members: [
{ _id: 0, host : "192.168.56.101:27001" },
{ _id: 1, host : "192.168.56.101:27002" },
{ _id: 2, host : "192.168.56.101:27003" }
]
}
)
如果出现下图则复制集安装成功!
初始化shard1Repl
# 按Ctrl+c断开mongo连接
# 连接27017端口的mongodb,-host:IP地址,-port:端口
$ mongodb3.6.2/bin/mongo -host 192.168.56.101 -port 27017
# 复制集初始化
rs.initiate(
{
_id: "shard1Repl",
version: 1,
members: [
{ _id: 0, host : "192.168.56.101:27017" },
{ _id: 1, host : "192.168.56.101:27018" },
{ _id: 2, host : "192.168.56.101:27019" }
]
}
)
如果出现下图则复制集安装成功!
初始化shard2Repl
# 按Ctrl+c断开mongo连接
# 连接27027端口的mongodb,-host:IP地址,-port:端口
$ mongodb3.6.2/bin/mongo -host 192.168.56.101 -port 27027
# 复制集初始化
rs.initiate(
{
_id: "shard2Repl",
version: 1,
members: [
{ _id: 0, host : "192.168.56.101:27027" },
{ _id: 1, host : "192.168.56.101:27028" },
{ _id: 2, host : "192.168.56.101:27029" }
]
}
)
如果出现下图则复制集安装成功!
启动Mongos
$ ./run_mongos.sh
如果出现下图则mongos启动成功~
配置分片
# 连接到mongos
$ mongodb3.6.2/bin/mongo -host 192.168.56.101 -port 30000
# 添加分片
MongoDB Enterprise mongos> sh.addShard("shard1Repl/192.168.56.101:27017")
MongoDB Enterprise mongos> sh.addShard("shard2Repl/192.168.56.101:27027")
执行效果图:
至此,分片安装结束!
分片常用命令
常用命令可以通过sh.help()获取
官方文档:https://docs.mongodb.com/manual/reference/method/js-sharding/
| 命令 |介绍 |
|:-----|-------:|
|sh.addShard(host)|向集群中添加分片
|sh.enableSharding(dbname)|开启某一数据库的分片功能
|sh.getBalancerState()|获取均衡器状态
|sh.setBalancerState(false)|设置均衡器状态
|sh.shardCollection(fullName,key,unique,options)|设置集合分片策略
|sh.addShardTag("shardName", "tagName");|添加tag
|sh.addTagRange();|设定tag范围