好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

mongodb添加arbiter节点的方法示例

前言

在创建 mongodb 的replica set的时候,只是做成了1主2从,没有做成1主1从1仲裁。这我们将一个几点从replica set中删除,再以仲裁 节点 的身份加入到replica set中:

1.初始状态:

?

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

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

shard1ReplSet:PRIMARY> rs.status();rs.status();

{

   "set" : "shard1ReplSet",

   "date" : ISODate("2017-02-21T07:48:03.058Z"),

   "myState" : 1,

   "term" : NumberLong(1),

   "heartbeatIntervalMillis" : NumberLong(2000),

   "optimes" : {

     "lastCommittedOpTime" : {

       "ts" : Timestamp(0, 0),

       "t" : NumberLong(-1)

     },

     "appliedOpTime" : {

       "ts" : Timestamp(1487663274, 1),

       "t" : NumberLong(1)

     },

     "durableOpTime" : {

       "ts" : Timestamp(1487587982, 1),

       "t" : NumberLong(-1)

     }

   },

   "members" : [

     {

       "_id" : 0,

       "name" : "10.13.0.130:22001",

       "health" : 1,

       "state" : 1,

       "stateStr" : "PRIMARY",

       "uptime" : 76672,

       "optime" : {

         "ts" : Timestamp(1487663274, 1),

         "t" : NumberLong(1)

       },

       "optimeDate" : ISODate("2017-02-21T07:47:54Z"),

       "electionTime" : Timestamp(1487587993, 1),

       "electionDate" : ISODate("2017-02-20T10:53:13Z"),

       "configVersion" : 1,

       "self" : true

     },

     {

       "_id" : 1,

       "name" : "10.13.0.131:22001",

       "health" : 1,

       "state" : 2,

       "stateStr" : "SECONDARY",

       "uptime" : 75300,

       "optime" : {

         "ts" : Timestamp(1487663274, 1),

         "t" : NumberLong(1)

       },

       "optimeDurable" : {

         "ts" : Timestamp(1487587982, 1),

         "t" : NumberLong(-1)

       },

       "optimeDate" : ISODate("2017-02-21T07:47:54Z"),

       "optimeDurableDate" : ISODate("2017-02-20T10:53:02Z"),

       "lastHeartbeat" : ISODate("2017-02-21T07:48:02.150Z"),

       "lastHeartbeatRecv" : ISODate("2017-02-21T07:48:02.215Z"),

       "pingMs" : NumberLong(0),

       "syncingTo" : "10.13.0.132:22001",

       "configVersion" : 1

     },

     {

       "_id" : 2,

       "name" : "10.13.0.132:22001",

       "health" : 1,

       "state" : 2,

       "stateStr" : "SECONDARY",

       "uptime" : 75300,

       "optime" : {

         "ts" : Timestamp(1487663274, 1),

         "t" : NumberLong(1)

       },

       "optimeDurable" : {

         "ts" : Timestamp(1487587982, 1),

         "t" : NumberLong(-1)

       },

       "optimeDate" : ISODate("2017-02-21T07:47:54Z"),

       "optimeDurableDate" : ISODate("2017-02-20T10:53:02Z"),

       "lastHeartbeat" : ISODate("2017-02-21T07:48:02.889Z"),

       "lastHeartbeatRecv" : ISODate("2017-02-21T07:48:01.503Z"),

       "pingMs" : NumberLong(0),

       "syncingTo" : "10.13.0.130:22001",

       "configVersion" : 1

     }

   ],

   "ok" : 1

}

shard1ReplSet:PRIMARY>

shard1ReplSet:PRIMARY>

shard1ReplSet:PRIMARY>

shard1ReplSet:PRIMARY>

2.删除节点:

?

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

65

66

67

68

69

shard1ReplSet:PRIMARY> rs.remove("10.13.0.132:22001"); rs.remove("10.13.0.132:22001");

{ "ok" : 1 }

shard1ReplSet:PRIMARY> rs.status();rs.status();

{

   "set" : "shard1ReplSet",

   "date" : ISODate("2017-02-21T07:50:52.934Z"),

   "myState" : 1,

   "term" : NumberLong(1),

   "heartbeatIntervalMillis" : NumberLong(2000),

   "optimes" : {

     "lastCommittedOpTime" : {

       "ts" : Timestamp(0, 0),

       "t" : NumberLong(-1)

     },

     "appliedOpTime" : {

       "ts" : Timestamp(1487663447, 1),

       "t" : NumberLong(1)

     },

     "durableOpTime" : {

       "ts" : Timestamp(1487587982, 1),

       "t" : NumberLong(-1)

     }

   },

   "members" : [

     {

       "_id" : 0,

       "name" : "10.13.0.130:22001",

       "health" : 1,

       "state" : 1,

       "stateStr" : "PRIMARY",

       "uptime" : 76841,

       "optime" : {

         "ts" : Timestamp(1487663447, 1),

         "t" : NumberLong(1)

       },

       "optimeDate" : ISODate("2017-02-21T07:50:47Z"),

       "electionTime" : Timestamp(1487587993, 1),

       "electionDate" : ISODate("2017-02-20T10:53:13Z"),

       "configVersion" : 2,

       "self" : true

     },

     {

       "_id" : 1,

       "name" : "10.13.0.131:22001",

       "health" : 1,

       "state" : 2,

       "stateStr" : "SECONDARY",

       "uptime" : 75470,

       "optime" : {

         "ts" : Timestamp(1487663447, 1),

         "t" : NumberLong(1)

       },

       "optimeDurable" : {

         "ts" : Timestamp(1487587982, 1),

         "t" : NumberLong(-1)

       },

       "optimeDate" : ISODate("2017-02-21T07:50:47Z"),

       "optimeDurableDate" : ISODate("2017-02-20T10:53:02Z"),

       "lastHeartbeat" : ISODate("2017-02-21T07:50:51.182Z"),

       "lastHeartbeatRecv" : ISODate("2017-02-21T07:50:52.212Z"),

       "pingMs" : NumberLong(0),

       "configVersion" : 2

     }

   ],

   "ok" : 1

}

