Mongodb Replica Sets 副本集群搭建

这篇具有很好参考价值的文章主要介绍了Mongodb Replica Sets 副本集群搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Replica Sets 复制集搭建

MongoDB 有三种集群架构模式,分别为主从复制(Master-Slaver)、副本集(Replica Set)和分片(Sharding)模式。

Master-Slaver 是一种主从复制的模式,目前已经不推荐使用

ReplicaSet模式取代了Master-Slaver模式,是一种互为主从的关系。Replica Set 将数据复制多份保存,不同服务器保存同一份数据,在出现故障时自动切换,实现故障转移。

MongoDB复制集主要用于实现服务的高可用性,与Redis中的哨兵模式相似。它的核心作用是数据的备份和故障转移。

Sharding 模式适合处理大量数据,它将数据分开存储,不同服务器保存不同的数据,所有服务器数据的总和即为整个数据集。

本文档主要内容为复制集的搭建和操作

一、操作系统参数优化
1.1 关闭内存大页

echo never > /sys/kernel/mm/transparent_hugepage/enabled

echo never > /sys/kernel/mm/transparent_hugepage/defrag

并追加⽌⽂件中

/etc/rc.local

[root@localhost ~]# vim /etc/rc.d/rc.local

增加下列内容:

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then

echo never > /sys/kernel/mm/transparent_hugepage/enabled

fi

if test -f /sys/kernel/mm/transparent_hugepage/defrag; then

echo never > /sys/kernel/mm/transparent_hugepage/defrag

fi

保存并退出,然后给rc.local添加可执行权限。

[root@localhost ~]# chmod +x /etc/rc.d/rc.local

最后重启。

1.2 禁用numa架构

使用普通用户启动命令之前添加 sudo -u mongo numactl --interleave=all

修改内核参数

echo 0 > /proc/sys/vm/zone_reclaim_mode

echo vm.zone_reclaim_mode = 0 >> /etc/sysctl.conf

1.3 设置 vm.swappiness

临时修改

sysctl -w vm.swappiness=0

永久修改

vim /etc/sysctl.conf

vm.swappiness = 0

1.4 修改打开⽂件数限制

vim /etc/security/limits.conf

mongo soft nofile 65535

mongo hard nofile 65535

mongo soft nproc 65535

mongo hard nproc 65535

mongo soft stack 10240

mongo hards stack 10240

二、基础安装
2.1 一主二从副本集搭建

节点名

IP

端口

配置文件

M1

127.0.0.1

27018

/u01/mongodb/node1/conf/mongodb.conf

S1

127.0.0.1

27019

/u01/mongodb/node2/conf/mongodb.conf

S2

127.0.0.1

27020

/u01/mongodb/node3/conf/mongodb.conf

2.2下载安装包并解压

cd /u01

tar -zxvf  mongodb-linux-x86_64-rhel70-4.4.26.tgz

移动目录

mv mongodb-linux-x86_64-rhel70-4.4.26.tgz mongodb

创建目录

mkdir  key  node1

cd /u01/mongodb/node1

mkdir data log conf

cd /u01/mongodb

cp -r node1 node2

cp -r node2 node3

创建启动账号

groupadd mongo

useradd -M -g mongo mongo

生成keyfile,如果部署到不同主机,需要拷贝到其他主机上

openssl rand -base64 159 >  /u01/mongodb/key/mongo_cluster.key

chmod 600 /u01/mongodb/key/mongo_cluster.key

修改目录权限

chown -R mongo:mongo /u01/mongodb

三、配置文件

systemLog:

  destination: file

  path: /u01/mongodb/node1/log/mongod.log # log path

  logAppend: true

   logRotate: reopen

   destination: file

   timeStampFormat: "iso8601-local"

storage:

  dbPath: /u01/mongodb/node1/data # data directory

  journal: #是否启用journal日志

enabled: true

directoryPerDB: true

syncPeriodSecs: 60

  engine: wiredTiger #存储引擎

wiredTiger:

engineConfig:

cacheSizeGB: 10

journalCompressor: "snappy"

directoryForIndexes: false

collectionConfig:

blockCompressor: "snappy"

indexConfig:

prefixCompression: true

net:

 port: 27018 # port

  bindIpAll: true

  maxIncomingConnections: 50000

  wireObjectCheck: true

  ipv6: false

  unixDomainSocket:

      enabled: true

      pathPrefix: "/u01/mongodb/node1/tmp"

      filePermissions: 0700

