MongoDB Win10创建复制集

本文将介绍在 Win10 系统上创建 MongoDB 复制集。

接下来将介绍怎样在 Win10 系统下面,创建 MongoDB 复制集。由于在一台机器上面要启动多个 MongoDB 进程,因此需要根据端口号进行区分。下面将介绍创建 MongoDB 复制的详细步骤:

(1)下载 mongodb-v4.0.2-x86.zip 安装包,将安装包解压到指定目录。目录结构如下:

MongoDB Win10创建复制集

(2)我们将分别开启 27030、27031、27032 三个端口,为了方便我们将创建三个批处理程序。分别如下:

start-mongodb-repl-27030.bat

@echo off
set basePath=%~dp0
title mongodb 27030
%basePath%inmongod.exe --port 27030 --dbpath %basePath%
epls0 --replSet rs0
pause

start-mongodb-repl-27031.bat

@echo off
set basePath=%~dp0
title mongodb 27031
%basePath%inmongod.exe --port 27031 --dbpath %basePath%
epls1 --replSet rs0
pause

start-mongodb-repl-27032.bat

@echo off
set basePath=%~dp0
title mongodb 27032
%basePath%inmongod.exe --port 27032 --dbpath %basePath%
epls2 --replSet rs0
pause

上面三个脚本均使用 --replSet rs0 设置复制集名称,复制集名称为 rs0。

(3)批处理文件写好后,再去创建数据目录。分别在 mongodb 安装目录下面创建 repl/s0、repl/s1 和 repl/s2。

(4)去执行步骤2创建的3个批处理文件,启动 mongodb。启动成功后,端口如下:

D:mongodb-v4.0.2-x86in>netstat -ano | findstr 270
  TCP    127.0.0.1:5383         127.0.0.1:27030        TIME_WAIT       0
  TCP    127.0.0.1:27030        0.0.0.0:0              LISTENING       15512
  TCP    127.0.0.1:27031        0.0.0.0:0              LISTENING       10112
  TCP    127.0.0.1:27032        0.0.0.0:0              LISTENING       2176

(5)使用 mongo 命令连接到 27030 端口,如下:

D:mongodb-v4.0.2-x86in>mongo --host localhost --port 27030

连接成功后,执行 rs.initiate() 方法来初始化副本集。如下:

> rs.initiate()
{
        "info2" : "no configuration specified. Using a default configuration for the set",
        "me" : "localhost:27030",
        "ok" : 1,
        "operationTime" : Timestamp(1583329035, 1),
        "$clusterTime" : {
                "clusterTime" : Timestamp(1583329035, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        }
}

初始化成功后,使用 rs.add() 方法向复制集添加主机。如下:

rs0:PRIMARY> rs.add("localhost:27031")
{
        "ok" : 1,
        "operationTime" : Timestamp(1583329109, 1),
        "$clusterTime" : {
                "clusterTime" : Timestamp(1583329109, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        }
}
rs0:PRIMARY> rs.add("localhost:27032")
{
        "ok" : 1,
        "operationTime" : Timestamp(1583329112, 1),
        "$clusterTime" : {
                "clusterTime" : Timestamp(1583329112, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        }
}

最后,使用 rs.status() 查看复制集的状态。如下:

rs0:PRIMARY> rs.status()
{
        "set" : "rs0",
        "date" : ISODate("2020-03-04T13:40:00.574Z"),
        "myState" : 1,
        "term" : NumberLong(1),
        "syncingTo" : "",
        "syncSourceHost" : "",
        "syncSourceId" : -1,
        "heartbeatIntervalMillis" : NumberLong(2000),
        "optimes" : {
                "lastCommittedOpTime" : {
                        "ts" : Timestamp(1583329197, 1),
                        "t" : NumberLong(1)
                },
                "readConcernMajorityOpTime" : {
                        "ts" : Timestamp(1583329197, 1),
                        "t" : NumberLong(1)
                },
                "appliedOpTime" : {
                        "ts" : Timestamp(1583329197, 1),
                        "t" : NumberLong(1)
                },
                "durableOpTime" : {
                        "ts" : Timestamp(1583329197, 1),
                        "t" : NumberLong(1)
                }
        },
        "lastStableCheckpointTimestamp" : Timestamp(1583329157, 1),
        "members" : [
                {
                        "_id" : 0,
                        "name" : "localhost:27030",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 485,
                        "optime" : {
                                "ts" : Timestamp(1583329197, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2020-03-04T13:39:57Z"),
                        "syncingTo" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "electionTime" : Timestamp(1583329035, 2),
                        "electionDate" : ISODate("2020-03-04T13:37:15Z"),
                        "configVersion" : 3,
                        "self" : true,
                        "lastHeartbeatMessage" : ""
                },
                {
                        "_id" : 1,
                        "name" : "localhost:27031",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 91,
                        "optime" : {
                                "ts" : Timestamp(1583329197, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(1583329197, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2020-03-04T13:39:57Z"),
                        "optimeDurableDate" : ISODate("2020-03-04T13:39:57Z"),
                        "lastHeartbeat" : ISODate("2020-03-04T13:40:00.267Z"),
                        "lastHeartbeatRecv" : ISODate("2020-03-04T13:39:58.817Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "",
                        "syncingTo" : "localhost:27030",
                        "syncSourceHost" : "localhost:27030",
                        "syncSourceId" : 0,
                        "infoMessage" : "",
                        "configVersion" : 3
                },
                {
                        "_id" : 2,
                        "name" : "localhost:27032",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 88,
                        "optime" : {
                                "ts" : Timestamp(1583329197, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(1583329197, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2020-03-04T13:39:57Z"),
                        "optimeDurableDate" : ISODate("2020-03-04T13:39:57Z"),
                        "lastHeartbeat" : ISODate("2020-03-04T13:40:00.277Z"),
                        "lastHeartbeatRecv" : ISODate("2020-03-04T13:39:59.499Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "",
                        "syncingTo" : "localhost:27031",
                        "syncSourceHost" : "localhost:27031",
                        "syncSourceId" : 1,
                        "infoMessage" : "",
                        "configVersion" : 3
                }
        ],
        "ok" : 1,
        "operationTime" : Timestamp(1583329197, 1),
        "$clusterTime" : {
                "clusterTime" : Timestamp(1583329197, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        }
}

如果你想在Linux上面搭建复制集,请查看MongoDB主从复制

业精于勤,荒于嬉。——韩愈《进学解》
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号