Realizar Manutenção em Membros do Conjunto de Réplica Autogerenciada
Nesta página
Visão geral
Os conjuntos de réplicas permitem que um sistema do MongoDB permaneça disponível durante a maior parte de uma janela de manutenção.
Este documento descreve o procedimento básico para realizar a manutenção de cada um dos membros de um conjunto de réplicas. Além disso, essa sequência específica se esforça para minimizar o tempo em que o primário fica indisponível e controlar o impacto em todo o sistema.
Use essas etapas como base para operações comuns de conjunto de réplicas, especialmente para procedimentos como a atualização para a versão mais recente do MongoDB.
Procedimento
Para cada membro de um conjunto de réplicas, começando com um membro secundário, execute a seguinte sequência de eventos, terminando com o principal:
Reinicie a instância do
mongod
como uma independente.Execute a tarefa na instância independente.
Reinicie a instância do
mongod
como um membro do conjunto de réplica.
Reinicie o secundário como autônomo em uma porta diferente.
No prompt do shell do sistema operacional, reinicie omongod
como uma instância autônoma.
Se você estiver usando um arquivo de configuração, faça as seguintes atualizações de configuração:
Comente a opção
replication.replSetName
.Mude
net.port
para outra porta. Anote a configuração original da porta como comentário.Defina o parâmetro
disableLogicalSessionCacheRefresh
comotrue
na seçãosetParameter
.Se o
mongod
for um nó do shard ou do servidor de configuração, você também deverá:Comente a opção
sharding.clusterRole
.Defina o parâmetro
skipShardingConfigurationChecks
comotrue
na seçãosetParameter
.
Por exemplo, se estiver realizando manutenção em um nó do conjunto de réplicas do servidor de shard/configuração para manutenção, o arquivo de configuração atualizado incluirá conteúdo como o exemplo a seguir:
net: bindIp: localhost,<hostname(s)|ip address(es)> port: 27218 # port: 27018 #replication: # replSetName: shardA #sharding: # clusterRole: shardsvr setParameter: skipShardingConfigurationChecks: true disableLogicalSessionCacheRefresh: true
Se estiver usando opções de linha de comando, faça as seguintes atualizações de configuração para reiniciar:
Remova
--replSetName
.Modifique o
--port
para uma porta diferente.Configure o parâmetro
disableLogicalSessionCacheRefresh
paratrue
na opção--setParameter
.Se o
mongod
for um nó do shard ou do servidor de configuração, você também deverá:Remova
--shardsvr
se for um membro do shard e--configsvr
se for um membro do servidor de configuração .Defina o parâmetro
skipShardingConfigurationChecks
comotrue
na seçãosetParameter
.
Por exemplo, para reiniciar um membro do conjunto de réplicas que não faz parte de um cluster fragmentado:
mongod --port 27218 --dbpath /srv/mongodb --bind_ip localhost,<hostname(s)|ip address(es)> --setParameter disableLogicalSessionCacheRefresh=true
Por exemplo, para reiniciar um membro do conjunto de réplicas do servidor de shard/config para manutenção:
mongod --port 27218 --dbpath /srv/mongodb --bind_ip localhost,<hostname(s)|ip address(es)> --setParameter skipShardingConfigurationChecks=true --setParameter disableLogicalSessionCacheRefresh=true
Aviso
Antes de vincular sua instância a um endereço IP acessível publicamente, você deve proteger seu cluster contra o acesso não autorizado. Para obter uma lista completa de recomendações de segurança, consulte Lista de verificação de segurança para implantações autogerenciadas. No mínimo, considere habilitar a autenticação e fortalecer a infraestrutura de rede.
Sempre inicie o mongod
com o mesmo usuário, mesmo ao reiniciar um nó do conjunto de réplicas como uma instância standalone.
Realizar operações de manutenção no secundário.
Enquanto o nó for autônomo, utilize o mongosh
para fazer a manutenção:
mongo --port 27218
Importante
Embora o nó seja standalone, nenhuma gravação é replicada para esse nó e as gravações para o nó não são replicadas para os outros nós do conjunto de réplicas.
Certifique-se de que todas as gravações nesse autônomo não entrem em conflito com as gravações de oplog que serão aplicadas ao membro quando ele ingressar novamente no conjunto de réplicas.
Reinicie mongod
como um nó do conjunto de réplicas.
Depois de executar todas as tarefas de manutenção, use o seguinte procedimento para reiniciar o mongod
como um nó do conjunto de réplicas em sua porta existente.
A partir do mongosh
, desligue o servidor autônomo após completar a manutenção:
use admin db.shutdownServer()
Reinicie a instância do mongod
como um membro do conjunto de réplicas com sua configuração original; isto é, desfaça as alterações de configuração feitas ao iniciar como um independente.
Dica
Certifique-se de remover o parâmetro disableLogicalSessionCacheRefresh
.
Para shard ou configurar membros do servidor, certifique-se de remover o parâmetro skipShardingConfigurationChecks
.
Quando tiver iniciado, conecte mongosh
à instância reiniciada.
O secundário leva tempo para alcançar o primário. A partir de mongosh
, use o seguinte comando para verificar se o membro passou do estado RECOVERING
para o estado SECONDARY
.
rs.status()
Execute a manutenção no último primário.
Para realizar a manutenção no primário depois de concluir as tarefas de manutenção em todos os secundários, conecte
mongosh
ao primário e users.stepDown()
para diminuir o primário e permitir que um dos secundários seja eleito o novo primário. Especifique um período de espera de 300 segundos para evitar que o nó seja eleito primário novamente por cinco minutos:rs.stepDown(300) Após as etapas primárias, o conjunto de réplicas selecionará uma nova primária.
Reinicie o
mongod
como uma instância independente, fazendo as seguintes atualizações de configuração.
Se você estiver usando um arquivo de configuração, faça as seguintes atualizações de configuração:
Comente a opção
replication.replSetName
.Mude
net.port
para outra porta. Anote a configuração original da porta como comentário.Configure o parâmetro
disableLogicalSessionCacheRefresh
paratrue
na opção--setParameter
.Se o
mongod
for um nó do shard ou do servidor de configuração, você também deverá:Comente a opção
sharding.clusterRole
.Defina o parâmetro
skipShardingConfigurationChecks
comotrue
na seçãosetParameter
.
Por exemplo, se estiver realizando manutenção em um nó do conjunto de réplicas do servidor de shard/configuração para manutenção, o arquivo de configuração atualizado incluirá conteúdo como o exemplo a seguir:
net: bindIp: localhost,<hostname(s)|ip address(es)> port: 27218 # port: 27018 #replication: # replSetName: shardA #sharding: # clusterRole: shardsvr setParameter: skipShardingConfigurationChecks: true disableLogicalSessionCacheRefresh: true
Aviso
Antes de vincular sua instância a um endereço IP acessível publicamente, você deve proteger seu cluster contra o acesso não autorizado. Para obter uma lista completa de recomendações de segurança, consulte Lista de verificação de segurança para implantações autogerenciadas. No mínimo, considere habilitar a autenticação e fortalecer a infraestrutura de rede.
Se estiver usando opções de linha de comando, faça as seguintes atualizações de configuração:
Remova
--replSetName
.Modifique o
--port
para uma porta diferente.Configure o parâmetro
disableLogicalSessionCacheRefresh
paratrue
na opção--setParameter
.Se o
mongod
for um nó do shard ou do servidor de configuração, você também deverá:Remova
--shardsvr
se for um membro do shard e--configsvr
se for um membro do servidor de configuração .Defina o parâmetro
skipShardingConfigurationChecks
comotrue
na seçãosetParameter
.
Por exemplo, para reiniciar um membro do conjunto de réplicas que não faz parte de um cluster fragmentado:
mongod --port 27218 --dbpath /srv/mongodb --bind_ip localhost,<hostname(s)|ip address(es)> --setParameter disableLogicalSessionCacheRefresh=true
Por exemplo, para reiniciar um membro do conjunto de réplicas do servidor de shard/config para manutenção:
mongod --port 27218 --dbpath /srv/mongodb --bind_ip localhost,<hostname(s)|ip address(es)> --setParameter skipShardingConfigurationChecks=true --setParameter disableLogicalSessionCacheRefresh=true
Aviso
Antes de vincular sua instância a um endereço IP acessível publicamente, você deve proteger seu cluster contra o acesso não autorizado. Para obter uma lista completa de recomendações de segurança, consulte Lista de verificação de segurança para implantações autogerenciadas. No mínimo, considere habilitar a autenticação e fortalecer a infraestrutura de rede.
Execute a tarefa de manutenção no agora autônomo.
Importante
Embora o nó seja standalone, nenhuma gravação é replicada para esse nó e as gravações para o nó não são replicadas para os outros nós do conjunto de réplicas.
Certifique-se de que todas as gravações nesse autônomo não entrem em conflito com as gravações de oplog que serão aplicadas ao membro quando ele ingressar novamente no conjunto de réplicas.
Após executar todas as tarefas de manutenção, reinicie a instância do
mongod
como um membro do conjunto de réplicas com sua configuração original; isto é, desfaça as alterações de configuração feitas ao iniciar como um independente.Dica
Certifique-se de remover o parâmetro
disableLogicalSessionCacheRefresh
.Para shard ou configurar membros do servidor, certifique-se de remover o parâmetro
skipShardingConfigurationChecks
.