Usando replicação para migração no MongoDB

Usando replicação para migração no MongoDB

Estou interessado em usar o recurso de conjunto de réplicas no Mongo como um método para migrar suavemente entre máquinas. Meu banco de dados Mongo é atualmente uma instância autônoma. Sei que a prática recomendada é ter três instâncias independentes em execução como um conjunto de réplicas. Mas os nossos requisitos de disponibilidade não são atualmente suficientemente elevados para justificar o custo de execução de três instâncias independentes. Dito isto, quero evitar o tempo de inatividade tanto quanto possível.

Ao fazer uma grande mudança em um servidor, o ideal é inicializar um novo servidor com as alterações necessárias (talvez clonado do original ou talvez construído do zero com as alterações desejadas). Este servidor está hospedando o banco de dados mongo.

Ao testar este novo servidor, quero que seja um secundário oculto. Dessa forma, ele possui os dados, mas na verdade não responde às solicitações dos clientes. Quando me sentir confortável com o novo servidor, quero mudar as coisas para que o novo servidor seja o primário e o servidor antigo seja um secundário oculto. Dessa forma, o servidor antigo continua recebendo dados, mas não atende às solicitações dos clientes. Se um problema for detectado, posso inverter o primário e o secundário novamente para enviar os clientes de volta ao servidor antigo. Supondo que não haja problemas depois de vários dias, posso desligar o servidor antigo.

Minhas perguntas são:

  • Que problemas posso encontrar com este método?
  • Ele alcançará meu objetivo de mover os dados de um servidor para outro (e os clientes de um servidor para outro) com tempo de inatividade zero?
  • Como posso querer fazer isso para alterações futuras, provavelmente deixaria o novo servidor como um conjunto de réplicas com 0 membros. Sei que isso não oferece a alta disponibilidade que pelo menos três membros oferecem. Mas vai doer alguma coisa deixar assim? Ou seria melhor voltar para uma instância autônoma?

Responder1

Você precisará de pelo menos três servidores em um conjunto de réplicas para que um Primário seja eleito. Você pode usar seu servidor existente, o novo servidor e um árbitro rodando em um deles para ser o terceiro. Você não pode executar um único conjunto de réplicas de servidor. Sem um primário, você não conseguirá fazer nenhuma gravação.

Você não pode mudar de autônomo para replicaset sem parar/iniciar o serviço mongod. Você precisa reiniciar o mongo --replSet replica_set_nameou adicionar a replSet=replica_set_nameopção ao seu mongod.conf.

Depois de sincronizar, seria um processo semelhante converter novamente para autônomo (pare o mongo, remova a configuração do replSet, inicie o mongo).

Se o seu cliente estiver configurado para "primário" como preferência de leitura, nenhuma de suas leituras irá para os secundários (esse geralmente é o padrão, já que os secundários são usados ​​​​principalmente para durabilidade, não para escala horizontal).

http://docs.mongodb.org/manual/tutorial/convert-standalone-to-replica-set/

informação relacionada