我这里用到的包是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数据库内
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节点看到也已经是集群状态了