shard1ReplSet:PRIMARY>

shard1ReplSet:PRIMARY>

shard1ReplSet:PRIMARY>

3.添加成 arbiter 节点:

?

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

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

shard1ReplSet:PRIMARY> rs.addArb("10.13.0.132:22001");rs.addArb("10.13.0.132:22001");

{ "ok" : 1 }

shard1ReplSet:PRIMARY>

shard1ReplSet:PRIMARY> rs.status();rs.status();

{

   "set" : "shard1ReplSet",

   "date" : ISODate("2017-02-21T07:54:05.161Z"),

   "myState" : 1,

   "term" : NumberLong(1),

   "heartbeatIntervalMillis" : NumberLong(2000),

   "optimes" : {

     "lastCommittedOpTime" : {

       "ts" : Timestamp(0, 0),

       "t" : NumberLong(-1)

     },

     "appliedOpTime" : {

       "ts" : Timestamp(1487663637, 1),

       "t" : NumberLong(1)

     },

     "durableOpTime" : {

       "ts" : Timestamp(1487587982, 1),

       "t" : NumberLong(-1)

     }

   },

   "members" : [

     {

       "_id" : 0,

       "name" : "10.13.0.130:22001",

       "health" : 1,

       "state" : 1,

       "stateStr" : "PRIMARY",

       "uptime" : 77034,

       "optime" : {

         "ts" : Timestamp(1487663637, 1),

         "t" : NumberLong(1)

       },

       "optimeDate" : ISODate("2017-02-21T07:53:57Z"),

       "electionTime" : Timestamp(1487587993, 1),

       "electionDate" : ISODate("2017-02-20T10:53:13Z"),

       "configVersion" : 3,

       "self" : true

     },

     {

       "_id" : 1,

       "name" : "10.13.0.131:22001",

       "health" : 1,

       "state" : 2,

       "stateStr" : "SECONDARY",

       "uptime" : 75662,

       "optime" : {

         "ts" : Timestamp(1487663637, 1),

         "t" : NumberLong(1)

       },

       "optimeDurable" : {

         "ts" : Timestamp(1487587982, 1),

         "t" : NumberLong(-1)

       },

       "optimeDate" : ISODate("2017-02-21T07:53:57Z"),

       "optimeDurableDate" : ISODate("2017-02-20T10:53:02Z"),

       "lastHeartbeat" : ISODate("2017-02-21T07:54:03.210Z"),

       "lastHeartbeatRecv" : ISODate("2017-02-21T07:54:02.211Z"),

       "pingMs" : NumberLong(0),

       "configVersion" : 3

     },

     {

       "_id" : 2,

       "name" : "10.13.0.132:22001",

       "health" : 1,

       "state" : 7,

       "stateStr" : "ARBITER",

       "uptime" : 5,

       "lastHeartbeat" : ISODate("2017-02-21T07:54:03.214Z"),

       "lastHeartbeatRecv" : ISODate("2017-02-21T07:54:02.274Z"),

       "pingMs" : NumberLong(0),

       "configVersion" : 3

     }

   ],

   "ok" : 1

}

shard1ReplSet:PRIMARY>

注1: mongodb 3.4之后,虽然要求config server为replica set,但是不支持arbiter。

添加的时候,会报错:

?

1

2

3

4

5

6

7

8

cfgReplSet:PRIMARY> rs.addArb("10.13.0.132:21000");rs.addArb("10.13.0.132:21000");

{

   "ok" : 0,

   "errmsg" : "Arbiters are not allowed in replica set configurations being used for config servers",

   "code" : 103,

   "codeName" : "NewReplicaSetConfigurationIncompatible"

}

cfgReplSet:PRIMARY>

注2: rs.reconfig()也可以进行操作,效果类似re.remove+rs.addArb,详见:mongodb官方文档- Remove Members from Replica Set

总结

以上就是关于mongodb添加arbiter节点的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

原文链接:https://oracleblog.org/working-case/add-arbiter-for-replica-set/

查看更多关于mongodb添加arbiter节点的方法示例的详细内容...

  阅读:21次