文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

本篇文章给大家分享的是有关如何搭建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,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