processManagement:

 fork: true

 pidFilePath: /u01/mongodb/node1/node1.pid

security:

 keyFile: "/u01/mongodb/key/mongo_cluster.key"

 clusterAuthMode: "keyFile"

 authorization: "enabled"

 javascriptEnabled: true

operationProfiling:

    slowOpThresholdMs: 100

    mode: slowOp

replication:

 oplogSizeMB: 20480

 replSetName: "repl_cluster"

 enableMajorityReadConcern: false

3个节点配置文件一致,根据需要更改相应值即可

四、启动并初始化
4.1 启动3个数据节点

sudo -u mongo numactl --interleave=all mongod -f  /u01/mongodb/node1/conf/mongodb.conf

sudo -u mongo numactl --interleave=all mongod -f  /u01/mongodb/node2/conf/mongodb.conf

sudo -u mongo numactl --interleave=all mongod -f  /u01/mongodb/node3/conf/mongodb.conf

4.2 初始化配置

use admin

cfg={_id:"repl_cluster",

members:[{_id:0,host:"localhost:27018",priority:1},

{_id:1,host:"localhost:27019"},

{_id:2,host:"localhost:27020"}]

}文章来源地址https://www.toymoban.com/news/detail-813572.html

rs.initiate(cfg);

4.3 查看复制集状态

repl_cluster:PRIMARY> rs.status()

{

        "set" : "repl_cluster",

        "date" : ISODate("2024-01-05T06:35:09.080Z"),

        "myState" : 1,

        "term" : NumberLong(2),

        "syncSourceHost" : "",

        "syncSourceId" : -1,

        "heartbeatIntervalMillis" : NumberLong(2000),

        "majorityVoteCount" : 2,

        "writeMajorityCount" : 2,

        "votingMembersCount" : 3,

        "writableVotingMembersCount" : 3,

        "members" : [

                {

                        "_id" : 0,

                        "name" : "localhost:27018",

                        "health" : 1,

                        "state" : 1,

                        "stateStr" : "PRIMARY",

                        "uptime" : 78682,

                        "optime" : {

                                "ts" : Timestamp(1704436504, 1),

                                "t" : NumberLong(2)

                        },

                        "optimeDate" : ISODate("2024-01-05T06:35:04Z"),

                        "lastAppliedWallTime":ISODate("2024-01-05T06:35:04.073Z"),

                        "lastDurableWallTime":ISODate("2024-0105T06:35:04.073Z"),

                        "syncSourceHost" : "",

                        "syncSourceId" : -1,

                        "infoMessage" : "",

                        "electionTime" : Timestamp(1704357871, 1),

                        "electionDate" : ISODate("2024-01-04T08:44:31Z"),

                        "configVersion" : 1,

                        "configTerm" : 2,

                        "self" : true,

                        "lastHeartbeatMessage" : ""

                },

                {

                        "_id" : 1,

                        "name" : "localhost:27019",

                        "health" : 1,

                        "state" : 2,

                        "stateStr" : "SECONDARY",

                        "uptime" : 78647,

                        "optime" : {

                                "ts" : Timestamp(1704436504, 1),

                                "t" : NumberLong(2)

                        },

                        "optimeDurable" : {

                                "ts" : Timestamp(1704436504, 1),

                                "t" : NumberLong(2)

                        },

                        "optimeDate" : ISODate("2024-01-05T06:35:04Z"),

                        "optimeDurableDate" : ISODate("2024-01-05T06:35:04Z"),

                        "lastAppliedWallTime":ISODate("2024-01-05T06:35:04.073Z"),

                        "lastDurableWallTime":ISODate("2024-0105T06:35:04.073Z"),

                        "lastHeartbeat" : ISODate("2024-01-05T06:35:07.970Z"),

                        "lastHeartbeatRecv" : ISODate("2024-01-05T06:35:08.967Z"),

                        "pingMs" : NumberLong(0),

                        "lastHeartbeatMessage" : "",

                        "syncSourceHost" : "localhost:27020",

                        "syncSourceId" : 2,

                        "infoMessage" : "",

                        "configVersion" : 1,

                        "configTerm" : 2

                },

                {

                        "_id" : 2,

                        "name" : "localhost:27020",

                        "health" : 1,

                        "state" : 2,

                        "stateStr" : "SECONDARY",

                        "uptime" : 78642,

                        "optime" : {

                                "ts" : Timestamp(1704436504, 1),

                                "t" : NumberLong(2)

                        },

                        "optimeDurable" : {

                                "ts" : Timestamp(1704436504, 1),

                                "t" : NumberLong(2)

                        },

                        "optimeDate" : ISODate("2024-01-05T06:35:04Z"),

                        "optimeDurableDate" : ISODate("2024-01-05T06:35:04Z"),

                        "lastAppliedWallTime":ISODate("2024-01-05T06:35:04.073Z"),

                        "lastDurableWallTime":ISODate("2024-0105T06:35:04.073Z"),

                        "lastHeartbeat" : ISODate("2024-01-05T06:35:07.971Z"),

                        "lastHeartbeatRecv" : ISODate("2024-01-05T06:35:08.465Z"),

                        "pingMs" : NumberLong(0),

                        "lastHeartbeatMessage" : "",

                        "syncSourceHost" : "localhost:27018",

                        "syncSourceId" : 0,

                        "infoMessage" : "",

                        "configVersion" : 1,

                        "configTerm" : 2

                }

        ],

        "ok" : 1,

        "$clusterTime" : {

                "clusterTime" : Timestamp(1704436504, 1),

                "signature" : {

                        "hash" : BinData(0,"v2qzTOmGVCC4cSO2EF38WQ3TGLM="),

                        "keyId" : NumberLong("7319816138693541892")

                }

        },

        "operationTime" : Timestamp(1704436504, 1)

}

