千家信息网

如何搭建mongodb架构Replica Set&Sharding—ttlsa

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,本篇文章给大家分享的是有关如何搭建mongodb架构Replica Set&Sharding-ttlsa,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编
千家信息网最后更新 2025年11月09日如何搭建mongodb架构Replica Set&Sharding—ttlsa

本篇文章给大家分享的是有关如何搭建mongodb架构Replica Set&Sharding-ttlsa,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

一分钟搭建mongodb架构Replica Set&Sharding-ttlsa

在测试试验阶段,我们需要有一个模拟的测试环境来测试应用程序和系统架构各个方面的功能,是否符合需求。在我公司,我常常使用下面的方法来为开发人员搭建mongodb的复制集和分片架构进行测试。我也常用这个方法来模拟线上架构,测试相关内容。
开启一个MongoDB shell,不连接任何mongod

?

1

# ./mongo --nodb

创建复制集,一个primary两个secondary

?

1

> replicaSet = newReplSetTest({"nodes": 3})

启动三个mongod实例

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

> replicaSet.startSet()

ReplSetTest Starting Set

ReplSetTest n is: 0

ReplSetTest n: 0ports: [ 31000, 31001, 31002] 31000number

{

"useHostName": true,

"oplogSize": 40,

"keyFile": undefined,

"port": 31000,

"noprealloc": "",

"smallfiles": "",

"rest": "",

"replSet": "testReplSet",

"dbpath": "$set-$node",

"restart": undefined,

"pathOpts": {

"node": 0,

"set": "testReplSet"

}

}

ReplSetTest Starting....

Resetting db path '/data/db/testReplSet-0'

ReplSetTest n is: 1

ReplSetTest n: 1ports: [ 31000, 31001, 31002] 31001number

{

"useHostName": true,

"oplogSize": 40,

"keyFile": undefined,

"port": 31001,

"noprealloc": "",

"smallfiles": "",

"rest": "",

"replSet": "testReplSet",

"dbpath": "$set-$node",

"restart": undefined,

"pathOpts": {

"node": 1,

"set": "testReplSet"

}

}

ReplSetTest Starting....

Resetting db path '/data/db/testReplSet-1'

ReplSetTest n is: 2

ReplSetTest n: 2ports: [ 31000, 31001, 31002] 31002number

{

"useHostName": true,

"oplogSize": 40,

"keyFile": undefined,

"port": 31002,

"noprealloc": "",

"smallfiles": "",

"rest": "",

"replSet": "testReplSet",

"dbpath": "$set-$node",

"restart": undefined,

"pathOpts": {

"node": 2,

"set": "testReplSet"

}

}

ReplSetTest Starting....

Resetting db path '/data/db/testReplSet-2'

复制集初始化

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

> replicaSet.initiate()

{

"replSetInitiate": {

"_id": "testReplSet",

"members": [

{

"_id": 0,

"host": "nd0302012029:31000"

},

{

"_id": 1,

"host": "nd0302012029:31001"

},

{

"_id": 2,

"host": "nd0302012029:31002"

}

]

}

}

启动了三个实例,分别监听在31000,31001,31002端口上

当前MongoDB shell窗口会有大量的日志信息输出,影响操作,另开启一个MongoDB shell

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

# ./mongo --nodb

> conn1 = newMongo("localhost:31000")

> primaryDB = conn1.getDB("test") //testReplSet是默认的复制集测试名

test

> primaryDB.isMaster()

{

"setName": "testReplSet",

"ismaster": true,

"secondary": false,

"hosts": [

"nd0302012029:31000",

"nd0302012029:31002",

"nd0302012029:31001"

],

"primary": "nd0302012029:31000",

"me": "nd0302012029:31000",

"maxBsonObjectSize": 16777216,

"maxMessageSizeBytes": 48000000,

"localTime": ISODate("2013-07-28T04:23:49.866Z"),

"ok": 1

}

插入1000条文档

?

1

2

3

>for(i=0; i<<>1000; i++) { primaryDB.coll.insert({count: i}) }

> primaryDB.coll.count()

1000

创建第二个连接,连接到secondary

?

1

2

3

4

5

6

> conn2 = newMongo("localhost:31001")

connection to localhost:31001

> secondaryDB = conn2.getDB("test")

test

> secondaryDB.coll.find() //默认情况下secondary不可读不可写

error: { "$err": "not master and slaveOk=false", "code": 13435}

允许secondary可读

?

尝试想secondary写数据

?

1

2

3

4

5

6

7

8

9

10

> secondaryDB.coll.insert({"count": 1001})

> secondaryDB.runCommand({"getLastError": 1})

{

"err": "not master",

"code": 10058,

"n": 0,

"lastOp": Timestamp(0, 0),

"connectionId": 75,

"ok": 1

}

可看到secondary不接收客户端写操作

测试复制集的automatic failover功能:
shutdown 31000实例

查看哪个实例变成primary

可见31002实例变成新的master

关闭replica set

sharding简易搭建方法参见: http://www.ttlsa.com/html/1787.html

以上就是如何搭建mongodb架构Replica Set&Sharding-ttlsa,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

测试 架构 实例 方法 三个 功能 更多 知识 篇文章 实用 两个 人员 公司 内容 客户 客户端 就是 工作会 常用 应用程序 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 江西赣商网络技术有限公司 龙之国物语苹果服务器 阿里云的svn服务器 学游戏开发还是软件开发 巡警大队开展内部网络安全排查 小学信息技术将数据库索引 电视服务器出错是什么原因 网络安全演讲作文比赛800字 服务器电源要入固定资产吗 上海关于网络技术的大学 河北省2018网络安全 荒野猎人加好友服务器 mc服务器设置主城 华为互联网领先科技成果 计算机软件开发面试习题集 军工企业做软件开发 大学网络安全宣讲技巧 软件开发的程序员工资高吗 计算机软件开发行业发展趋势 服务管理器 服务器为空 南京星脉网络技术有限公司 服务器sas硬盘盒 济南学习软件开发哪家公司好 广州天动网络技术有限公司 软件开发使用合同范本 计算机技术和科学软件开发 社团数据库系统的er图 找一幅一年级的网络安全手抄报 四川服务器续保价格 数据库故障及恢复策略
0