Mongo 分片集群搭建扩容

cat /etc/hosts
192.168.109.129 mongo2 member3.com member4.com
192.168.109.130 mongo3 member5.com member6.com
192.168.109.128 mongo1 member1.com member2.com

 


创建分片集群

mongod --bind_ip 0.0.0.0 --replSet shard1 --dbpath /data/shard1 --logpath /data/shard1/mongod.log --port 27010 --fork --shardsvr --wiredTigerCacheSizeGB 0
.1

rs.initiate({
_id:"shard1",
"members":[
{    
    "_id":0,
    "host":"member1.com:27010"
},
{    
    "_id":1,
    "host":"member3.com:27010"
},
{    
    "_id":2,
    "host":"member5.com:27010"
}
]
});

创建配置集群
mongod --bind_ip 0.0.0.0 --replSet config  --dbpath /data/config/ --logpath /data/config/mongod.log --port 27019 --fork --configsvr --wiredTigerCacheSizeG
B 0.1

rs.initiate({
_id:"config",
"members":[
{    
    "_id":0,
    "host":"member1.com:27019"
},
{    
    "_id":1,
    "host":"member3.com:27019"
},
{    
    "_id":2,
    "host":"member5.com:27019"
}
]
});

启动mongos集群
mongos --bind_ip 0.0.0.0  --logpath /data/mongos/mongos.log --port 20000 --fork --configdb config/member1.com:27019,member3.com:27019,member5.com:27019

mongo localhost:20000

添加分片集群

sh.addShard("shard1/member1.com:27010,member3.com:27010,member5.com:27010");

创建分片表.
sh.enableSharding('foo')
sh.shardCollection('foo.bar',{"_id":"hashed"})


插入测试数据
use foo
for (var i = 0;i<10000;i++){
    db.bar.insert({i:i})
}


扩容新的shard2

mongod --bind_ip 0.0.0.0 --replSet shard2 --dbpath /data/shard2 --logpath /data/shard2/mongod.log --port 27011 --fork --shardsvr --wiredTigerCacheSizeGB 0.1

rs.initiate({
_id:"shard2",
"members":[
{    
    "_id":0,
    "host":"member2.com:27011"
},
{    
    "_id":1,
    "host":"member4.com:27011"
},
{    
    "_id":2,
    "host":"member6.com:27011"
}
]
});


加入新的shard2
sh.addShard("shard2/member2.com:27011,member4.com:27011,member6.com:27011");

sh.status()
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDB分片集群是一种将数据分布在多个服务器上的方式,以实现高可用性和横向扩展性。下面是一些关于MongoDB分片集群的常见问题和答案: 1. 什么是MongoDB分片集群? MongoDB分片集群是一种将数据分割成多个片段并分布在多个服务器上的方法。每个片段(shard)都是一个独立的MongoDB实例,可以存储一部分数据。通过将数据分散在多个片段上,可以实现数据的水平扩展和负载均衡。 2. 如何设置MongoDB分片集群? 要设置MongoDB分片集群,需要遵循以下步骤: a. 部署和配置一个或多个Config Server。Config Server用于存储集群的元数据,如分片键范围和配置信息。 b. 部署和配置一个或多个mongos路由器。mongos路由器是客户端与分片集群交互的入口点。 c. 部署和配置一个或多个shard服务器。每个shard服务器都是一个独立的MongoDB实例,可以存储一部分数据。 d. 启动mongos路由器,并将其连接到Config Server和shard服务器。 e. 创建分片集合,并根据需要启用分片。 3. 分片键是什么?如何选择分片键? 分片键是用来决定将数据分配到哪个片段的字段。选择合适的分片键非常重要,以确保数据在分片集群中均匀分布。通常,一个好的分片键应该满足以下条件: a. 数据均匀分布:分片键的值应该能够在不同的分片之间平均分配。 b. 查询性能:选择经常被查询的字段作为分片键,以便查询可以在单个片段上执行而不需要扫描整个集群。 c. 数据增长:选择一个能够支持数据增长的分片键,以避免在未来需要重新分片。 4. 如何监控和管理MongoDB分片集群? MongoDB提供了一些工具和功能来监控和管理分片集群。一些常见的方法包括: a. 使用mongos路由器的命令行工具或管理界面来管理集群配置、添加/删除shard以及监控性能指标。 b. 使用MongoDB的内置监控工具,如mongostat和mongotop,来监视集群的吞吐量、延迟和负载情况。 c. 使用第三方监控工具,如Prometheus、Grafana等,来获取更详细的指标和可视化。 这些是关于MongoDB分片集群的一些常见问题和答案。希望能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值