查看Replica Sets 状态

repl_cluster:PRIMARY> rs.isMaster()

{

        "topologyVersion" : {

                "processId" : ObjectId("65966fc3b2be80d8248ff95e"),

                "counter" : NumberLong(6)

        },

        "hosts" : [

                "localhost:27018",

                "localhost:27019",

                "localhost:27020"

        ],

        "setName" : "repl_cluster",

        "setVersion" : 1,

        "ismaster" : true,

        "secondary" : false,

        "primary" : "localhost:27018",

        "me" : "localhost:27018",

        "electionId" : ObjectId("7fffffff0000000000000002"),

        "lastWrite" : {

                "opTime" : {

                        "ts" : Timestamp(1704436574, 1),

                        "t" : NumberLong(2)

                },

                "lastWriteDate" : ISODate("2024-01-05T06:36:14Z"),

                "majorityOpTime" : {

                        "ts" : Timestamp(1704436574, 1),

                        "t" : NumberLong(2)

                },

                "majorityWriteDate" : ISODate("2024-01-05T06:36:14Z")

        },

        "maxBsonObjectSize" : 16777216,

        "maxMessageSizeBytes" : 48000000,

        "maxWriteBatchSize" : 100000,

        "localTime" : ISODate("2024-01-05T06:36:19.346Z"),

        "logicalSessionTimeoutMinutes" : 30,

        "connectionId" : 39,

        "minWireVersion" : 0,

        "maxWireVersion" : 9,

        "readOnly" : false,

        "ok" : 1,

        "$clusterTime" : {

                "clusterTime" : Timestamp(1704436574, 1),

                "signature" : {

                        "hash" : BinData(0,"GIed52Qk4RdLOy9M0YmdT2z76NA="),

                        "keyId" : NumberLong("7319816138693541892")

                }

        },

        "operationTime" : Timestamp(1704436574, 1)

}

4.4 创建账号并认证

db.createUser({user:"admin", pwd: "123456",roles:[{role:"root",db:"admin"}]})

db.auth("admin", "123456");

Mongodb Replica Sets 副本集群搭建,Mongodb,mongodb,数据库

4.5 重新登录并验证

mongo --port 27018 -u admin -p 

rs.status()

五、replica Set 管理
5.1 读写分离

主库插入测试数据

use test

j={name:"mongo_new",age:5}

i={x:3}

db.test.insert(j)

db.test.insert(i)

db.test.save(i)

db.test.save(j)

db.test.find()

repl_cluster:PRIMARY>use test

switched to db test

repl_cluster:PRIMARY> db.test.find()

{ "_id" : ObjectId("65962274d846bcd325533e5b"), "x" : 3 }

{ "_id" : ObjectId("659626a1d846bcd325533e5c"), "name" : "mongo_new", "age" : 5 }

从库进行查询操作

repl_cluster:SECONDARY> show collections

