MongoDB - qual é a maneira mais segura e eficiente de mudar de Master-Slave para ReplicaSet?

3

Agora tenho dois servidores mongo com uma configuração Mestre-Escravo (todas as leituras escritas são feitas com o mestre, o escravo é apenas um backup frio) e atende a um aplicativo da Web bastante exigente. Eu quero mudar para ReplicaSet de 3 servidores - eu tenho esses 3 já configurado e funcionando (ainda não conectado ao aplicativo da web). Basta saber qual é a maneira mais eficiente (menor tempo de inatividade necessário e transferência sem perdas de todos os dados) para transferir todos os dados do mestre / escravo para o RS.

    
por SecondThought 07.06.2012 / 11:13

1 resposta

3

A maneira mais simples de fazer isso é seguir as instruções aqui:

link

O único tempo de inatividade seria reiniciar o mongod com a nova opção e depois executar o comando initte. Uma vez que você estava em cima, você adicionaria outros secundários, sincronizaria e seria bom ir. Você poderia descer e promover uma das novas máquinas, se assim o desejasse, uma vez que elas fossem sincronizadas para completar a transição.

A outra opção seria criar um novo mestre e usá-lo para ser o principal do seu conjunto de réplicas. Para fazer isso fsync e bloquear o mestre como se estivesse realizando um backup (isso desativa as gravações, então tenha cuidado!):

link

Em seguida, copie os arquivos de dados do mestre atual para o db primário do conjunto de réplicas (desligue-o primeiro) e, em seguida, inicie-o normalmente. Os secundários devem então ser limpos e ressincronizados do zero a partir desse novo primário.

Você tem que usar o mestre, porque os escravos não têm oplog em uma configuração mestre / escravo e você deseja que um para o conjunto primário de réplica assuma o mais facilmente possível.

O teste que você precisa fazer para verificar se o conjunto de réplicas está funcionando é sua responsabilidade, assim como você gerencia a substituição de gravações do seu aplicativo. Para o tempo de inatividade zero (além do fsync e do bloqueio, onde nenhuma gravação seria possível), você poderia gravar temporariamente em ambos, talvez, e depois, quando estivesse feliz. Isso dependeria do fato do seu servidor de aplicativos lidar com o dobro do volume de gravação, é claro.

O bom disso é que você pode testá-lo antes de fazer qualquer transferência real e ver como você se sai.

    
por 07.06.2012 / 12:28