Adicionar membros a um conjunto de réplicas autogerenciado
Nesta página
Visão geral
Este tutorial explica como adicionar um membro adicional a um conjunto de réplicas existente. Para obter informações básicas sobre padrões de implantação de replicação, consulte o documento Arquiteturas de implantação de conjuntos de réplicas.
Máximo de membros com direito ao voto
Um conjunto de réplicas pode ter um máximo de sete membros votantes. Para adicionar um member a um conjunto de réplicas que já tenha sete membros com direitos de voto, você deve adicionar o member como um membro não votante ou remover um voto de um existing member
.
Scripts de inicialização
Em implementações de produção, você pode configurar um script de inicialização para gerenciar os processos dos membros.
Membros existentes
Você pode usar esses procedimentos para adicionar novos membros a um conjunto de réplicas existente.
Aviso
Cada nó do conjunto de réplicas deve pertencer a um (e apenas um) conjunto de réplicas. Os nós do conjunto de réplicas não podem pertencer a mais de um conjunto de réplicas.
Restaurar antigos membros
Você pode usar esses procedimentos para adicionar novamente um nó que foi removido.
Se os dados no nó removido forem relativamente recentes, o nó se recupera e alcança o restante do conjunto de réplicas.
Importante
Evite criar novas coleções replicadas no nó removido enquanto ele estiver em standalone mode. Se o standalone reingressar no conjunto de réplicas, as operações subsequentes na nova coleção causarão um erro
Arquivos de dados
Se você tiver um backup ou snapshot de um membro existente, poderá mover os ficheiros de dados (por exemplo, o diretório dbPath
) para um novo sistema e usá-los para iniciar rapidamente um novo membro. Os arquivos devem ser:
Uma cópia válida dos arquivos de dados de um membro do mesmo conjunto de réplicas. Consulte o documento Fazer backup e restaurar uma implantação autogerenciada com instantâneos do sistema de arquivos para obter mais informações.
Importante
Sempre use snapshots do sistema de arquivos para criar uma cópia de um membro do conjunto de réplicas existente. Não use
mongodump
emongorestore
para definir um novo membro do conjunto de réplicas.Mais recente do que a operação mais antiga no oplog do primário. O novo membro deve ser capaz de se tornar atual aplicando operações do oplog do primário.
Vinculação IP
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.
Os binários do MongoDB, mongod
e mongos
, são vinculados ao host local por padrão. Se a configuração do arquivo de configuração net.ipv6
ou a opção de linha de comando --ipv6
estiver definida para o binário, o binário também será vinculado ao endereço IPv6 do host local.
Por padrão, mongod
e mongos
que estão vinculados a localhost só aceitam conexões de clientes executados no mesmo computador. Este comportamento vinculativo inclui mongosh
e outros membros do seu conjunto de réplica ou cluster fragmentado. Clientes remotos não podem se conectar a binários vinculados apenas ao localhost.
Para substituir a associação padrão e vincular a outros endereços IP, use a net.bindIp
configuração do arquivo de configuração ou a --bind_ip
opção de linha de comando para especificar uma lista de nomes de host ou endereços IP.
Aviso
A partir do MongDB 5.0, DNS de horizonte dividido nós que são configurados apenas com um endereço IP falham na validação de inicialização e relatam um erro. Consulte disableSplitHorizonIPCheck
.
Por exemplo, a instância mongod
a seguir é vinculada ao host local e ao nome de host My-Example-Associated-Hostname
, que está associado ao endereço IP 198.51.100.1
:
mongod --bind_ip localhost,My-Example-Associated-Hostname
Para se conectar a esta instância, os clientes remotos devem especificar o nome do host ou seu endereço IP associado 198.51.100.1
:
mongosh --host My-Example-Associated-Hostname mongosh --host 198.51.100.1
Importante
Para evitar atualizações de configuração devido a alterações de endereço IP, use nomes de host DNS em vez de endereços IP. É particularmente importante usar um nome de host DNS em vez de um endereço IP ao configurar membros de conjunto de réplicas ou membros de cluster fragmentado.
Use nomes de host em vez de endereços IP para configurar cluster em um horizonte de rede dividido. Começando no MongoDB 5.0, nós configurados apenas com um endereço IP falham na validação de inicialização e não são iniciados.
Requisitos
Um conjunto de réplicas ativas.
Um novo sistema MongoDB capaz de suportar seu conjunto de dados, acessível pelo conjunto de réplicas ativas através da rede.
Caso contrário, use o tutorial de instalação do MongoDB e os tutoriais Implantar um conjunto de réplicas autogerenciado.
Procedimentos
Preparar o Diretório de dados
Antes de adicionar um novo membro a um conjunto de réplica existente, prepare o diretório de dados do novo membro utilizando uma das seguintes estratégias:
Certifique-se que o diretório de dados do novo membro não contém dados. O novo membro copiará os dados de um membro existente.
Se o novo membro estiver em um estado de recuperação , ele deverá sair e se tornar secundário antes que o MongoDB possa copiar todos os dados como parte do processo de replicação. Este processo leva tempo, mas não requer intervenção do administrador.
Copie manualmente o diretório de dados de um membro existente. O novo membro se torna um membro secundário e chegará ao estado atual do conjunto de réplicas. Copiar os dados pode reduzir o tempo para o novo membro se tornar atual.
Certifique-se de que você pode copiar o diretório de dados para o novo membro e iniciar a replicação dentro da janela permitida pelo oplog. Caso contrário, a nova instância terá que executar uma sincronização inicial, que ressincroniza completamente os dados, conforme descrito em Ressincronizar um membro de um conjunto de réplicas autogerenciado.
Utilize o
rs.printReplicationInfo()
para verificar o estado atual de membros do conjunto de réplica em relação ao oplog.
Para obter informações sobre os padrões de implementação de replicação, consulte o documento Replica Set Deployment Architectures (Arquiteturas de implementação de conjuntos de réplicas).
Adicionar um membro a um conjunto de réplicas existente
Importante
Para evitar atualizações de configuração devido a alterações de endereço IP, use nomes de host DNS em vez de endereços IP. É particularmente importante usar um nome de host DNS em vez de um endereço IP ao configurar membros de conjunto de réplicas ou membros de cluster fragmentado.
Use nomes de host em vez de endereços IP para configurar cluster em um horizonte de rede dividido. Começando no MongoDB 5.0, nós configurados apenas com um endereço IP falham na validação de inicialização e não são iniciados.
Inicie a nova instância
mongod
. Especifique o diretório de dados e o nome do conjunto de réplica. O exemplo a seguir especifica o directoria de dados/srv/mongodb/db0
e o conjunto de réplicasrs0
:mongod --dbpath /srv/mongodb/db0 --replSet rs0 --bind_ip localhost,<hostname(s)|ip address(es)> 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.
Para obter mais informações sobre opções de configuração, consulte a página de manual
mongod
.Observação
Opcional
Você pode especificar o diretório de dados, nome do conjunto de réplica e a ligação de IP no
mongod.conf
arquivo de configuração, e iniciar omongod
com o seguinte comando:mongod --config /etc/mongod.conf Conecte-se ao primário do conjunto de réplicas.
Você só pode adicionar membros enquanto estiver conectado ao principal. Se você não souber qual membro é o principal, faça login em qualquer membro do conjunto de réplica e emita o comando
db.hello()
.Use
rs.add()
para adicionar o novo membro ao conjunto de réplicas. Passe omember configuration document
para o método. Por exemplo, para adicionar um membro no hostmongodb3.example.net
, emita o seguinte comando:rs.add( { host: "mongodb3.example.net:27017" } ) Aviso
Antes do MongoDB 5.0, um secundário recém-adicionado ainda conta como membro votante, embora não possa servir leituras nem se tornar primário até que seus dados sejam consistentes. Se você estiver executando uma versão do MongoDB anterior à 5.0 e adicionar um secundário com suas configurações
votes
epriority
maiores que zero, isso pode levar a um caso em que a maioria dos membros votantes está online, mas nenhum primário pode ser eleito. Para evitar tais situações, considere adicionar o novo secundário inicialmente compriority :0
evotes :0
. Em seguida, executers.status()
para garantir que o membro tenha feito a transição para o estadoSECONDARY
. Por fim, users.reconfig()
para atualizar sua prioridade e votos.