MongoDB复制集搭建(Window10系统下)

一、获取mongodb安装包

        本示例mongo版本:mongodb-win32-x86_64-3.4.17.zip

        下载链接:http://downloads.mongodb.org/win32/mongodb-win32-x86_64-3.4.17.zip

二 、安装mongo

(1)解压 mongodb-win32-x86_64-3.4.17.zip,解压之后文件名可自定义。Mongodb8881是我自定义的文件名。

(2)在解压文件的 bin 的同级目录创建  data和log 目录 , 在data目录下创建db目录。

(3)本次示例以配置文件启动,创建启动文件, mongo.config ,该文件和 bin 目录同级。

(4)编辑配置文件mongo.config,文件内容示例:

dbpath=C:\DEV\Mongodb8881\data\db   数据存储目录
logpath=C:\DEV\Mongodb8881\log\mongo.log  日志存储目录
port=8881  mongodb  启动端口
logappend=true  以追加的方式记录日志。不同方式可自行搜索。

  【说明*】C:\DEV\Mongodb8881 为mongodb安装包解压后所对应的磁盘目录【*】

(5)启动Mongo ,

         进入命令行: win+R

         进入到Mongo 安装包目录 : cd C:\DEV\Mongodb8881

         执行命令: .\bin\mongod -config mongo.config

(6)重新打开一个命令行窗口

         进入到mongodb 安装包的 bin 目录下,执行命令:mongo

         由于 mongo 默认连接的是本地的 27017 端口,所以为了连接到指定IP下的端口,需要补充IP地址和端口号

   mongo 127.0.0.1:8881

          至此,mongo 单实例安装完毕。

三、基于单实例的复制集安装

          上边已经介绍了mongodb 的单实例安装,下边开始安装 mongo 复制集。

          先将 mongodb 解压出来的安装包复制多份。

         为了方便观察,此处我均以 启动端口号作为 mongo安装包的目录后缀

【注意点】

           mongo 复制集初始化的时候,需要将从节点的数据库全部删除(包括默认的 local 和 admin)。主节点admin 库不可删除.

主节点的选用规则,一般已经有数据的一般都作为主节点。

为了下边的叙述方便,均以端口号对应各个实例。

3-1)分别按照单实例的方式安装四个实例,

        8881 数据库已经包含有数据,我们就在8881 上设置复制集信息。

(3-2)连接 8882、8883、8884,删除他们下边的所有数据库。

          连接 8882

         命令:mongo 127.0.0.1:8882

         要删除据库A,则切换到库A ,

         命令:db.dropDatabase();

  根据上述规则删除所有数据库。8883、8884 删库操作同8882一样。

(3-3)关闭8881、8882、8883、8884

            修改 8881、8882、8883、8884 的配置文件,增加复制集配置,完整配置示例:

dbpath=C:\DEV\Mongodb8881\data\db
logpath=C:\DEV\Mongodb8881\log\mongo.log
port=8881
logappend=true
# oplog的大小(MB)
oplogSize=1024 
# 副本集名称(要确保同一个复制集名称要一致)
replSet=groupone
# 启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里,该目录位于 data\db 下
journal=true

(3-4)四个实例的配置文件修改完成之后,启动四个实例(必须四个示例都以复制集的方式启动成功)

        (3-4-1)连接 8881 实例,

        (3-4-2)切换到 admin,命令行创建初始化对象 config

         config={_id:"groupone",members:[{_id:0,host:"127.0.0.1:8881"},{_id:1,host:"127.0.0.1:8882"}, {_id:2,host:"127.0.0.1:8883"},{_id:3,host:"127.0.0.1:8884"}]}

        (3-4-3)执行初始化命令: rs.initiate(config)

设置成功之后,分别连接到各个实例查看:如下图所示

 

(3-5)复制集设置成功之后,从节点如果需要在命令行执行命令,需要执行命令:

rs.slaveOk()

(3-6)复制集主节点 8882 宕机之后,重启8882,此时旧的主节点8882 已经成为了从节点,而剩下的从节点之中会产生一个主节点。具体实际操作大家可以多尝试几次,这里不再做演示。

四、 异常处理:

 (4-1)复制级实例均需添加相关配置,否则报错如下:

(4-2)如果在设置复制机的时候报错,部分节点已经包含有数据,就需要停止该实例,修改该实例的配置文件,恢复到单实例状态,再执行删除数据库操作。错误提示如下:

解决方法:

(1)先停止 8882,直接在8882上操作,不会删除成功,原因是8882此时启动模式是复制集模式,不是主节点是无法操作数据库的,删除失败的提示如下:

(2)删除8882 对应的mongo.config  中复制集相关配置,恢复单实例模式,以单实例模式启动

  连接8882实例,执行(3-2)操作。

(3)8882数据全部删除成功之后,停止8882实例 ,再把 8882 复制集相关配置加上,启动 8882。

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值