mongodb相关(单实例、复制集、分片集)

一、mongodb的单实例搭建

1、下载包地址

1、各个版本的下载地址
https://www.mongodb.org/downloads
2、本文安装最新版本3.6.5
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.5.tgz

2、安装

1、解压
tar xf mongodb-linux-x86_64-3.6.5.tgz  &&  mv mongodb-linux-x86_64-3.6.5  /usr/local/mongodb-3.6.5

2、创建相关目录
mkdir -p /data/mongodb27017/{data,log,conf}

3、参数文件配置,vim /data/mongodb27017/conf/mongodb-27017.cnf
port=27017
bind_ip=192.168.142.48,127.0.0.1
dbpath=/data/mongodb27017/data
logpath=/data/mongodb27017/log/mongodb.log
pidfilepath=/data/mongodb27017/mongodb.pid
logappend=true
fork=true
auth=true

3、启动和关闭

1、启动mongodb
/usr/local/mongodb-3.6.5/bin/mongod -f /data/mongodb27017/conf/mongodb-27017.cnf

2、客户端命令行首次进入
/usr/local/mongodb-3.6.5/bin/mongo --port=27017

3、创建超管用户
db.createUser(
{
user: "admin",
pwd: "123456",
roles: [ { role: "root", db: "admin" } ]
}
)

4、客户端命令行再次进入
/usr/local/mongodb-3.6.5/bin/mongo 10.200.142.48:27017/admin -u admin -p123456
> db.getCollectionNames()
[ "system.users", "system.version" ]

5、关闭mongodb
/usr/local/mongodb-3.6.5/bin/mongo 10.200.142.48:27017/admin -u admin -p123456
> db.shutdownServer()

二、 mongodb的复制集搭建

在单实例的基础上创建复制集(已经配置超管用户)

10.200.142.48:27017
10.200.142.48:27018
10.200.142.48:27019

1、新增keyfile文件

1、vim keyfile
one123456

2、设置权限
chmod 600 keyfile

2、配置文件,基于单实例的基础上额外增加

# /data/mongodb27017/conf/mongodb-27017.cnf
keyFile=/data/mongodb27017/keyfile
oplogSize=1024
replSet=rs_one

# /data/mongodb27018/conf/mongodb-27018.cnf
keyFile=/data/mongodb27018/keyfile
oplogSize=1024
replSet=rs_one

# /data/mongodb27019/conf/mongodb-27019.cnf
keyFile=/data/mongodb27019/keyfile
oplogSize=1024
replSet=rs_one

3、启动实例

/usr/local/mongodb-3.6.5/bin/mongod -f /data/mongodb27017/conf/mongodb-27017.cnf
/usr/local/mongodb-3.6.5/bin/mongod -f /data/mongodb27018/conf/mongodb-27018.cnf
/usr/local/mongodb-3.6.5/bin/mongod -f /data/mongodb27019/conf/mongodb-27019.cnf

4、配置复制集

1、任意一台命令行登录
/usr/local/mongodb-3.6.5/bin/mongo 10.200.142.48:27017/admin -u admin -p123456

2、配置复制集成员
config = {
"_id":"rs_one",
members:[
{"_id":0,host:"10.200.142.48:27017"},
{"_id":1,host:"10.200.142.48:27018"},
{"_id":2,host:"10.200.142.48:27019",arbiterOnly:true}]
}

3、初始化复制集
rs.initiate(config)

4、查看复制集状态
rs.conf(),查看副本集的配置
rs.status(),查看副本集的状态
rs.printSlaveReplicationInfo(),查看各节点同步状态
rs.printReplicationInfo(),查看同步事件概况
db.isMaster(),查看当前复制集概况

5、复制集的管理

1、添加副本集成员
使用rs.add(HOST_NAME:PORT)添加新的副本集机器,例如:rs.add("10.200.142.48:27019")

2、删除副本集成员
使用rs.remove(HOST_NAME:PORT)删除副本集机器,例如:rs.remove("10.200.142.48:27019")

3、副本集参数配置
对于复杂的副本集配置,rs.reconfig函数修改比rs.add和rs.remove更有用
    var a = rs.config()
    rs.reconfig(a)

4、解决报错"not master and slaveOk=false"
    1).本次生效 rs.slaveOk();
    2).永久生效 vim ~/.mongorc.js,增加一行rs.slaveOk(); 这样的话以后每次通过mongo命令进入从库都可以查询了

5、对于仲裁节点修改为副本集普通成员
    1、删除仲裁节点,rs.remove("10.200.142.48:27019")
    2、重新启动仲裁节点所在实例(必须)
    3、重新添加成员,rs.add("10.200.142.48:27019")

6、复制集选举节点原理
当一个备份节点无法与主节点联通时,他就联系并请求其他成员将自己选举为主节点,其他成员做几项理性的检查

1、自身是否能够与主节点联通
2、希望被选举为主节点的备份节点的数据是否是最新
3、有没有其他更高优先级的成员可以被选举为主节点

发生主节点选举时,优先级priority最高的备份节点如果数据不是最新,必须使用复制将自己的数据更新为最新或最新之一,才能成为新的主节点
 

三、 mongodb的分片集搭建

分片集的原理
mongodb相关(单实例、复制集、分片集)

在复制集搭建的基础上创建分片集

猜你喜欢

转载自blog.51cto.com/11257187/2125227