下载安装
机器环境:redhat linux
安装方式:yum
安装版本:3.4
- Configure repository.
创建文件 /etc/yum.repos.d/mongodb-enterprise.repo
[mongodb-enterprise]
name=MongoDB Enterprise Repository
baseurl=https://repo.mongodb.com/yum/redhat/$releasever/mongodb-enterprise/3.4/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
- Install the MongoDB Enterprise packages and associated tools.
sudo yum install -y mongodb-enterprise
- default file path
/etc/mongod.conf 配置文件
/var/log/mongodb 日志路径
/var/lib/mongo 默认的数据文件
/usr/bin/mongo 二进制文件
/var/run/mongodb 进程文件
- run MongoDB
sudo service mongod start
sudo service mongod stop
sudo service mongod restart
指定配置文件启动
mongod -f /etc/mongod.conf
mongod --config /etc/mongod.conf
- Shell
mongo 127.0.0.1:27017
官方推荐yum安装,但是yum不可用或者使用不便时也可tar包安装,方式如下:
机器环境:redhat 7.3
安装方式:tar包
Install any missing dependencies.
RedHat Version 7
yum install cyrus-sasl cyrus-sasl-gssapi cyrus-sasl-plain krb5-libs libcurl libpcap lm_sensors-libs net-snmp net-snmp-agent-libs openldap openssl rpm-libs tcp_wrappers-libs
- Download
官网下载中心
tar -zxvf mongodb-linux-s390x-enterprise-rhel72-3.4.5.tgz 下载后解压缩tar包
- Path
cp ~/mongodb-linux-s390x-enterprise-rhel72-3.4.5/bin/* /bin/
复制集(三个节点)
搭建三个节点的最简复制集,一个primary节点,两个secondary节点
- 配置文件
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Where and how to store data.
storage:
dbPath: /opt/media/data/mongo
directoryPerDB: true
journal:
enabled: true
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
# network interfaces
net:
port: 27017
# bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.
replication:
replSetName: rs0
- 启动实例
按照配置文件配置primary.conf以及secondary.conf并启动三个实例
mongod -f /opt/conf/mongo/primary.conf
mongod -f /opt/conf/mongo/secondary.conf
`
- 初始化复制集
在预定的primary节点上打开mongo shell
mongo 127.0.0.1:27017
- rs.initiate()初始化
rs.initiate( {
_id : "rs0",
members: [ { _id : 0, host : "实例的主机ip:27017" } ]
})
host:实例的ip和端口,
注意:这里不能直接使用rs.initiate(),这样会采用默认的复制集配置,机器名字和端口,复制集连接会出错
你也可以使用下面的方式,shell的本质是js脚本
config={_id : "rs0",members : [{_id : 0, host : “实例的主机ip:27017”}]}
回车后再输入
rs.initiate(config);
- rs.conf() 查看初始化复制集配置
- 添加secondary节点
rs.add("secondary_1_ip:port")
rs.add("secondary_2_ip:port")
- 查看复制集的状态
rs.status()
分片部署
部署简单的分片集群,包括两个数据复制集(rs0,rs1)、一个配置复制集(rsc),两个mongos
复制集转化为分片集群
1、查看复制集primary与secondaryrs.status()
2、分别重启secondary节点使用 –shardsvr选项
mongod --replSet "rs0" --shardsvr --port 27017
或者
db.shutdownServer() 停止服务
修改配置文件secondary.conf 增加配置sharding: clusterRole: shardsvr
重启服务
mongod -f /opt/conf/mongo/secondary.conf3、降级主节点后重启如2步骤重启
rs.stepDown()
4、可以强制某个节点为主节点
通过设置优先级或者暂时冻结其他节点的方式
https://docs.mongodb.com/manual/tutorial/force-member-to-be-primary/Create the Config Server Replica Set
配置文件增加sharding: clusterRole: configsvr replication: replSetName: <setname>
启动服务
mongod -f /opt/conf/mongo/config.conf
初始化复制集(3.4版本以后config Server必须配置成复制集)
rs.initiate( { _id: "<replSetName>", configsvr: true, members: [ { _id : 0, host : "ip1:27018" }, { _id : 1, host : "ip2:27018" }, { _id : 2, host : "ip3:27018" } ] } )
Connect a mongos to the Sharded Cluster
配置文件删掉无用的storage相关,增加
sharding: configDB: <configReplSetName>/cfg1.example.net:27018,cfg2.example.net:27018,...
启动服务注意mongos启动
mongos --config <path-to-config>
mongo shell 连接mongos
mongo --host <hostname> --port <port> //mongos的ip和端口
分片加入集群
连接mongos的mongo shell中执行sh.addShard( "<replSetName>/s1-mongo1.example.net:27017") //选择复制集中的一个即可
Enable Sharding
sh.enableSharding("<database>") //先给数据库打开分片 sh.shardCollection("<database>.<collection>", { <key> : "hashed" } ) //这对集合打开分片