Início rápido do Cluster-to-Cluster Sync
Nesta página
- Visão geral
- Configurar
- Definir um cluster de origem e um cluster de destino
- Definir usuários administrativos
- Baixar e instalar
mongosync
- Conectar os clusters
- Formatar suas string de conexão
- Inicializar o mongosync
- Notas de inicialização
- Sincronizar dados entre clusters
- Finalize o processo de transição
- Sincronização única
- Verificação de dados
- Notas de sincronização
Visão geral
A Cluster-to-Cluster Sync do MongoDB conecta clusters do MongoDB e fornece uma maneira de sincronizar dados entre eles. A ferramenta que faz a conexão é mongosync. Para obter mais detalhes, consulte o restante da documentação do Cluster-to-Cluster Sync .
mongosync
sincroniza dados entre dois clusters.
Cada cluster pode ser um conjunto de réplicas ou um cluster fragmentado. Se qualquer um for um cluster fragmentado, consulte as limitações do cluster fragmentado para
mongosync
.Não é necessário que os clusters fragmentados tenham o mesmo número de shards.
O cluster de destino deve ser da mesma versão ou até duas versões à frente do cluster de origem. A versão de patch não é importante, desde que atenda aos requisitos mínimos de versão de patch.
O cluster de origem pode permanecer ativo até a confirmação porque
mongosync
sincroniza as gravações no cluster de origem durante a migração até que a confirmação seja chamada.
Siga as instruções abaixo para configurar o Cluster-to-Cluster Sync, conectar seus clusters e sincronizar seus dados.
Configurar
Definir um cluster de origem e um cluster de destino
Se você já tiver um MongoDB cluster, autogerenciado ou hospedado no MongoDB Atlas, utilize este cluster como o cluster de origem. Se você não tiver um cluster para trabalhar, precisará criar um.
Este início rápido funciona quando o cluster de destino e o cluster de origem são conjuntos de réplicas.
Para sincronizar a partir de um conjunto de réplicas para um cluster fragmentado, consulte Sincronizar um conjunto de réplicas para um cluster fragmentado. Para sincronizar entre clusters fragmentados, consulte Sincronizar clusters fragmentados.
Dica
Veja também:
Você pode migrar entre clusters na mesma versão ou em versões diferentes do MongoDB . Para obter mais informações sobre compatibilidade de versão do servidor MongoDB ou migrações entre versões, consulte Compatibilidade de versão do MongoDB Server .
O número de nós no conjunto de réplicas de destino não precisa ser igual ao número de nós no conjunto de réplicas de origem.
Importante
O cluster de destino deve ter armazenamento em disco suficiente para acomodar o tamanho lógico dos dados que estão sendo migrados e as entradas de oplog de destino da sincronização inicial. Por exemplo, para migrar 10 GB de dados, o cluster de destino deve ter pelo menos 10 GB disponíveis para os dados e outro 10 GB para as entradas de oplog de inserção da sincronização inicial.
Para reduzir a sobrecarga das entradas de oplog de destino, você pode:
Use a configuração para reduzir o tamanho do oplog do cluster de
oplogSizeMB
destino.Use a configuração para reduzir ou remover o período mínimo de retenção de oplog do cluster de
oplogMinRetentionHours
destino.
Se seus clusters forem managed, eles deverão ser clusters MongoDB Enterprise. A Cluster-to-Cluster Sync só é suportada no MongoDB Community Edition em um número limitado de casos. Para obter mais informações sobre o uso do Cluster-to-Cluster Sync com o MongoDB Community Edition, entre em contato com um representante de vendas do MongoDB.
A criação de clusters está fora do escopo deste guia. Se precisar de ajuda, consulte a documentação para criar um cluster do Atlas ou para criar um cluster autogerenciado.
Definir usuários administrativos
Se um dos clusters estiver hospedado no Atlas ou se qualquer um deles exigir autenticação, você deverá criar um trigger de reconhecimento de data center que tenha permissões em ambos os clusters.
Requisitos de autenticação do cluster de origem
O usuário de origem deve ter os seguintes roles:
readAnyDatabase
papelclusterMonitor
papelbackup
papel
Além disso, o usuário de origem deve ser capaz de:
Execute o comando
getParameter
Se o cluster de origem estiver hospedado no Atlas, o usuário deverá ter a função de administrador do Atlas. O usuário também deve poder ler o fluxo de alterações do cluster.
Requisitos de autenticação do cluster de destino
Se o cluster de destino estiver hospedado no Atlas, o usuário deverá ter a função de administrador do Atlas.
Notas de autenticação de cluster
Para adicionar um usuário do Atlas, consulte: Configurar usuários do banco de dados.
Para adicionar um usuário a um cluster autogerenciado, consulte: Criar um usuário em sistemas autogerenciados.
Para verificar as permissões do usuário, execute
db.getUser()
.
Baixar e instalar mongosync
mongosync
é a ferramenta que conecta os clusters de origem e destino. Você pode hospedar o mongosync
em seu próprio hardware, o mongosync
não precisa ser executado no hardware que hospeda seus clusters MongodDB.
Para instalar o mongosync
:
Localize um servidor host para o executável
mongosync
que tenha conectividade de rede com seus clusters de origem e destino.Acesse o Centro de downloads do MongoDB.
Baixe o pacote
mongosync
para seu sistema host.Descompacte o pacote
mongosync
. O executávelmongosync
está no diretóriobin
.
Para obter instruções de instalação específicas do sistema operacional, consulte Instalação.
Conectar os clusters
Formatar suas string de conexão
Uma string de conexão contém os detalhes de rede e autenticação que o mongosync
precisa para se conectar aos clusters de origem e destino.
Determine o nome do host ou o endereço IP e a porta para os clusters de origem e destino. Você usará essas informações e os detalhes de autenticação do usuário para construir as string de conexão.
O esquema de conexão URI padrão tem o formulário:
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
Sua string de conexão será semelhante a:
cluster0: mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020 cluster1: mongodb://clusterAdmin:superSecret@clusterTwo01.fancyCorp.com:20020,clusterTwo02.fancyCorp.com:20020,clusterTwo03.fancyCorp.com:20020
Para obter mais detalhes, consulte Conectando mongosync
.
Inicializar o mongosync
mongosync
deve criar uma conexão inicial com os clusters de origem e destino antes de começar a sincronizar dados. Para criar a conexão inicial, emita o seguinte comando com suas string de conexão em uma única linha (o comando é reformatado aqui para maior clareza):
./bin/mongosync \ --logPath /var/log/mongosync \ --cluster0 "mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020" \ --cluster1 "mongodb://clusterAdmin:superSecret@clusterTwo01.fancyCorp.com:20020,clusterTwo02.fancyCorp.com:20020,clusterTwo03.fancyCorp.com:20020"
Notas de inicialização
Quando
mongosync
se conecta pela primeira vez aos clusters de origem e destino, ele está no estado IDLE .mongosync
não sincroniza os dados até que receba o comando de inicialização .Designe os clusters de origem e destino com o comando start . "cluster0" e "cluster1" são apenas rótulos, qualquer cluster pode ser
cluster0
oucluster1
.
Sincronizar dados entre clusters
O endpoint inicial inicia a sincronização de dados. Para iniciar a sincronização, use curl
ou um programa semelhante para emitir a solicitação de início :
curl localhost:27182/api/v1/start -XPOST \ --data ' { "source": "cluster0", "destination": "cluster1" } '
Se a solicitação de início for bem-sucedida, mongosync
retornará { "success": true }
e iniciará a sincronização dos dados existentes no cluster de origem com o cluster de destino. Nesse ponto, mongosync
entra no estado RUNNING
e aplica gravações do cluster de origem subsequentes no cluster de destino.
Para verificar o status da sincronização, ligue para o endpoint de progresso :
curl localhost:27182/api/v1/progress -XGET
Se a resposta progress
incluir o campo canCommit: true
, os clusters estarão sincronizados e o cluster de destino replicará continuamente os dados do cluster de origem.
A interface de comando para mongosync
é um servidor HTTP que publica uma API HTTP. Para controlar o mongosync
, use os pontos de conexão da API. A documentação da API fornece detalhes sobre como usar os seguintes endpoints:
Endpoint | Descrição |
---|---|
Inicia a sincronização entre um cluster de origem e destino. | |
Retorna o status do processo de sincronização. | |
Pausa a operação de sincronização atual. | |
Retoma uma sessão de sincronização pausada com base nos dados armazenados no cluster de destino. | |
Confirma a operação de sincronização no cluster de destino. | |
Inverte a direção de uma operação de sincronização confirmada. |
Finalize o processo de transição
Você pode finalizar uma migração e transferir o volume de trabalho do seu aplicação do cluster de origem para o de destino usando o processo de cutover do mongosync
.
Para obter mais informações, consulte Finalizar processo de transferência.
Sincronização única
Após inicializar a sincronização de dados, chame o endpoint de progresso para ver o status do processo de sincronização:
curl localhost:27182/api/v1/progress -XGET
Para uma sincronização única, verifique se a resposta progress
inclui os seguintes valores de campo:
state: "RUNNING"
canCommit: true
lagTimeSeconds
está próximo de0
(Recomendado, mas não obrigatório)
Em seguida, chame o endpoint de confirmação para confirmar a operação de sincronização no cluster de destino e interromper a replicação contínua:
curl localhost:27182/api/v1/commit -XPOST --data '{ }'
Se a solicitação commit
for bem-sucedida, mongosync
retornará { "success": true }
e entrará no estado COMMITTING
. Após a sincronização ser concluída, mongosync
entra no estado COMMITTED
e os clusters não estão mais em sincronização contínua.
Verificação de dados
Antes de transferir a carga do seu aplicativo do cluster de origem para o destino, verifique seus dados para garantir que a sincronização foi bem-sucedida.
Para obter mais informações, consulte Verificar a fonte de dados.
Notas de sincronização
A porta padrão para a API HTTP é
27182
. Utilize a opção--port
commongosync
para configurar outra porta.mongosync
pode trocar os clusters de origem e destino para habilitar a sincronização reversa.Para obter mais informações, consulte o ponto de extremidade
reverse
.O usuário especificado na string de conexão
mongosync
deve ter as permissões necessárias nos clusters de origem e destino. As permissões variam dependendo do seu ambiente e se você deseja executar um bloqueio de gravação ou sincronização reversa.Para determinar as permissões de usuário corretas para seu caso de uso, consulte Permissões de Usuário.
Talvez seja necessário aumentar o descritor de arquivo
ulimits
no host que está executandomongosync
. Isso se aplica a qualquer sistema do tipo UNIX, mas o macOS em particular tem padrões baixos. Consulte Configurações de ulimit do UNIX.Para estimar o tamanho do
oplog
necessário para a sincronização inicial, consulte Dimensionamento do oplog.