uncaught exception: Error: listCollections failed: {

        "topologyVersion" : {

                "processId" : ObjectId("65966fe4c8db6c6ee7ee58fa"),

                "counter" : NumberLong(4)

        },

        "operationTime" : Timestamp(1704422833, 1),

        "ok" : 0,

        "errmsg" : "not master and slaveOk=false",

        "code" : 13435,

        "codeName" : "NotPrimaryNoSecondaryOk",

        "$clusterTime" : {

                "clusterTime" : Timestamp(1704422833, 1),

                "signature" : {

                        "hash" : BinData(0,"zp3Q5q7KdZpW6jlTQSwi3bbLgkA="),

                        "keyId" : NumberLong("7319816138693541892")

                }

        }

查询报错,从库无法执行查询操作

开启从库查询操作

repl_cluster:SECONDARY> db.getMongo().setSecondaryOk()

repl_cluster:SECONDARY> show collections

test

repl_cluster:SECONDARY> db.test.find()

{ "_id" : ObjectId("65962274d846bcd325533e5b"), "x" : 3 }

{ "_id" : ObjectId("659626a1d846bcd325533e5c"), "name" : "mongo_new", "age" : 5 }

repl_cluster:SECONDARY>

5.2 故障转移

模拟主库down机,验证故障是否自动转移

杀掉主库进程

[root@erp-db ~]# ps -ef |grep mongo | more

mongo    15862     1  0 Jan04 ?        00:12:23 mongod -f /u01/mongodb/node1/conf/mongodb.conf

mongo    16006     1  0 Jan04 ?        00:12:25 mongod -f /u01/mongodb/node2/conf/mongodb.conf

mongo    16111     1  0 Jan04 ?        00:12:38 mongod -f /u01/mongodb/node3/conf/mongodb.conf

[root@erp-db ~]# kill -9 15862

查看副本集群状态

repl_cluster:PRIMARY> rs.status()

{

        "set" : "repl_cluster",

        "date" : ISODate("2024-01-05T06:45:16.062Z"),

        "myState" : 1,

        "term" : NumberLong(3),

        "syncSourceHost" : "",

        "syncSourceId" : -1,

        "heartbeatIntervalMillis" : NumberLong(2000),

        "majorityVoteCount" : 2,

        "writeMajorityCount" : 2,

        "votingMembersCount" : 3,

        "writableVotingMembersCount" : 3,

        "members" : [

                {

                        "_id" : 0,

                        "name" : "localhost:27018",

                        "health" : 0,

                        "state" : 8,

                        "stateStr" : "(not reachable/healthy)",

                        "uptime" : 0,

                        "optime" : {

                                "ts" : Timestamp(0, 0),

                                "t" : NumberLong(-1)

                        },

                        "optimeDurable" : {

                                "ts" : Timestamp(0, 0),

                                "t" : NumberLong(-1)

                        },

                        "optimeDate" : ISODate("1970-01-01T00:00:00Z"),

                        "optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"),

                        "lastAppliedWallTime":ISODate("2024-01-05T06:44:34.087Z"),

                        "lastDurableWallTime":ISODate("2024-0105T06:44:34.087Z"),

                        "lastHeartbeat" : ISODate("2024-01-05T06:45:15.756Z"),

                        "lastHeartbeatRecv" : ISODate("2024-01-05T06:44:37.970Z"),

                        "pingMs" : NumberLong(0),

                        "lastHeartbeatMessage" : "Error connecting to localhost:27018 (127.0.0.1:27018) :: caused by :: Connection refused",

                        "syncSourceHost" : "",

                        "syncSourceId" : -1,

                        "infoMessage" : "",

                        "configVersion" : 1,

                        "configTerm" : 2

                },

                {

                        "_id" : 1,

                        "name" : "localhost:27019",

                        "health" : 1,

                        "state" : 1,

                        "stateStr" : "PRIMARY",

                        "uptime" : 79256,

                        "optime" : {

                                "ts" : Timestamp(1704437107, 1),

                                "t" : NumberLong(3)

                        },

                        "optimeDate" : ISODate("2024-01-05T06:45:07Z"),

                        "lastAppliedWallTime":ISODate("2024-01-05T06:45:07.750Z"),

                        "lastDurableWallTime":ISODate("2024-0105T06:45:07.750Z"),

                        "syncSourceHost" : "",

                        "syncSourceId" : -1,

                        "infoMessage" : "",

                        "electionTime" : Timestamp(1704437087, 1),

                        "electionDate" : ISODate("2024-01-05T06:44:47Z"),

                        "configVersion" : 1,

                        "configTerm" : 3,

                        "self" : true,

                        "lastHeartbeatMessage" : ""

                },

                {

                        "_id" : 2,

                        "name" : "localhost:27020",

                        "health" : 1,

                        "state" : 2,

                        "stateStr" : "SECONDARY",

                        "uptime" : 79248,

                        "optime" : {

                                "ts" : Timestamp(1704437107, 1),

                                "t" : NumberLong(3)

                        },

                        "optimeDurable" : {

                                "ts" : Timestamp(1704437107, 1),

                                "t" : NumberLong(3)

                        },

                        "optimeDate" : ISODate("2024-01-05T06:45:07Z"),

                        "optimeDurableDate" : ISODate("2024-01-05T06:45:07Z"),

                        "lastAppliedWallTime":ISODate("2024-01-05T06:45:07.750Z"),

                        "lastDurableWallTime":ISODate("2024-0105T06:45:07.750Z"),

                        "lastHeartbeat" : ISODate("2024-01-05T06:45:15.742Z"),

                        "lastHeartbeatRecv" : ISODate("2024-01-05T06:45:14.249Z"),

                        "pingMs" : NumberLong(0),

                        "lastHeartbeatMessage" : "",

                        "syncSourceHost" : "localhost:27019",

                        "syncSourceId" : 1,

                        "infoMessage" : "",

                        "configVersion" : 1,

                        "configTerm" : 3

                }

        ],

        "ok" : 1,

        "$clusterTime" : {

                "clusterTime" : Timestamp(1704437107, 1),

                "signature" : {

                        "hash" : BinData(0,"Q6vILQyJe0QvnCDuZZUfS2IJafA="),

                        "keyId" : NumberLong("7319816138693541892")

                }

        },

        "operationTime" : Timestamp(1704437107, 1)

}

