我目前有一个 MongoDB 副本集配置如下:
{
"_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) 转换为 3 个 m1.large 分片。因此,基本上,从以下开始:
- EC2 上的副本(m1.xlarge)
- 蒙特利尔的备份副本
- 仲裁者
到
- EC2 上的副本
- 分片 1 (m1.large)
- 分片 2 (m1.large)
- 分片 3 (m1.large)
- 蒙特利尔的备份副本
- 仲裁者
这可能吗?我可以在 EC2 中对副本集进行分片,同时在蒙特利尔的副本中只保留一台服务器吗?如果可以,正确的做法是什么?我在 Mongo 中的复制/分片方面遇到了真正的“先有鸡还是先有蛋”的问题,因此任何帮助都将不胜感激。
非常感谢 :)。
答案1
基本步骤如下:
- 启动 mongos 和配置服务器
- 将此副本集设为您的第一个分片。
- 添加分片 2
- 添加分片 3
您不能将备份副本用作所有分片的备份:它只是该副本集的备份。
您应该为每个分片设置一个单独的副本集。如果蒙特利尔服务器上有足够的容量,您可以在该服务器上为分片 2 和 3 设置一个备份成员,但它们必须是独立的蒙哥来自分片 1 成员的进程。