Perguntas frequentes
Nesta página
- Posso alterar o nível de carga enquanto
mongosync
está sincronizando? - Posso realizar leituras ou gravações no meu cluster de destino enquanto
mongosync
está sincronizando? - Por que os índices do cluster de destino são maiores que os índices do cluster de origem ?
- O
mongosync
pode ser executado em seu próprio hardware? - Quais especificações de hardware o cluster de destino deve ter?
- Devo aumentar o tamanho do
oplog
no cluster de origem? - Quais opções de string de conexão o
mongosync
permite? - Quais opções de segurança e autenticação são aceitas?
- O
mongosync
reinicia automaticamente em caso de erro? - A origem ou o destino pode ser um conjunto de réplicas com árbitros?
- E se eu ver um Aviso de Operação Lenta?
- Devo interromper uma migração se os registros contiverem a palavra "erro" ou "falha"?
- E se eu ver muitos erros de chave duplicados nos registros?
- O que devo fazer se o mongosync retornar um erro fatal?
- O
mongosync
suporta índices TTL? - Posso personalizar distribuições de chunks ao sincronizar com um cluster fragmentado?
Esta página fornece respostas para algumas perguntas frequentes que encontramos. Se você tiver outras dúvidas, entre em contato com o Suporte do MongoDB.
Posso alterar o nível de carregamento enquanto mongosync
o está sincronizando?
Sim, você pode ajustar o nível de volume de trabalho do cluster durante uma migração seguindo as etapas em Reconfigurar mongosync
durante a sincronização.
Posso realizar leituras ou gravações no meu cluster de destino enquanto mongosync
o está sincronizando?
mongosync
combina e reordena gravaçõesmongosync
da origem para o destino durante a sincronização e modifica temporariamente as características da coleção. Como resultado, não pode garantir que o destino corresponda à origem, incluindo uma versão obsoleta da origem, a qualquer ponto em que a sincronização estiver em execução, mesmo que a sincronização esteja pausada. Para aceitar o tráfego com segurança para o cluster de destino, aguarde a migração para . Para saber mais,commit
consulte Considerações sobre sincronização contínua.
Executar gravações em seu cluster de destino durante a sincronização resulta em comportamento indefinido. mongosync
bloqueia gravações no cluster de destino por padrão. Para saber mais sobre o bloqueio de gravação, consulte Bloqueio de gravação e.start
Após a confirmação, só é seguro escrever no cluster de destino quando canWrite
estiver true
. Para verificar o valor de,canWrite
execute o endpoint progress
.
Para saber mais sobre leituras e escritas permitidas durante a sincronização, consulte Leituras e escritas.
Observação
As compilações de índice no cluster de destino são tratadas como gravações enquanto mongosync
está sincronizando.
Por que os índices do cluster de destino são maiores que os índices do cluster de origem ?
Os seguintes fatores podem contribuir para um aumento no tamanho do índice nos clusters de destino:
mongosync
insere e remove dados durante uma migração, o que pode fazer com que os dados sejam armazenados de forma ineficiente no disco.Por padrão, o
mongosync
cria índices antes de copiar dados.mongosync
copia dados em_id
ordem. Se um índice não estiver correlacionado com_id
, o tamanho do índice poderá ficar grande. Para obter mais informações, consulte a página Perguntas frequentes: Índice do Manual do MongoDB.
Use os seguintes métodos para mitigar um aumento no tamanho do índice:
Reinicie a migração com o
buildIndexes
parâmetro configuradonever
para. Quando a migração terminar, crie índices manualmente no cluster de destino.Após a migração, execute uma sincronização inicial contínua no cluster de destino.
Após a migração, execute o cluster de destino de forma compacta. Isso reconstrói índices e libera espaço em disco desnecessário para o sistema operacional, mas pode impacto o desempenho do cluster.
O pode mongosync
ser executado em seu próprio hardware?
Sim, o mongosync
pode ser executado em seu próprio hardware. mongosync
não precisa ser executado nos servidores que hospedam suas instâncias do MongoDB. Quando o mongosync
é executado em seu próprio hardware, ele pode usar um sistema operacional (OS) diferente do sistema operacional nos clusters de origem ou destino.
Quais especificações de hardware o cluster de destino deve ter?
Para a maioria das migrações, o cluster de destino deve ter especificações de hardware mais altas do que o cluster de origem, incluindo as seguintes propriedades:
CPU
Memória
Disk I/O
Estas especificações de hardware garantem que o cluster de destino possa lidar com mongosync
gravações e que a sincronização possa acompanhar o volume de trabalho do cluster de origem.
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.
Importante
Para usar a verificação incorporada, você deve ter um oplog maior no destino. Se você habilitar o verificador incorporado e reduzir o tamanho do oplog de destino, o verificador incorporado pode não conseguir acompanhar, causando erro em mongosync
.
Se precisar reduzir a sobrecarga das entradas do oplog de destino e o verificador incorporado estiver desativado, você poderá:
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.
Devo aumentar o tamanho do oplog
no cluster de origem?
mongosync
aplica operações em no oplog
cluster de origem aos dados no cluster de destino após a fase de cópia da coleção. Quando as operações que mongosync
não aplicaram roll off do oplog
no cluster de origem, a sincronização falha e mongosync
sai.
Observação
mongosync
não replica operações applyOps
feitas no cluster de origem durante a sincronização com o cluster de destino.
Se você antecipar a sincronização de um grande conjunto de dados ou se planeja pausar a sincronização por um longo período de tempo, poderá exceder a oplog window. Use a configuração oplogSizeMB
para aumentar o tamanho do oplog
no cluster de origem.
Quais opções de string de conexão o mongosync
permite?
mongosync
requer readConcern: "maioria" e writeConcern: "maioria".
Se o readConcern
não for majority
, mongosync
retorna um erro:
Invalid URI option, read concern must be majority
Se o writeConcern
não for majority
, mongosync
retorna um erro:
Invalid URI option, write concern must be majority
mongosync
aceita todas as outras opções de connection string.
Quais opções de segurança e autenticação são aceitas?
mongosync
usa uma connection string padrão do MongoDB para se conectar aos clusters de origem e destino.
LDAP e X509 são suportados. Para obter as opções de autenticação disponíveis, consulte Autenticação em implementações autogerenciadas.
O mongosync
reinicia automaticamente em caso de erro?
mongosync
não reinicia automaticamente em caso de erro. No entanto, você pode escrever um script ou usar os gerenciadores de processos do seu sistema operacional, systemd
por exemplo, para reiniciar o processo mongosync
.
O binário mongosync
não tem estado. Os metadados para reiniciar são armazenados no cluster de destino.
Uma operação mongosync
pode ser retomada se mongosync
ficar indisponível durante a sincronização. Quando o mongosync
estiver disponível novamente, reinicie o processo do mongosync
com os mesmos parâmetros. mongosync
retoma a operação de onde parou quando mongosync
ficou indisponível.
Observação
A partir de mongosync
1.7.3, mongosync
pode levar pelo menos dois minutos para responder quando você retoma ou reinicia uma operação de sincronização. Durante esse tempo, qualquer chamada para o endpoint progress
pode falhar. Se uma chamada progress
falhar, é seguro tentar novamente.
A origem ou o destino pode ser um conjunto de réplicas com árbitros?
Sim, o conjunto de réplicas pode ter árbitros. O conjunto de réplicas de origem deve ter mais de 2 nós não árbitros e você deve sincronizar a partir de um nó não árbitro. Use a connection string do cluster de origem para especificar uma preferência de leitura para um nó portador de dados não árbitro.
E se eu ver um Aviso de Operação Lenta?
Os avisos de operação lenta podem ocorrer durante a sincronização inicial ou a aplicação de um evento de alteração quando há uma operação de leitura lenta no cluster de origem ou uma operação de gravação lenta no cluster de destino. O aviso pode indicar congestionamento de rede ou sobrecarga de recursos no cluster de origem ou destino.
Embora esses avisos não indiquem falhas em si mesmos, operações lentas podem causar erros de tempo limite de operação em mongosync
e falhas de migração.
Se você ver avisos de operação lenta, verifique o uso da CPU, da memória e da rede nos clusters de origem e destino. Se os clusters estiverem subprovisionados para suas necessidades, considere atualizar o hardware do cluster.
Devo interromper uma migração se os registros contiverem a palavra "erro" ou "falha"?
Não, os logs que contêm a palavra "erro" ou "falha" mostram erros não fatais e não sinalizam que você precisa parar mongosync
mais cedo. Esses logs não indicam que mongosync
esteja falhando ou corrompendo os dados. Se ocorrer um erro fatal, mongosync
interromperá a sincronização e gravará uma entrada de log fatal.
E se eu ver muitos erros de chave duplicados nos registros?
Erros de chave duplicados são uma parte normal do processo de sincronização. Esses erros podem ocorrer se:
Você insere um documento no cluster de origem após o início do
mongosync
.mongosync
pode copiar diretamente o documento e aplicar redundantemente o evento de alteração de inserção para o documento posteriormente.Você para e retoma
mongosync
. Isso pode levar a inserções duplicadas quandomongosync
for reiniciado.mongosync
encontra um erro transitório e tenta novamente uma inserção que já pode ter sido bem-sucedida.
O que devo fazer se o mongosync retornar um erro fatal?
Um erro fatal indica um problema que deve ser corrigido e exige que a migração seja reiniciada. Depois de resolver o erro, exclua todos os dados migrados no cluster de destino, incluindo o banco de banco de dados mongosync_reserved_for_internal_use
. Em seguida, reinicie o mongosync
e inicie uma nova migração.
O mongosync
suporta índices TTL?
Cluster-to-Cluster Sync oferece suporte à sincronização de índices TTL do cluster de origem para o cluster de destino.
Posso personalizar distribuições de chunks ao sincronizar com um cluster fragmentado?
Não, você não pode configurar o mongosync
para personalizar distribuições de chunk em um cluster fragmentado de destino. mongosync
faz uma amostra de cada collection durante a inicialização para determinar como distribuir documentos de forma eficiente entre os shards do cluster de destino após a migração.