Adicionar membros a um conjunto de réplicas autogerenciado
Nesta página
Visão geral
This tutorial explains how to add an additional member to an existing Conjunto de réplicas. For background on replication deployment patterns, see the Arquiteturas de implementação do conjunto de réplicas document.
Maximum Voting Members
A replica set can have a maximum of seven voting members. To add a member to a replica set
that already has seven voting members, you must either add the member as a
non-voting member or remove a
vote from an existing member
.
Init Scripts
In production deployments you can configure a roteiro de inicialização to manage member processes.
Existing Members
You can use these procedures to add new members to an existing replica set.
Aviso
Each replica set node must belong to one, and only one, replica set. Replica set nodes cannot belong to more than one replica set.
Restore Former Members
You can use these procedures to re-add a node that was removed.
If the data on the removed node is relatively recent, the node recovers and catches up to the rest of the replica set.
Importante
Avoid creating new replicated collections on the removed node while it is in standalone mode. If the standalone node rejoins the replica set, subsequent operations on the new collection produce an error.
Data Files
If you have a backup or snapshot of an existing member, you can move
the data files (for example, the dbPath
directory)
to a new system and use them to quickly initiate a new member. The files
must be:
A valid copy of the data files from a member of the same replica set. See Faça backup e restaure um sistema autogerenciado com snapshots do sistema de arquivos document for more information.
Importante
Always use filesystem snapshots to create a copy of a member of the existing replica set. Do not use
mongodump
andmongorestore
to seed a new replica set member.More recent than the oldest operation in the primary's oplog. The new member must be able to become current by applying operations from the primary's oplog.
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, os nós DNS de horizonte dividido 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
An active replica set.
A new MongoDB system capable of supporting your data set, accessible by the active replica set through the network.
Otherwise, use the MongoDB installation tutorial and the Distribuir um conjunto de réplicas autogerenciado tutorials.
Procedimentos
Preparar o Diretório de dados
Before adding a new member to an existing Conjunto de réplicas, prepare the new member's directoria de dados using one of the following strategies:
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.
If the new member is in a recuperando state, it must exit and become a secundário before MongoDB can copy all data as part of the replication process. This process takes time but does not require administrator intervention.
Manually copy the data directory from an existing member. The new member becomes a secondary member and will catch up to the current state of the replica set. Copying the data over may shorten the amount of time for the new member to become current.
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.
Usar
rs.printReplicationInfo()
to check the current state of replica set members with regards to the 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).
Add a Member to an Existing Replica Set
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.
Start the new
mongod
instance. Specify the data directory and the replica set name. The following example specifies the/srv/mongodb/db0
data directory and thers0
replica set: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
You can specify the data directory, replica set name, and the IP binding in the
mongod.conf
arquivo de configuração, and start themongod
with the following command:mongod --config /etc/mongod.conf Connect to the replica set's primary.
You can only add members while connected to the primary. If you do not know which member is the primary, log into any member of the replica set and issue the
db.hello()
command.Usar
rs.add()
to add the new member to the replica set. Pass themember configuration document
to the method. For example, to add a member at hostmongodb3.example.net
, issue the following command: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.