Sincronize novamente um membro de um conjunto de réplicas autogerenciadas
Nesta página
Um membro do conjunto de réplicas torna-se "obsoleto" quando seu processo de replicação fica tão atrasado que o primário substitui as entradas de oplog que o membro ainda não replicou. O membro não consegue se atualizar e torna-se "obsoleto". Quando isso ocorre, você deve ressincronizar completamente o membro removendo seus dados e executando uma initial sync.
Este tutorial aborda a ressincronização de um membro obsoleto e a criação de um novo membro usando dados iniciais de outro membro, os quais podem ser usados para restaurar um membro do conjunto de réplicas. Ao sincronizar um membro, escolha um horário em que o sistema tenha a largura de banda para mover uma grande quantidade de dados. Agende a sincronização durante um período de baixo uso ou durante uma janela de manutenção.
O MongoDB oferece duas opções para realizar uma initial sync:
Reinicie o
mongod
com um diretório de dados vazio e permita que o recurso de sincronização inicial normal do MongoDB restaure os dados. Esta é a opção mais simples, mas pode levar mais tempo para substituir os dados.Reinicie a máquina com uma cópia de um diretório de dados recente de outro membro no conjunto de réplicas. Esse procedimento pode substituir os dados mais rapidamente, mas requer mais etapas manuais.
Consulte Sincronizar copiando arquivos de dados de outro membro.
Procedimentos
Observação
Para evitar a alteração do quorum de gravação, nunca gire mais de um nó de conjunto de réplicas por vez.
Sincronizar um membro automaticamente
Esse procedimento se baseia no processo regular do MongoDB para sincronização de conjuntos de réplicas. Isso armazena os dados atuais do membro. Para uma visão geral do processo de sincronização inicial do MongoDB, consulte a seção Sincronização do conjunto de réplicas.
As operações de sincronização iniciais podem impactar os outros membros do conjunto e criar tráfego adicional para o primário. O membro de sincronização requer outro membro do conjunto que esteja acessível e atualizado.
Se a instância não tiver dados, você poderá seguir o procedimento Adicionar membros a um conjunto de réplicas autogerenciado ou Substituir um membro do conjunto de réplicas autogerenciado para adicionar um novo membro a um conjunto de réplicas.
Você também pode forçar um mongod
que já seja membro do conjunto a executar uma sincronização inicial reiniciando a instância sem o conteúdo do diretório dbPath
:
Pare a instância
mongod
do membro. Para garantir um desligamento limpo, use o métododb.shutdownServer()
domongosh
ou em sistemas Linux, a opçãomongod --shutdown
.(Opcional) Fazer uma cópia de segurança de todos os dados e subdiretórios do diretório
dbPath
do membro. Se uma cópia de segurança completa não for exigida, considere fazer backup somente do diretóriodiagnostic.data
para preservar dados de solução de problemas potencialmente úteis em caso de problema. Consulte Captura de dados de diagnóstico em tempo integral para obter mais informações.Exclua todos os dados e subdiretórios do diretório
dbPath
do membro.
Neste ponto, o mongod
executa uma sincronização inicial. O comprimento do processo de sincronização inicial depende do tamanho do banco de dados e da latência de rede entre os membros do conjunto de réplica.
Sincronize copiando arquivos de dados de outro membro
Essa abordagem "seeds" um membro novo ou obsoleto usando os arquivos de dados de um membro existente do conjunto de réplicas. Os arquivos de dados devem ser suficientemente recentes para permitir que o novo membro acompanhe o registro. Caso contrário, o membro precisaria realizar uma sincronização inicial.
Copiar os Arquivos de dados
Você pode capturar os arquivos de dados como uma captura instantânea ou uma cópia direta. No entanto, na maioria dos casos, você não pode copiar arquivos de dados de uma instância do mongod
em execução para outra, pois os arquivos de dados serão alterados durante a operação de cópia do arquivo.
Importante
Se copiar arquivos de dados, é importante que sua cópia tenha o conteúdo do banco de dados do local
.
Você não pode usar um backup mongodump
para os arquivos de dados: apenas um backup de snapshot. Para abordagens para capturar um snapshot consistente de uma instância mongod
em execução, consulte a documentação Métodos de backup para uma implantação autogerenciada.
Sincronizar o nó
Depois de copiar os arquivos de dados da fonte "seed", inicie a instância mongod
com um novo members[n]._id
e permita que ela aplique todas as operações do registro até que ele reflita o estado atual do conjunto de réplicas. Para ver o status atual do conjunto de réplicas, utilize rs.printSecondaryReplicationInfo()
ou rs.status()
.