27018端口mongodb出现异常,状态为(not reachable/healthy)",系统自动选举了27019端口为主,实现了故障的自动转移

当原主进程启动后,自动加入到集群中,角色为SECONDARY

5.3 增加节点
5.3.1 通过oplog来增加节点

1、 配置并启动新节点,启用20721作为新节点端口,配置文件根据需要更改

sudo -u mongo numactl --interleave=all mongod -f  /u01/mongodb/node4/conf/mongodb.conf

about to fork child process, waiting until server is ready for connections.

forked process: 25698

child process started successfully, parent exiting

2、 添加新节点到现有Replica Set

repl_cluster:PRIMARY> rs.add("localhost:27021")

{

        "ok" : 1,

        "$clusterTime" : {

                "clusterTime" : Timestamp(1704439046, 1),

                "signature" : {

                        "hash" : BinData(0,"S8ApX1WUo83welNeMKf5jkBdj+Q="),

                        "keyId" : NumberLong("7319816138693541892")

                }

        },

        "operationTime" : Timestamp(1704439046, 1)

}

3、 查看集群状态

                {

                        "_id" : 3,

                        "name" : "localhost:27021",

                        "health" : 1,

                        "state" : 2,

                        "stateStr" : "SECONDARY",

                        "uptime" : 10,

                        "optime" : {

                                "ts" : Timestamp(1704439046, 1),

                                "t" : NumberLong(3)

                        },

                        "optimeDurable" : {

                                "ts" : Timestamp(1704439046, 1),

                                "t" : NumberLong(3)

                        },

                        "optimeDate" : ISODate("2024-01-05T07:17:26Z"),

                        "optimeDurableDate" : ISODate("2024-01-05T07:17:26Z"),

                        "lastAppliedWallTime":ISODate("2024005T07:17:26.414Z"),

                       "lastDurableWallTime":ISODate("20240105T07:17:26.414Z"),

                        "lastHeartbeat" : ISODate("2024-01-05T07:17:36.481Z"),

                        "lastHeartbeatRecv":ISODate("2024-0105T07:17:36.772Z"),

                        "pingMs" : NumberLong(0),

                        "lastHeartbeatMessage" : "",

                        "syncSourceHost" : "",

                        "syncSourceId" : -1,

                        "infoMessage" : "",

                        "configVersion" : 2,

                        "configTerm" : 3

                }

        ],

        "ok" : 1,

