目录
准备
本文主要介绍了mongodb的集群方式,为了方便,都在一台机器上配置,数据和日志放在mongodb目录下,目录如下:
其中data为存放文件的位置,log为存放日志的位置,mongo.cfg为配置文件
可能需要的命令
解压:
tar -zxvf xxx.tar
如果需要解压到制定的文件夹下,添加上: -C 文件位置,注意C必须大写
文件移动并重命名:
mv xxx newxxx
建立文件夹的命令:
mkdir xxx
建立文件的命令
touch xxx
主从(MS)
从mongodb 4.0开始,这种集群方式就不再支持,但是4.0之前还是可以的
主机配置(master)
dbpath=/opt/mongodb/master-slave/master/data
logpath=/opt/mongodb/master-slave/master/log/mongo.log
logappend=true
fork=true
bind_ip=192.168.209.128
port=27001
master=true
source=192.168.209.128:27002
从机配置(slave)
dbpath=/opt/mongodb/master-slave/slave/data
logpath=/opt/mongodb/master-slave/slave/log/mongo.log
logappend=true
fork=true
bind_ip=192.168.209.128
port=27002
slave=true
source=192.168.209.128:27001
然后分别启动 ,由于已经过时,不多介绍
mongod --config mongo.cfg
副本集(mas)
配置文件
主节点(master)
#mongodb数据存贮的路径
dbpath=/study/mongotest/mas/master/data
#日志
logpath=/study/mongotest/mas/master/log/mongo.log
#追加的方式记录日志
logappend=true
#replica set 的名字
replSet=shard002
##后台启动,
fork=true
#绑定的IP地址
bind_ip=0.0.0.0
#端口号
port=27100
从节点:
dbpath=/study/mongotest/mas/slave/data
logpath=/study/mongotest/mas/slave/log/mongo.log
logappend=true
replSet=shard002
fork=true
bind_ip=0.0.0.0
port=27101
仲裁节点:
dbpath=/study/mongotest/mas/arbiter/data
logpath=/study/mongotest/mas/arbiter/log/mongo.log
logappend=true
fork=true
bind_ip=0.0.0.0
port=27103
replSet=shard002
启动
到三个节点对应的bin的上级目录下,启动数据库(注意配置文件一定要正确)
./bin/mongod -f mongo.cfg
启动后会输出如下:
配置主、从、仲裁节点
#连接到某一台节点
命令1>>mongo 192.168.209.128:27017
#使用admin数据库
命令2>>use admin
#配置节点
命令3>>cfg={_id:"shard002",
members:[
{_id:0,host:'192.168.124.222:27100',priority:1},
{_id:1,host:'192.168.124.222:27101',priority:9},
{_id:2,host :'192.168.124.222:27103',arbiterOnly:true}]};
#使生效
命令4>>rs.initiate(cfg)
连接的节点一定不能是需要配置的仲裁节点,配置了会报错:
{
"operationTime" : Timestamp(0, 0),
"ok" : 0,
"errmsg" : "This node, 192.168.124.222:27103, with _id 2 is not electable under the new configuration version 1 for replica set shard002",
"code" : 93,
"codeName" : "InvalidReplicaSetConfig",
"$clusterTime" : {
"clusterTime" : Timestamp(0, 0),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
配置完后,主节点可读、可写,而从节点只读,从下图可以看出