前言
虽然公司中有使用到mongodb,但是一般都有dba或者平台组的同事搭建完毕后,直接使用,为了更好的理解mongodb的使用和安装,在网上找了很多的资料并搭建相应的集群信息。
查看虚拟机CENTOS7 的 IP 地址和命令(不能用ipconfig) www.cnblogs.com/mmx8861/p/9… 1.使用xshell上传文件 blog.csdn.net/kaluman/art…
2.Linux将命令添加到PATH中 www.cnblogs.com/leibg/p/447…
linux下环境变量PATH设置错误的补救 www.cnblogs.com/yanglin1228…
mongodb:安装 www.runoob.com/mongodb/mon…
mongodb 权限设置--用户名、密码、端口 www.cnblogs.com/valor-xh/p/…
创建用户,验证用户密码 www.cnblogs.com/JennySchect…
mongodb 配置文件 www.cnblogs.com/phpandmysql…
rmdir删除目录
Linux查看端口、进程情况及kill进程
mongodb不能够访问,因为端口没有开放 linux端口开放指定端口的两种方法 www.cnblogs.com/jtestroad/p…
MongoDB 查看所有用户账号信息 blog.csdn.net/u010649766/…
Mongodb启动&关闭(这里主要是针对后台进程) www.cnblogs.com/leinov/p/73…
MongoDB4.0.0 远程连接及用户名密码认证登陆配置——windows blog.csdn.net/qq_26896281…
MongoDB学习笔记(六)——MongoDB配置用户账号与访问控制 blog.csdn.net/qq_33206732…
mongo ip:port/database --username "username" -- password "password"
MongoDB 设置用户名密码登录 blog.csdn.net/qq_32502511…
MongoDB设置访问权限、设置用户 blog.csdn.net/weixin_3658…
ongoDB初了解——用户权限 www.cnblogs.com/yulinfeng/p…
MongoDB集群搭建及常用命令备忘 www.jianshu.com/p/9e66072cb… 是因为之前应认证admin用户 退出命令行,再次执行登录命令,直接切换到Evan库认证就OK
高可用的MongoDB集群 www.cnblogs.com/smartloli/p…
mongodb分布式集群架构 www.cnblogs.com/zhongbin/p/…
搭建高可用mongodb集群(一)——mongodb配置主从模式 www.cnblogs.com/yujon/p/612…
高可用的MongoDB集群(搭建) --目前我是按照这篇博客在搭建 www.cnblogs.com/smartloli/p… 在/etc目录下自己准备了一些重要的东西 config_shard.conf stop_mongod_cluster.sh do_mongobath.sh
本机搭建信息:
安装目录:/usr/local/mongodb/mongo
db-path:dbpath=/var/lib/mongodb
日志记录:
logpath=/var/log/mongodb/mongodb.log
4.0以后分布集群 注意在mongs中加副本集,不然启动会报错
MongoDB 4.0 开发环境搭建集群 www.cnblogs.com/savorboard/…
MongoDB集群搭建及使用(副本集)(备注:搭建并验证成功)
blog.csdn.net/supermapsup…
因为需要验证集群的正确性找到下面的blog
管理维护Replica Sets(读写分离&故障转移&增删节点)
blog.csdn.net/zhengwei125…
遇到的问题: 1.4.0以后需要config-db后需要配置副本集 不然启动会报错 3.about to fork child process, waiting until server is ready for connection 解决方法:
删除mongodb 的db目录下的mongod.lock文件,重启mongodb即可
Mongodb中经常出现的错误(汇总)child process failed, www.cnblogs.com/dunitian/p/… 搭建环境时遇到了 child process failed, exited with error number 1 和number18的问题 最开始搜索网上的方案 后面发现在日志文件里面有报错的详细信息,因为只有一台虚拟机所以在网上找的blog的信息没有改完出现了这个问题
下面贴一下自己搭建时用到的命令和配置文件
创建数据库文件和日志所需要的目录
创建数据目录脚本和log日志文件创建脚本
mkdir -p /opt/data/mongodb/master
mkdir -p /opt/data/mongodb/slave
mkdir -p /opt/data/mongodb/arbiter
mkdir -p /opt/mongodb
touch /opt/mongodb/{master.log,slave.log,arbiter.log}
master.conf
#master.conf
dbpath=/opt/data/mongodb/master
logpath=/opt/mongodb/master.log
pidfilepath=/opt/mongodb/master.pid
#keyFile=/opt/mongodb/mongodb.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=0.0.0.0
port=27017
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000
slave.conf
dbpath=/opt/data/mongodb/slave
logpath=/opt/mongodb/slave.log
pidfilepath=/opt/mongodb/slave.pid
#keyFile=/opt/mongodb/mongodb.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=0.0.0.0
port=27018
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000
~
arbiter.conf
dbpath=/opt/data/mongodb/arbiter
logpath=/opt/mongodb/arbiter.log
pidfilepath=/opt/mongodb/arbiter.pid
#keyFile=/opt/mongodb/mongodb.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=0.0.0.0
port=27019
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000
启动集群的脚本
/usr/local/mongodb/mongo/bin/ 为我的mongodb的安装路径
#start_mongodb.sh 执行时记得给脚本授予执行权限 chmod 777 start_mongodb.sh
/usr/local/mongodb/mongo/bin/mongod -f /etc/mongodb_master.conf
/usr/local/mongodb/mongo/bin/mongod -f /etc/mongodb_slave.conf
/usr/local/mongodb/mongo/bin/mongod -f /etc/mongodb_arbiter.conf
按照上面的脚本进行创建,准备工作就已经完成。
登录mongodb的主节点用于添加集群 mongo --port 27017
执行下面的指令进行集群配置
cfg={ _id:"testdb",
members:[ {_id:0,host:'127.0.0.1:27017',priority:2}, {_id:1,host:'127.0.0.1:27018',priority:1}, {_id:2,host:'127.0.0.1:27019',arbiterOnly:true}] };
进行初始化集群配置
rs.initiate(cfg)
执性上面两行脚本后,可以使用 rs.status()查看集群状态
“stateStr” : “PRIMARY”表示主节点, “stateStr” : “SECONDARY”表示从节点, “stateStr” : “ARBITER”,表示仲裁节点
登录主库进行数据的插入操作,从库查询数据时报错 使用以下命令进行配置即可 让从库可以执行查询操作 db.getMongo().setSlaveOk() (每次登录时需要重新执行)
故障转移
使用 ps -aux|grep mongod 查询到主库运行的进程id 使用kill -9 pid 结束进程 登录之前的从库(主库进程被结束后该库晋升为主库)进行数据插入后,同时重新启动之前的主库,此时在两个库中均可以以查询到数据,同时之前的27017端口对应的库重新变为主库。