什么是最安全的方式来改变MongoDB服务器结构?

我目前有一个MongoDB副本集configuration如下:

{ "_id" : "ahspy_mongo_set", "version" : 13, "members" : [ { "_id" : 0, "host" : "remotedatacenter.in.montreal.dns.com", "priority" : 0 }, { "_id" : 1, "host" : "t1.micro.at.ec2.dns.com", "arbiterOnly" : true }, { "_id" : 2, "host" : "m1.xlarge.at.ec2.dns.com" } ] } 

所以基本上,EC2上的一台服务器备份到了蒙特利尔的另一台服务器,由于多种原因,它们不能成为主服务器。

我想改变我的结构,我不知道从哪里开始,而不会造成很大的麻烦。 事实上,我甚至不知道我想做什么是可能的。

我想要做的是拿EC2(m1.xlarge)的主DB服务器,把它变成3 m1.large shards。 所以基本上,从:

  • EC2副本(m1.xlarge)
  • 在蒙特利尔备份副本
  • 仲裁者

  • 在EC2的副本
    • 碎片1(m1.large)
    • 碎片2(m1.large)
    • 碎片3(m1.large)
  • 在蒙特利尔备份副本
  • 仲裁者

这可能吗? 我可以在EC2中分割副本集,同时只保留蒙特利尔副本中的一台服务器吗? 如果是这样,那么做到这一点的正确方法是什么? 我在Mongo中有一个真正的“Chicken and Egg”问题与复制/分片,所以任何帮助将不胜感激。

非常感谢你 :)。

以下是基本步骤:

  1. 启动mongos和configuration服务器
  2. 让这个副本设置你的第一个碎片。
  3. 添加碎片2
  4. 添加碎片3

您不能使用备份副本作为所有分片的备份:它只是备份一个副本集。

您应该为每个分片设置一个单独的副本集。 如果在Montreal服务器上有容量的话,你可以在该服务器上放置一个分片2和分片3的备份成员,但是他们必须是独立于分片1成员的mongod进程。