一、下载TGZ包

Replica Set是mongod的实例集合,它们有着同样的数据内容。包含三类角色:
(1)主节点(Primary) 接收所有的写请求,只能有一个Primary节点
(2)副本节点
(3)仲裁者(Arbiter) 不保有数据,不参与选主,只进行选主投票。
参考文档:https://docs.mongodb.com/manual/tutorial/deploy-replica-set/
下载mongodb安装程序
下载地址:https://www.mongodb.com/download-center/community
我下载的这个版本:mongodb-linux-x86_64-3.4.24.tgz

[root@localhost ~]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.24.tgz

二、新建mongodb目录

[root@localhost ~]# mkdir -p /data/mongodb

三、拷贝、解压程序包

[root@localhost ~]# mkdir -p /data/mongodb/app
[root@localhost ~]# cd /data/mongodb/app
[root@localhost app]# mv ~/mongodb-linux-x86_64-3.4.24.tgz .
[root@localhost app]# tar -zxvf mongodb-linux-x86_64-3.4.24.tgz
[root@localhost app]# mv mongodb-linux-x86_64-3.4.24 mongodb

四、生成秘钥文件

[root@localhost app]# cd /data/mongodb/app/mongodb
[root@localhost mongodb]# mkdir keyfile
[root@localhost mongodb]# openssl rand -base64 756 > ./keyfile/mongo.key
[root@localhost mongodb]# chmod 400 ./keyfile/mongo.key

五、创建日志目录

[root@localhost mongodb]# mkdir -p /data/mongodb/app/mongodb/log

六、创建数据目录

[root@localhost mongodb]# mkdir -p /data/mongodb/data/mongodb/master
[root@localhost mongodb]# mkdir -p /data/mongodb/data/mongodb/slave
[root@localhost mongodb]# mkdir -p /data/mongodb/data/mongodb/arbiter

七、创建配置文件目录、并手动生成配置文件

[root@localhost mongodb]# mkdir -p /data/mongodb/app/mongodb/conf/
[root@localhost mongodb]# cd conf/
[root@localhost conf]# vi arbiter.conf
#arbiter.conf
dbpath=/data/mongodb/data/mongodb/arbiter
logpath=/data/mongodb/app/mongodb/log/arbiter.log
pidfilepath=/data/mongodb/app/mongodb/arbiter.pid
#keyFile=/usr/cwgis/app/mongodb/keyfile/mongo.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=192.168.10.140
port=27019
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000

[root@localhost conf]# vi master.conf
#master.conf
dbpath=/data/mongodb/data/mongodb/master
logpath=/data/mongodb/app/mongodb/log/master.log
pidfilepath=/data/mongodb/app/mongodb/master.pid
#keyFile=/data/mongodb/app/mongodb/keyfile/mongo.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=192.168.10.140
port=27017
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000

[root@localhost conf]# vi slave.conf
#slave.conf
dbpath=/data/mongodb/data/mongodb/slave
logpath=/data/mongodb/app/mongodb/log/slave.log
pidfilepath=/data/mongodb/app/mongodb/slave.pid
#keyFile=/data/mongodb/app/mongodb/keyfile/mongo.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=192.168.10.140
port=27018
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000

#查看配置文件
[root@localhost conf]# ll
总用量 12
-rw-r--r-- 1 root root 356 3月  31 11:26 arbiter.conf
-rw-r--r-- 1 root root 355 3月  31 11:26 master.conf
-rw-r--r-- 1 root root 352 3月  31 11:27 slave.conf

八、启动mongodb

[root@localhost conf]# cd /data/mongodb/app/mongodb/bin/
[root@localhost bin]# ./mongod -f /data/mongodb/app/mongodb/conf/master.conf
[root@localhost bin]# ./mongod -f /data/mongodb/app/mongodb/conf/slave.conf
[root@localhost bin]# ./mongod -f /data/mongodb/app/mongodb/conf/arbiter.conf

[root@localhost bin]# ss -tunlp|grep 270
tcp    LISTEN     0      128    192.168.10.140:27017                 *:*                   users:(("mongod",pid=17368,fd=8))
tcp    LISTEN     0      128    192.168.10.140:27018                 *:*                   users:(("mongod",pid=17395,fd=8))
tcp    LISTEN     0      128    192.168.10.140:27019                 *:*                   users:(("mongod",pid=17422,fd=8))

九、在浏览器输入http://ip地址:27017

如果服务启动成功会看到以下一段话:
It looks like you are trying to access MongoDB over HTTP on the native driver port.

十、配置集群

10.1 进入主节点
[root@localhost bin]# cd /data/mongodb/app/mongodb/bin/
[root@localhost bin]# ./mongo --port 27017 --host 192.168.10.140
10.2 在主节点上配置集群
#rs.initiate()处理配置
rsconf = {
  _id: "testdb",
  members: [
    {
     _id: 0,
     host: "192.168.10.140:27017"
    },
    {
     _id: 1,
     host: "192.168.10.140:27018"
    },
    {
     _id: 2,
     host: "192.168.10.140:27019"
    }
   ]
}

#执行如下命令
> rs.initiate( rsconf )

#显示副本集
testdb:PRIMARY> rs.conf()
#查看集群状态
testdb:PRIMARY> rs.status()

十一、常见命令

rs.initiate()
rs.conf()
rs.reconfig()
rs.add()

十二、使用正确的姿势连接复制集

MongoDB复制集里Primary节点是不固定的,当遇到复制集轮转升级、Primary宕机、网络分区等场景时,复制集可能会选举出一个新的Primary,而原来的Primary则会降级为Secondary,即发生主备切换。
使用以下方式进行连接复制集:
https://docs.mongodb.com/manual/reference/connection-string/
mongodb://192.168.10.140:27017,192.168.10.140:27018/?connectTimeoutMS=300000&replicaSet=testdb
配置文件参考:

  data:
    mongodb:
      uri: mongodb://192.168.20.81:27017,192.168.20.81:27018/dataqulity?slaveOk=true&replicaSet=testdb&write=1&readPreference=secondaryPreferred&connectTimeoutMS=300000
最后修改日期: 2020年3月31日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。