MongoDB添加分片失败:无法添加第二个分片。

3

现在有6个目录,每个目录都包含大约1TB的数据,它们都属于一个名为“test”的数据库。我想把它们分组成一个集群。我已经构建了Shardserver和Configserver,但是在将第二个shard添加到集群时遇到了问题:

db.runCommand({addshard:localhost:27017});
db.runCommand({addshard:localhost:27027});

"errmsg" : "无法添加分片 localhost:27027,因为在另一个分片0000:localhost:27017中存在本地数据库'test'"

删除'test'数据库可以解决此问题,但这不是我想要的。

如何将6个分片(它们都有'test'数据库,属于单个逻辑数据库)合并在一起?


你不能通过添加现有的“部分”数据库来完成它。最好的方法是使用mongodump命令将第二个和第三个数据库的内容导出,然后通过mongos将它们恢复到你的分片数据库中。 - Asya Kamsky
由于数据量大约为6 TB,这种方法可能会太慢。还有其他解决方案吗?实际上,我只想在一个查询语句中搜索整个数据库。谢谢。 - marblu
现在没有其他的办法 - 基本上你现在有分开的数据库 - 合并它们的唯一方法是通过数据复制进行合并。 - Asya Kamsky
2个回答

1
使用mongodump备份第二个分片的数据,然后删除该数据库并添加分片。之后,您可以使用mongorestore导入备份数据。

0
尽管错误报告涉及另一个分片,但根据我的经验,问题实际上出现在我正在添加的分片上。如果您使用db.adminCommand({ removeShard: "shard0000" })优雅地移除了该分片,那么您正在添加的分片上可能存在一个空数据库。删除该分片上的数据库可以解决问题,并让我再次添加该分片。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接