4、 验证数据同步

repl_cluster:SECONDARY> rs.secondaryOk()

repl_cluster:SECONDARY> db.test.find()

{ "_id" : ObjectId("65962274d846bcd325533e5b"), "x" : 3 }

{ "_id" : ObjectId("659626a1d846bcd325533e5c"), "name" : "mongo_new", "age" : 5 }

通过oplog日志进行添加节点操作简单,但oplog是capped collection,采用循环的方式处理日志,通过oplog日志来添加节点,可能导致数据的不一致(日志被刷新),因此我们引出快照和oplog相结合的方式来添加节点,保证数据的一致性。

方式:复制一份副本集的物理文件来做初始化数据,然后使用oplog日志来追溯数据,最终达到数据的一致性。

5.3.2 通过数据库快照(--fastsync)和oplog来增加节点

1、复制一份副本集成员的物理文件做初始数据

cp –r /u01/mongodb/node4 /u01/mongodb/node5

2、复制完成后,清理不需要的文件,并插入一条新文档,作为同步验证使用

repl_cluster:PRIMARY> j={name:"node5",age:27022}

{ "name" : "node5", "age" : 27022 }

repl_cluster:PRIMARY> db.test.insert(j)

WriteResult({ "nInserted" : 1 })

repl_cluster:PRIMARY> db.test.find()

{ "_id" : ObjectId("65962274d846bcd325533e5b"), "x" : 3 }

{ "_id" : ObjectId("659626a1d846bcd325533e5c"), "name" : "mongo_new", "age" : 5 }

{ "_id" : ObjectId("6597b42827437b37032f0aa2"), "name" : "node5", "age" : 27022 }

3、启动新节点27022端口

[root@erp-db]# sudo -u mongo numactl --interleave=all mongod -f  /u01/mongodb/node5/conf/mongodb.conf

about to fork child process, waiting until server is ready for connections.

forked process: 2520

child process started successfully, parent exiting

4、添加新节点到现有Replica Set

repl_cluster:PRIMARY> rs.add("localhost:27022")

{

        "ok" : 1,

        "$clusterTime" : {

                "clusterTime" : Timestamp(1704442052, 1),

                "signature" : {

                        "hash" : BinData(0,"nQHjkoZke4XsoroiK8SqqisCfsA="),

                        "keyId" : NumberLong("7319816138693541892")

                }

        },

        "operationTime" : Timestamp(1704442052, 1)

}

5、 验证数据同步

repl_cluster:SECONDARY> rs.secondaryOk()

repl_cluster:SECONDARY> db.test.find()

{ "_id" : ObjectId("65962274d846bcd325533e5b"), "x" : 3 }

{ "_id" : ObjectId("659626a1d846bcd325533e5c"), "name" : "mongo_new", "age" : 5 }

{ "_id" : ObjectId("6597b42827437b37032f0aa2"), "name" : "node5", "age" : 27022 }

5.4减少节点

将刚刚添加的两个新节点27021和27022从复制集中去除掉,只需执行rs.remove 指令

就可以了,具体如下:

repl_cluster:PRIMARY> rs.remove("localhost:27021")

{

        "ok" : 1,

        "$clusterTime" : {

                "clusterTime" : Timestamp(1704444644, 1),

                "signature" : {

                        "hash" : BinData(0,"2XlJmd+hB0L2oNeXGO4GNwS3E1U="),

                        "keyId" : NumberLong("7319816138693541892")

                }

        },

        "operationTime" : Timestamp(1704444644, 1)

}

repl_cluster:PRIMARY> rs.remove("localhost:27022")

{

        "ok" : 1,

        "$clusterTime" : {

                "clusterTime" : Timestamp(1704444654, 1),

                "signature" : {

                        "hash" : BinData(0,"d1MJJ3p+dzvKBS63W3DWVWteb0k="),

                        "keyId" : NumberLong("7319816138693541892")

                }

        },

        "operationTime" : Timestamp(1704444654, 1)

}

查看集群状态,27021,27022节点已经删除

repl_cluster:PRIMARY> rs.status()

