首先准备一台已经配置好mongo的虚拟机(建议先快照,万一报错太多可以恢复到快照重新开始),将它克隆两份,总共三台虚拟机(一个主节点两个副本节点)即一个primary两个secondary。步骤如下:

1、配置三台虚拟机的ip以及主机名(我配置的ip及主机名如下):

 克隆的两个虚拟机中的hostname、ifcfg-ens33、hosts、mongod.conf配置文件都需要进行相应的ip和主机名的修改。

2、修改mongod.conf配置文件中的副本集名称

第一步已经在mongod.conf配置文件中加入了ip在mongod.conf中通过参数replication设置副本集名称,同一副本集必须指定相同名称(三台虚拟机名称一致)

systemLog:
   destination: file 
   path: "/opt/servers/mongodb_demo/standalone/logs/mongologs.log" 
   logAppend: true 
storage: 
   dbPath: "/opt/servers/mongodb_demo/standalone/data/db/"
   journal: 
      enabled: true 
processManagement: 
    fork: true
net:
 bindIp: 192.168.213.134
 port: 27017
replication:
 replSetName: mongo

 3、副本集初始化

     先在主节点初始化

(1)、进入mongodb的bin目录

cd /opt/servers/mongodb_demo/mongodb/bin

(2)、以副本形式启动mongodb

./mongod --replSet mongo --dbpath=/opt/servers/mongodb_demo/standalone/data/ --logpath=/opt/servers/mongodb_demo/standalone/logs/mongodb.log --port 27017 --bind_ip nosql01 --logappend --fork

其中replSet指定了mongodb副本集名称(mongo),同一副本集名称需要保持一致

(注意!!!注意!!!)其中的nosql01为虚拟机主机名,启动另外两个虚拟机时记得换成相应的主机名。

(3)、登录mongodb客户端

./mongo --host nosql01 --port 27017

(注意!!!注意!!!)其中的nosql01为虚拟机主机名,启动另外两个虚拟机时记得换成相应的主机名。

(4)、初始化

rs.initiate()

出现“ok”:1表示主节点初始化成功,成功后会出现primary(没出现就等几秒后按回车),若出现“ok”:0则表示错误,错误的原因可能会有很多,可以去搜一下相关的报错。

(5)、添加结点

rs.add("nosql02:27017")

出现“ok”:1表示添加成功,出现“ok”:0则表示错误

rs.add("nosql03:27017")

出现“ok”:1表示添加成功,出现“ok”:0则表示错误

(6)从结点登录mongodb客户端

从结点进行(1)、(2)、(3)步骤,登录成功后应该显示secondary。各虚拟机成功后的截图如下:

 至此,mongodb的副本集已经初步部署完成啦。

4、关闭mongo服务

ctrl + c退出mongo 使用kill -2 端口号或者kill -15 端口号关闭即可,不知道端口号可以使用

ps aux|grep mongo

查看mongo的端口号,关闭端口后也可以使用此代码查看是否关闭成功(可能会有延迟,关闭端口后等上几秒再查看最好)。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