Sharding:Shard Cluster 增加 Shard 节点

上篇 blog 介绍了搭建单节点 shard ,在某些情况下需要增加 shard 节点,接下来介绍下。

现有环境

1.1 查看Sharding Cluster 状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mongos> sh.status();  
---Sharding Status ---
sharding version: { "_id" : 1, "version" : 3 }
shards:
{ "_id" : "shard0000", "host" : "redhatB.example.com:5281" }
{ "_id" : "shard0001", "host" : "redhatB.example.com:5282" }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "test", "partitioned" : false, "primary" : "shard0000" }
{ "_id" : "francs", "partitioned" : true, "primary" : "shard0000" }
francs.test_1 chunks:
shard0000 2
shard0001 1
{ "id" : { $minKey : 1 } } -->> { "id" : 1 } on : shard0000 Timestamp(2000, 1)
{ "id" : 1 } -->> { "id" : 11828 } on : shard0000 Timestamp(1000, 3)
{ "id" : 11828 } -->> { "id" : { $maxKey : 1 } } on : shard0001 Timestamp(2000, 0)
{ "_id" : "records", "partitioned" : false, "primary" : "shard0000" }

备注:两单节点的 shard。

1.2 查看当前 test_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
mongos> db.test_1.stats();  
{
"sharded" : true,
"ns" : "francs.test_1",
"count" : 50000,
"numExtents" : 10,
"size" : 1800024,
"storageSize" : 5849088,
"totalIndexSize" : 3131408,
"indexSizes" : {
"_id_" : 1684256,
"id_1" : 1447152
},
"avgObjSize" : 36.00048,
"nindexes" : 2,
"nchunks" : 4,
"shards" : {
"shard0000" : {
"ns" : "francs.test_1",
"count" : 34350,
"size" : 1236600,
"avgObjSize" : 36,
"storageSize" : 3055616,
"numExtents" : 5,
"nindexes" : 2,
"lastExtentSize" : 2359296,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 2125760,
"indexSizes" : {
"_id_" : 1144640,
"id_1" : 981120
},
"ok" : 1
},
"shard0001" : {
"ns" : "francs.test_1",
"count" : 15650,
"size" : 563424,
"avgObjSize" : 36.00153354632588,
"storageSize" : 2793472,
"numExtents" : 5,
"nindexes" : 2,
"lastExtentSize" : 2097152,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 1005648,
"indexSizes" : {
"_id_" : 539616,
"id_1" : 466032
},
"ok" : 1
}
},
"ok" : 1
}

备注:集合 test_1 的数据分布在两 shard 节点。

新增 Shard3 节点

2.1 创建 shard3 数据目录和配置文件

1
2
3
4
5
6
7
8
9
[shard@redhatB shard]$ mkdir -p /shard/shard3  
[shard@redhatB shard]$ touch /shard/shard3/shard3_5283.conf
vim /shard/shard3/shard3_5283.conf
fork = true
port = 5283
dbpath = /shard/shard3
logpath = /shard/shard3/shard3.log
logappend = true
journal = true

2.2 启动 shard3 节点

1
2
3
4
[shard@redhatB shard]$ mongod -f /shard/shard3/shard3_5283.conf  
forked process: 23241
all output going to: /shard/shard3/shard3.log
child process started successfully, parent exiting

2.3 新增 shard 节点

1
2
3
4
[shard@redhatB ~]$ mongo 127.0.0.1:7282  
MongoDB shell version: 2.2.1
connecting to: 127.0.0.1:7282/test
mongos> sh.addShard("redhatB.example.com:5283");{ "shardAdded" : "shard0002", "ok" : 1 }

备注:通过命令 addShard 新增 shard 节点。

2.4 再次查看 shard cluster 状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
mongos> sh.status();  
--- Sharding Status ---
sharding version: { "_id" : 1, "version" : 3 }
shards:
{ "_id" : "shard0000", "host" : "redhatB.example.com:5281" }
{ "_id" : "shard0001", "host" : "redhatB.example.com:5282" }
{ "_id" : "shard0002", "host" : "redhatB.example.com:5283" }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "test", "partitioned" : false, "primary" : "shard0000" }
{ "_id" : "francs", "partitioned" : true, "primary" : "shard0000" }
francs.test_1 chunks:
shard0002 1
shard0000 1
shard0001 1
{ "id" : { $minKey : 1 } } -->> { "id" : 1 } on : shard0002 Timestamp(3000, 0)
{ "id" : 1 } -->> { "id" : 11828 } on : shard0000 Timestamp(3000, 1)
{ "id" : 11828 } -->> { "id" : { $maxKey : 1 } } on : shard0001 Timestamp(2000, 0)
{

2.5 查看 test_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
mongos> db.test_1.stats();  
{
"sharded" : true,
"ns" : "francs.test_1",
"count" : 50000,
"numExtents" : 15,
"size" : 1800048,
"storageSize" : 8642560,
"totalIndexSize" : 3147760,
"indexSizes" : {
"_id_" : 1692432,
"id_1" : 1455328
},
"avgObjSize" : 36.00096,
"nindexes" : 2,
"nchunks" : 4,
"shards" : {
"shard0000" : {
"ns" : "francs.test_1",
"count" : 1964,
"size" : 70704,
"avgObjSize" : 36,
"storageSize" : 3055616,
"numExtents" : 5,
"nindexes" : 2,
"lastExtentSize" : 2359296,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 138992,
"indexSizes" : {
"_id_" : 73584,
"id_1" : 65408
},
"ok" : 1
},
"shard0001" : {
"ns" : "francs.test_1",
"count" : 15650,
"size" : 563424,
"avgObjSize" : 36.00153354632588,
"storageSize" : 2793472,
"numExtents" : 5,
"nindexes" : 2,
"lastExtentSize" : 2097152,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 1005648,
"indexSizes" : {
"_id_" : 539616,
"id_1" : 466032
},
"ok" : 1
},
"shard0002" : {
"ns" : "francs.test_1",
"count" : 32386,
"size" : 1165920,
"avgObjSize" : 36.000741060952265,
"storageSize" : 2793472,
"numExtents" : 5,
"nindexes" : 2,
"lastExtentSize" : 2097152,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 2003120,
"indexSizes" : {
"_id_" : 1079232,
"id_1" : 923888
},
"ok" : 1
}
},
"ok" : 1
}

备注:数据已分散到节点 shard3 了,这些工作是一个名为 Balancing 的进程完成的,如果数据比较大,这步花的时间越长,这里不详细介绍。

参考

http://docs.mongodb.org/manual/tutorial/add-shards-to-shard-cluster/

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/237929.html

(0)
上一篇 2022年1月29日
下一篇 2022年1月29日

相关推荐

发表回复

登录后才能评论