{

        "set" : "repl_cluster",

        "date" : ISODate("2024-01-05T08:51:31.008Z"),

        "myState" : 1,

        "term" : NumberLong(3),

        "syncSourceHost" : "",

        "syncSourceId" : -1,

        "heartbeatIntervalMillis" : NumberLong(2000),

        "majorityVoteCount" : 2,

        "writeMajorityCount" : 2,

        "votingMembersCount" : 3,

        "writableVotingMembersCount" : 3,

        "members" : [

                {

                        "_id" : 0,

                        "name" : "localhost:27018",

                        "health" : 1,

                        "state" : 2,

                        "stateStr" : "SECONDARY",

                        "uptime" : 7101,

                        "optime" : {

                                "ts" : Timestamp(1704444687, 1),

                                "t" : NumberLong(3)

                        },

                        "optimeDurable" : {

                                "ts" : Timestamp(1704444687, 1),

                                "t" : NumberLong(3)

                        },

                        "optimeDate" : ISODate("2024-01-05T08:51:27Z"),

                        "optimeDurableDate" : ISODate("2024-01-05T08:51:27Z"),

                        "lastAppliedWallTime":ISODate("2024-01-05T08:51:27.956Z"),

                        "lastDurableWallTime":ISODate("2024-0105T08:51:27.956Z"),

                        "lastHeartbeat" : ISODate("2024-01-05T08:51:30.974Z"),

                        "lastHeartbeatRecv" : ISODate("2024-01-05T08:51:30.977Z"),

                        "pingMs" : NumberLong(0),

                        "lastHeartbeatMessage" : "",

                        "syncSourceHost" : "localhost:27020",

                        "syncSourceId" : 2,

                        "infoMessage" : "",

                        "configVersion" : 5,

                        "configTerm" : 3

                },

                {

                        "_id" : 1,

                        "name" : "localhost:27019",

                        "health" : 1,

                        "state" : 1,

                        "stateStr" : "PRIMARY",

                        "uptime" : 86831,

                        "optime" : {

                                "ts" : Timestamp(1704444687, 1),

                                "t" : NumberLong(3)

                        },

                        "optimeDate" : ISODate("2024-01-05T08:51:27Z"),

                        "lastAppliedWallTime":ISODate("2024-01-05T08:51:27.956Z"),

                        "lastDurableWallTime":ISODate("2024-0105T08:51:27.956Z"),

                        "syncSourceHost" : "",

                        "syncSourceId" : -1,

                        "infoMessage" : "",

                        "electionTime" : Timestamp(1704437087, 1),

                        "electionDate" : ISODate("2024-01-05T06:44:47Z"),

                        "configVersion" : 5,

                        "configTerm" : 3,

                        "self" : true,

                        "lastHeartbeatMessage" : ""

                },

                {

                        "_id" : 2,

                        "name" : "localhost:27020",

                        "health" : 1,

                        "state" : 2,

                        "stateStr" : "SECONDARY",

                        "uptime" : 86823,

                        "optime" : {

                                "ts" : Timestamp(1704444687, 1),

                                "t" : NumberLong(3)

                        },

                        "optimeDurable" : {

                                "ts" : Timestamp(1704444687, 1),

                                "t" : NumberLong(3)

                        },

                        "optimeDate" : ISODate("2024-01-05T08:51:27Z"),

                        "optimeDurableDate" : ISODate("2024-01-05T08:51:27Z"),

                        "lastAppliedWallTime":ISODate("2024-01-05T08:51:27.956Z"),

                        "lastDurableWallTime":ISODate("2024-0105T08:51:27.956Z"),

                        "lastHeartbeat" : ISODate("2024-01-05T08:51:30.975Z"),

                        "lastHeartbeatRecv" : ISODate("2024-01-05T08:51:30.977Z"),

                        "pingMs" : NumberLong(0),

                        "lastHeartbeatMessage" : "",

                        "syncSourceHost" : "localhost:27019",

                        "syncSourceId" : 1,

                        "infoMessage" : "",

                        "configVersion" : 5,

                        "configTerm" : 3

                }

        ],

        "ok" : 1,

        "$clusterTime" : {

                "clusterTime" : Timestamp(1704444687, 1),

                "signature" : {

                        "hash" : BinData(0,"bBPDXuxrAqjzfO86rcj13v7mKQI="),

                        "keyId" : NumberLong("7319816138693541892")

                }

        },

        "operationTime" : Timestamp(1704444687, 1)

}

