当前位置: 首页 > 工具软件 > Arbiter > 使用案例 >

MongoDB 单节点搭建和Arbiter模式

舒永嘉
2023-12-01

MongoDB

MongoDB单节点搭建

我这里用到的包是mongodb-linux-x86_64-rhel70-3.6.5.tgz,大家可以到MongoDB下载中心下载适合自己版本的包也可以执行下面的命令

[xiaobai] wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.5.tgz

[xiaobai] mkdir /data/
[xiaobai] tar zxvf mongodb-linux-x86_64-rhel70-3.6.5.tgz -C /data/
[xiaobai] cd /data/
[xiaobai data] mv mongodb-linux-x86_64-rhel70-3.6.5 mongodb
[xiaobai data] cd mongodb
[xiaobai mongodb] vim mongodb.conf
dbpath=/data/mongodb/data #数据文件存放目录
logpath=/data/mongodb/logs/mongodb.log #日志文件存放目录
port=27017  #端口
fork=true  #以守护程序的方式启用,即在后台运行
auth=true
bind_ip=0.0.0.0

[xiaobai mongodb] mkdir -p {data,logs}
[xiaobai mongodb] ./bin/mongod -f mongodb.conf   #启动
2021-07-15T17:01:48.269+0800 I CONTROL  [main] note: noprealloc may hurt performance in many applications
about to fork child process, waiting until server is ready for connections.
forked process: 191931

child process started successfully, parent exiting

#如果不创建好对应目录启动会报错,MongoDB不会自动创建目录

[xiaobai mongodb] ss -lntp |grep 27017
LISTEN     0      128          *:27017                    *:*                   users:(("mongod",pid=191931,fd=11))

[xiaobai mongodb] ./bin/mongo 你服务器的ip:27017
MongoDB shell version v3.6.5
connecting to: mongodb://10.20.140.35:27017/test
MongoDB server version: 3.6.5
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see

> #看到这个小箭头就说明我们进入了MongoDB数据库内 

MongoDB集群

Replica Set集群内会包含三个节点,主节点(master),备节点(slave),仲裁节点(arbiter)。主备节点存储数据,仲裁节点不存储数据。客户端同时连接主节点与备节点,不连接仲裁节点。

#包和上面的一个版本,这里我们需要三台机器,分别部署到三台上去
#三台上都执行
[xiaobai] tar zxvf mongodb-linux-x86_64-rhel70-3.6.5.tgz -C /data/
[xiaobai] cd /data/
[xiaobai data] mv mongodb-linux-x86_64-rhel70-3.6.5 mongodb
[xiaobai data] cd mongodb

#选出一个master节点,在上面执行
[xiaobai mongodb] vim master.conf
#master.conf
dbpath=/data/mongodb/data
logpath=/data/mongodb/logs/master.log
pidfilepath=/data/mongodb/master.pid
directoryperdb=true
logappend=true
replSet=testrs
bind_ip=0.0.0.0
port=27017
oplogSize=10000
fork=true
noprealloc=true

#选出一个slave节点,在上面执行
[xiaobai mongodb] vim slave.conf
#slave.conf
dbpath=/data/mongodb/data
logpath=/data/mongodb/logs/slave.log
pidfilepath=/data/mongodb/slave.pid
directoryperdb=true
logappend=true
replSet=testrs
bind_ip=0.0.0.0
port=27017
oplogSize=10000
fork=true
noprealloc=true

#选出一个arbiter节点,在上面执行
[xiaobai mongodb] vim arbiter.conf
#arbiter.conf
dbpath=/data/mongodb/data
logpath=/data/mongodb/logs/arbiter.log
pidfilepath=/data/mongodb/arbiter.pid
directoryperdb=true
logappend=true
replSet=testrs
bind_ip=0.0.0.0
port=27017
oplogSize=10000
fork=true
noprealloc=true

#三台机器写完配置文件后,都执行
[xiaobai mongodb] mkdir -p {data,logs}

#分别启动三台机器
[xiaobai mongodb] ./bin/mongod -f master.conf
[xiaobai mongodb] ./bin/mongod -f slave.conf
[xiaobai mongodb] ./bin/mongod -f arbiter.conf

#启动成功后我们进入master节点
[xiaobai mongodb] ./bin/mongo 你服务器的ip:27017
> #我们发现进去后还是一个小尖角号,执行命令
> use admin
switched to db admin
> cfg={ _id:"testrs", members:[ {_id:0,host:'master服务器的ip:27017',priority:2}, {_id:1,host:'slave服务器的ip:27017',priority:1},{_id:2,host:'arbiter服务器的ip:27017',arbiterOnly:true}] };

#敲下回车键会发现你刚刚输入的被输出到了屏幕上
> rs.initiate(cfg)   #使刚才的配置生效
{
	"ok" : 1,
	"operationTime" : Timestamp(1626400745, 1),
	"$clusterTime" : {
		"clusterTime" : Timestamp(1626400745, 1),
		"signature" : {
			"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
			"keyId" : NumberLong(0)
		}
	}
}

testrs:PRIMARY> #我们发现现在已经不一样了,执行下面的命令查看一下结果
testrs:SECONDARY> rs.status()   
#会显示刚刚你的配置和执行结果,最下面会有一行"ok" : 1,

testrs:PRIMARY> exit

#这时我们登录我们的slave和arbiter节点看到也已经是集群状态了

文章总览分类目录 @小白

 类似资料: