Qual é a maneira mais segura de mudar a estrutura do servidor do MongoDB?

3

Atualmente, tenho um conjunto de réplicas do MongoDB configurado como tal:

{
    "_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"
            }
    ]
}

Então, basicamente, um servidor no EC2 faz o backup para outro servidor em Montreal que, por várias razões, não pode se tornar mestre.

Eu quero mudar minha estrutura e não sei por onde começar sem causar muitos problemas. Na verdade, nem sei o que quero fazer é possível.

O que eu quero fazer é pegar o servidor de banco de dados principal que tenho no EC2 (m1.xlarge) e transformá-lo em 3 m1.large shards. Então, basicamente, vá de:

  • Réplica no EC2 (m1.xlarge)
  • Backup de réplica em Montreal
  • Árbitro

para

  • Replica na EC2
    • Fragmento 1 (m1.large)
    • Shard 2 (m1.large)
    • Shard 3 (m1.large)
  • Backup de réplica em Montreal
  • Árbitro

Isso é possível? Posso fragmentar a réplica definida no EC2 mantendo apenas um servidor na réplica em Montreal? Se sim, qual é a maneira correta de fazer isso? Estou tendo um problema real de "Chicken and Egg" com Replication / Sharding no Mongo, então qualquer ajuda seria apreciada.

Muito obrigado:).

    
por Pierre 15.07.2011 / 17:55

1 resposta

3

Aqui estão os passos básicos:

  1. Iniciar mongos e servidores de configuração
  2. Faça essa réplica definir seu primeiro fragmento.
  3. Adicionar fragmento 2
  4. Adicionar fragmento 3

Você não pode usar sua réplica de backup como backup para todos os seus shards: é apenas um backup para esse conjunto de réplicas.

Você deve configurar um conjunto de réplicas separado para cada fragmento. Se houver capacidade para isso no servidor de Montreal, você poderia colocar um membro de backup para os shards 2 e 3 nesse servidor, mas eles teriam que ser processos mongod separados do membro shard 1.

    
por 15.07.2011 / 20:49