到了这里,关于Mongodb Replica Sets 副本集群搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搭建 MongoDB (v6.0) 副本集记录

    副本集(Replica Set)是一组带有故障转移的 MongoDB 实例组成的集群,由一个主(Primary)服务器和多个从(Secondary)服务器构成。通过Replication,将数据的更新由Primary推送到其他实例上,在一定的延迟之后,每个MongoDB实例维护相同的数据集副本。通过维护冗余的数据库副本,能

    2024年02月05日
    浏览(50)
  • 【保姆级教程】:docker搭建MongoDB三节点副本集

    欢迎关注公众号:天天说编程 你的关注是我最大的动力! 容器可以理解为一个进程,镜像是把环境,组件等都配置好,运行成容器的,容器里面运行服务,也可以说是一个进程。镜像是模板,镜像是实例。 一个镜像可以创建多个实例。也就是多个容器,容器之间相互独立。

    2024年02月03日
    浏览(46)
  • k8s部署mongodb-sharded7.X集群(多副本集)

    默认副本数较多。我修改为3+3 搜索replicaCount 修改 最后安装 再分享一个web客户端

    2024年02月03日
    浏览(40)
  • mongodb集群搭建

    下载mongodb-linux-x86_64-rhel70-5.0.18 vi mongodb.conf 导入环境变量中 以上操作在每个机器都做一遍 之后选择一个作为主节点,启动mongodb 启动: mongod -f ../conf/mongodb.conf --replSet \\\"grap\\\" 每个机器都做一边,最后连接一台机器 Mongo进去数据库中,(注意一定不要先执行rs.initiate(),否则后

    2024年02月16日
    浏览(46)
  • MongoDB分片集群搭建

    MongoDB 有三种集群架构模式,分别为主从复制(Master-Slaver)、副本集(Replica Set)和分片(Sharding)模式。 Master-Slaver 是一种主从复制的模式,目前已经不推荐使用 ReplicaSet模式取代了Master-Slaver模式,是一种互为主从的关系。Replica Set 将数据复制多份保存,不同服务器保存同一

    2024年01月19日
    浏览(45)
  • 基于Docker的MongoDB集群搭建

    原文:https://www.yuque.com/wfzx/ninzck/dagu5akm0ztfuobw?singleDoc# 《基于Docker的MongoDB集群搭建》 在Window 10上使用 VMware 开启四个 Ubuntu 18 的虚拟主机。 MongoDB A:192.168.204.156(主节点) MongoDB B:192.168.204.157 MongoDB C:192.168.204.158 MongoDB D:192.168.204.159 host文件位于 C:WindowsSystem32driversetch

    2024年02月08日
    浏览(39)
  • 【MongoDB】四、MongoDB副本集的部署

           能够通过部署副本集理解副本集机制,从而解决大数据项目中数据丢失的问题 环境准备:根据表中的信息完成3台MongoDB服务器的部署(XXX是姓名拼音首字母)。 (环境准备在专栏下单独一篇文章中) (1)分别在三台服务器XXX01、XXX02和XXX03上以副本集模式启动Mong

    2024年02月11日
    浏览(36)
  • MongoDB搭建复制集集群(Docker版)

    复制集注意事项 关于复制集: 复制集为 MongoDB 提供了数据可靠性,当某个节点挂掉,可以重新选举出主节点; 复制集为 MongoDB 提供了数据安全性,当节点宕机后,备份数据保证数据不丢失; 复制集为 MOngoDB 提供了高性能,可通过配置主从读写分离提高服务性能; 关于硬件

    2024年01月22日
    浏览(48)
  • mongodb使用docker搭建replicaSet集群与变更监听

    在mongodb如果需要启用变更监听功能(watch),mongodb需要在replicaSet或者cluster方式下运行。 replicaSet和cluster从部署难度相比,replicaSet要简单许多。如果所存储的数据量规模不算太大的情况下,那么使用replicaSet方式部署mongodb是一个不错的选择。 mongodb版本:mongodb-6.0.5 两台主机:主

    2024年02月02日
    浏览(38)
  • 使用 docker 创建 mongodb 副本集, 和调整副本集优先级

    === mongod 本地创建副本集 mongod --port 27017 --dbpath /srv/mongodb/db0 --replSet rs0 --bind_ip localhost,hostname(s)|ip address(es) –dbpath 指向数据存放地址 –replSet 后面为 副本集的名。 rs.initiate() 启动新的副本集 rs.conf() 查看副本集的配置 rs.status() 查看副本集的状态 rs.add() 将成员添加到副本集

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包