MongoDB单复制集+路由本地部署指南(绝对靠谱)

这两天需要部署一套mongodb测试用,好久没搞过了,第一反应是上网找找有没有现成的资料,就不用我自己再摸索了,一切还是懒癌至上,结果发现网上的很多资料都是不全的,折腾了半天还是自己弄弄好

记录一下自己做的步骤,给自己以后做个备份也给大家一个参考

测试系统就不部署太复杂

一个复制集(一主一从),两个配置服务,一个路由,访问走路由,都部署在一台机器上

下载就不说了,能找到这篇文章的估计都不会卡在下载上


下面是复制集的配置

主要就是replSet参数,需要配置,而且两个需要配置成同一个值

mongo1.conf

logpath=/home/mongodb/logs/mongod.log
logappend=true
fork=true
port=22002
dbpath=/home/mongodb/data
pidfilepath=/home/mongodb/data/mongod.pid
oplogSize=4096
maxConns=64000
directoryperdb=true
bind_ip=0.0.0.0
replSet=XXX
shardsvr=true

mongo2.conf

logpath=/home/mongodb2/logs/mongod.log
logappend=true
fork=true
port=22003
dbpath=/home/mongodb2/data
pidfilepath=/home/mongodb2/data/mongod.pid
oplogSize=4096
maxConns=64000
directoryperdb=true
bind_ip=0.0.0.0
replSet=XXX
shardsvr=true

 然后用

./mongod -f mongo1.conf
./mongod -f mongo2.conf

都启起来

起来之后连上1

执行下面的命令设置主从关系

rs.initiate({"_id":"XXX","members":[{"_id":0,"host":"ip:22002"},{"_id":1,"host":"ip:22003"}]})

到这里复制集部分就配置完了


下面配置配置服务的

两个配置文件如下,记得要加上configsvr参数来指定是配置服务

这里也要配置replSet来说明这是一组的

logpath=/home/mongoconf/log/mongod.log
logappend=true
configsvr=true
fork=true
port=22004
dbpath=/home/mongoconf/data
pidfilepath=/home/mongoconf/data/mongod.pid
bind_ip=0.0.0.0
replSet=XXXconf
logpath=/home/mongoconf1/log/mongod.log
logappend=true
configsvr=true
fork=true
port=22005
dbpath=/home/mongoconf1/data
pidfilepath=/home/mongoconf1/data/mongod.pid
bind_ip=0.0.0.0
replSet=XXXconf

记得也要init啊,mongo中凡是配置了replSet的都需要用下面的方法初始化一下

rs.initiate({"_id":"XXXconf","members":[{"_id":0,"host":"ip:22004"},{"_id":1,"host":"ip:22005"}]})

然后用mongod把两个服务启动起来


再就是路由了

路由没配多个,多个反正就加replSet就行

路由配置如下

注意的就是configdb的参数,指定配置服务的地址

port=22006
configdb=XXXconf/ip:22004,ip:22005
fork = true
logpath = /home/mongos/log/mongo.log
bind_ip=0.0.0.0

用mongos把路由服务启起来

连上路由,如果用replSet配置了多个的话记得初始化,我这儿起的单个就不用初始化了

接下来增加分片

我就一对儿复制集,实际就一个分片,复制集的两个机器都是同一个分片的

执行下面的命令

use admin

db.runCommand({addshard:"XXX/ip:22002"} )

db.runCommand({addshard:"XXX/ip:22003"} ) 

 这里吧复制集的两台机器都加到了同一个名字XXX下面,实际就是同一个分片了

执行下面的命令就能看到分片的信息

db.runCommand( {listshards : 1 } )

基本到这儿就顺利部署完了 


这里简单说明也说一下遇到过的问题

账号密码的问题

很多帖子里面说必须设置账号密码,否则无法配置复制集。这个跟你用的账号有关,如果是在root下面部署的话就没限制,不用root的话才需要设置,着看你们公司对这个东西控制严格不严格了

 

报错问题

No host described in new configuration 1 for replica set tag maps to this node

通常遇到这个问题是由于在replSet初始化的时候members里面没有自己,一定要含自己,这个在网上很多帖子里面都是错的,只写了除自己外的其他服务地址,就会报这个错

 

cannot accept sharding commands if not started with --shardsrv

这个问题比较奇怪,是我用robo连上路由创建表时报的错,但是通过命令行连上mongos创建就没问题,后来是在复制集的启动参数中增加了shardsvr=true解决的,具体原因也就没深究了

你可能感兴趣的:(mongo)