以下主要讲解MongoDB中副本集的创建过程:
1.复制目录结构
(1)找到MongoDB的安装目录,复制三份并分别命名为master、slave、arbiter,作为主节点、从节点、仲裁节点,如图所示。
在复制过程,若出现以下页面,直接跳过即可。
(2)接着创建三个对应的数据和日志文档的目录,数据路径如F:\data\masterdb,日志路径如F:\data\masterlog,以此类推,如图所示。
2.启动mongod实例
(1)使用Win+R打开运行对话框,输入cmd并回车
(2)启动master
cd /d D:\MongoDB2\master\bin
mongod -port 27111 -dbpath F:\data\masterdb -logpath F:\data\masterlog\mongodb.log -replSet mySet -logappend
如下图所示:
(3)启动slave
注意:需再打开一个dos窗口
cd /d D:\MongoDB2\slave\bin
mongod -port 27112 -dbpath F:\data\slavedb -logpath F:\data\slavelog\mongodb.log -replSet mySet -logappend
如下图所示:
(4)启动arbiter
注意:需再打开一个dos窗口
cd /d D:\MongoDB2\arbiter\bin
mongod -port 27113 -dbpath F:\data\arbiterdb -logpath F:\data\arbiterlog\mongodb.log -replSet mySet -logappend
如下图所示:
是否成功启动,可以通过查询每个实例的日志目录下是否有生成相应日志文件。
3.MongoDB 副本集测试,实现数据同步功能
(1)登录master
mongo -port 27111
如下图所示:
(2)在初始化之前先查看一下rs状态
rs.status()
如下图所示:
ok:0,表示没有找到副本集的配置信息
(3)执行初始化
rs.initiate()
如下图所示:
(4)为副本集添加副本
4.1 添加从节点,端口号为27112
rs.add("localhost:27112")
如下图所示:
ok:1,表示添加成功
添加从节点,端口号为27113
rs.add("localhost:27113")
如下图所示:
(5)重新打开一个dos命令窗口,登录slave
mongo -port 27112
如下图所示:
(6)测试副本集的同步功能
①先在主节点插入一条数据
use test
db.user.insert({name:"wenjuan"})
db.user.find()
如下图所示:
②在从节点27112查询
use test
db.user.find()
如下图所示:
由于从节点默认没有读取副本集内容权限,因此会报错。
③开启从节点的读取权限后再次执行查看文档命令
rs.secondaryOk()
db.user.find()
如下图所示:
注意:在端口号为27112的窗口中操作
④尝试在从节点进行插入操作
db.user.insert({name:"wei"})
如下图所示:
插入失败,从节点没有插入权限。