Menu Docs
Página inicial do Docs
/
Sincronização de Cluster-to-Cluster do MongoDB

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

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.

1

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.

2

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.

O usuário de origem deve ter os seguintes roles:

Além disso, o usuário de origem deve ser capaz de:

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.

Se o cluster de destino estiver hospedado no Atlas, o usuário deverá ter a função de administrador do Atlas.

3

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:

  1. Localize um servidor host para o executável mongosync que tenha conectividade de rede com seus clusters de origem e destino.

  2. Acesse o Centro de downloads do MongoDB.

  3. Baixe o pacote mongosync para seu sistema host.

  4. Descompacte o pacote mongosync . O executável mongosync está no diretório bin .

Para obter instruções de instalação específicas do sistema operacional, consulte Instalação.

1

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.

2

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"
  • 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 ou cluster1.

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.

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.

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 de 0 (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.

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.

  • A porta padrão para a API HTTP é 27182. Utilize a opção --port com mongosync 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á executando mongosync. 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.

Voltar

Cluster-to-Cluster Sync