前言
虽然公司中有使用到mongodb,但是一般都有dba或者平台组的同事搭建完毕后,直接使用,为了更好的理解mongodb的使用和安装,在网上找了很多的资料并搭建相应的集群信息。
查看虚拟机CENTOS7 的 IP 地址和命令(不能用ipconfig)
https://www.cnblogs.com/mmx8861/p/9217445.html
1.使用xshell上传文件
https://blog.csdn.net/kaluman/article/details/79500174
2.Linux将命令添加到PATH中
https://www.cnblogs.com/leibg/p/4479921.html
linux下环境变量PATH设置错误的补救
https://www.cnblogs.com/yanglin1228/p/4983289.html
mongodb:安装
http://www.runoob.com/mongodb/mongodb-linux-install.html
mongodb 权限设置–用户名、密码、端口
https://www.cnblogs.com/valor-xh/p/6369432.html
创建用户,验证用户密码
https://www.cnblogs.com/JennySchecter/p/8540832.html
mongodb 配置文件
https://www.cnblogs.com/phpandmysql/p/7763394.html
rmdir删除目录
Linux查看端口、进程情况及kill进程
https://www.cnblogs.com/liuzhengliang/p/4609632.html
mongodb不能够访问,因为端口没有开放
linux端口开放指定端口的两种方法
https://www.cnblogs.com/jtestroad/p/8031850.html
MongoDB 查看所有用户账号信息
https://blog.csdn.net/u010649766/article/details/78498130
Mongodb启动&关闭(这里主要是针对后台进程)
https://www.cnblogs.com/leinov/p/7341139.html
MongoDB4.0.0 远程连接及用户名密码认证登陆配置——windows
https://blog.csdn.net/qq_26896281/article/details/81206492
MongoDB学习笔记(六)——MongoDB配置用户账号与访问控制
https://blog.csdn.net/qq_33206732/article/details/79877948
mongo ip:port/database --username “username” – password “password”
MongoDB 设置用户名密码登录
https://blog.csdn.net/qq_32502511/article/details/80619277
MongoDB设置访问权限、设置用户
https://blog.csdn.net/weixin_36586564/article/details/79670223
ongoDB初了解——用户权限
https://www.cnblogs.com/yulinfeng/p/10226977.html
MongoDB集群搭建及常用命令备忘
https://www.jianshu.com/p/9e66072cb2a9?from=timeline&isappinstalled=0
是因为之前应认证admin用户
退出命令行,再次执行登录命令,直接切换到Evan库认证就OK
高可用的MongoDB集群
https://www.cnblogs.com/smartloli/p/4305739.html
mongodb分布式集群架构
https://www.cnblogs.com/zhongbin/p/3263084.html
搭建高可用mongodb集群(一)——mongodb配置主从模式
https://www.cnblogs.com/yujon/p/6128761.html
高可用的MongoDB集群(搭建) --目前我是按照这篇博客在搭建
https://www.cnblogs.com/smartloli/p/4305739.html
在/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中加副本集,不然启动会报错
https://blog.51cto.com/13511191/2359959?source=drh
MongoDB 4.0 开发环境搭建集群
https://www.cnblogs.com/savorboard/p/mongodb-4-cluster-install.html
MongoDB集群搭建及使用(副本集)(备注:搭建并验证成功)
https://blog.csdn.net/supermapsupport/article/details/78953080
因为需要验证集群的正确性找到下面的blog
管理维护Replica Sets(读写分离&故障转移&增删节点)
https://blog.csdn.net/zhengwei125/article/details/46502027
遇到的问题:
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,
http://www.cnblogs.com/dunitian/p/6274437.html
搭建环境时遇到了
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端口对应的库重新变为主库。