Aviso
Quando você usa mongomirror com um filtro de namespace, as transações na origem com namespaces que estão fora do escopo do includeNamespace <database.collection> são consideradas comportamento indefinido e podem resultar em uma perda de dados.
mongomirror é uma ferramenta para migrar manualmente dados de um conjunto de réplicas MongoDB existente para um conjunto de réplicas do MongoDB Atlas. Consulte também Baixar o mongomirror.
Sintaxe
Para executar o mongomirror, você deve especificar:
O conjunto de réplicas de origem e o conjunto de réplicas de destino do Atlas.
Um usuário no Atlas cluster com privilégios apropriados, a senha correspondente e privilégios apropriados, se o conjunto de réplicas de origem exigir autenticação.
mongomirror --host <sourceReplSet> \ --destination <atlasCluster> \ --destinationUsername <atlasAdminUser> \ --destinationPassword <atlasPassword> \ [Additional options]
You can specify some options in the config file instead of including them in the command.
Opções
--host <host>As informações do host do conjunto de réplicas de origem. Especifique o nome do conjunto de réplicas e uma lista de sementes dos membros, como a seguir:
<RSname>/<host1>:<port1>,<host2>:<port2>,<host3>:<port3>
--username <username>If the source replica set requires authentication, the name of a user in the source replica set with privileges to read any database, including the
localdatabase. A user with thebackuprole provides the appropriate privileges. For details on the specific privileges required, see Required Access on Source Replica Set.
--authenticationDatabase <authenticationDatabase>O banco de dados no conjunto de réplica de origem onde o usuário especificado no
--usernamefoi criado. O banco de dados de autenticação para:Os usuários autenticados por SCRAM são o banco de dados
admin.X.509-usuários autenticados são o banco de dados
$external.Os usuários autenticados pelo AWS IAM são o banco de dados do
$external.
Para saber mais, consulte Banco de dados de autenticação.
--authenticationMechanism <authenticationMechanism>O mecanismo de autenticação a ser usado para autenticar o usuário no conjunto de réplicas de origem.
ValorDescriçãoRFC 5802 Mecanismo de Autenticação de Resposta de Desafio Salted padrão usando a1 função de hash SHA-.
RFC 5802 Mecanismo de Autenticação de Resposta de Desafio Salted padrão usando a256 função de hash SHA-.
Autenticação de certificado TLS/SSL do MongoDB.
GSSAPI (Kerberos)
Autenticação externa usando Kerberos. Esse mecanismo está disponível somente no MongoDB Enterprise.
PLAIN (LDAP SASL)
Autenticação externa usando LDAP. Você também pode utilizar o
PLAINpara autenticar usuários do banco de dados.PLAINtransmite senhas em texto simples. Esse mecanismo está disponível somente no MongoDB Enterprise.MONGODB-IAM
Novo na versão 0.10.0
Autenticação externa com AWS IAM.
Para autenticar com credenciais AWS IAM, use as seguintes opções:
--username<AWS access key id>--password<secret access key id>--awsSessionToken<AWS session token>
Para saber mais, consulte Mecanismos de autenticação.
--awsSessionTokenNovo na versão 0.10.0
Um token de sessão da AWS para uso com o mecanismo de autenticação
MONGODB-IAM.
--compressors <snappy,...>Novo na versão 0.9.0
Lista separada por vírgula de compressores para habilitar. Use "nenhum" para desabilitar. Padrão:
snappy,zstd,zlib
--config=<file>Arquivo YAML que armazena opções e valores de
mongomirror. Especifique o arquivo usando caminhos relativos ou absolutos para executarmongomirrorcom as opções que o arquivo contém.O arquivo de configuração suporta as seguintes opções:
password<password>sslPEMKeyPassword<password>destinationPassword<password>uri<string de conexão do URI do cluster de origem>
Especifique as opções no arquivo de configuração utilizando a sintaxe do
option: value. Não inclua--antes das opções no arquivo de configuração. Se você definir uma opção no arquivo de configuração, você não precisará especificar esta opção dentro do comandomongomirror.Exemplo
Crie um arquivo de configuração denominado
myconfig.yamlque contenha o seguinte:password: <passwordForUser> destinationPassword: <passwordForDestinationUser> Você pode executar o
mongomirrorsem incluir as bandeiras--passworde--destinationPassword:mongomirror --host <sourceReplSet> \ --ssl \ --username <atlasAdminUser> \ --destinationUsername <atlasAdminUser> \ --config=myconfig.yaml \ --destination <atlasCluster> \ [Additional options]
--destination <destination>As informações do host do conjunto de réplicas de destino do Atlas.
Especifique o nome do conjunto de réplicas e uma lista de dados dos membros, como a seguir:
<RSname>/<host1>:<port1>,<host2>:<port2>,<host3>:<port3>
--destinationAuthenticationDatabase <authentication database>Authentication database for the database user in the Atlas cluster. The authentication database for SCRAM-authenticated users is the
admindatabase.Para saber mais, consulte Autenticação de usuário do banco de dados.
--destinationAuthenticationMechanism <authentication mechanism>Mecanismo de autenticação para o usuário do banco de dados no Atlas cluster. O Atlas oferece as seguintes formas de autenticação para usuários do banco de dados:
ValorDescriçãoRFC 5802 Mecanismo de Autenticação de Resposta de Desafio Salted padrão usando a1 função de hash SHA-.
RFC 5802 Mecanismo de Autenticação de Resposta de Desafio Salted padrão usando a256 função de hash SHA-.
PLAIN (LDAP SASL)
Autenticação externa usando LDAP. Você também pode utilizar o
PLAINpara autenticar usuários do banco de dados.PLAINtransmite senhas em texto simples. Esse mecanismo está disponível somente no MongoDB Enterprise.Para saber mais, consulte Autenticação de usuário do banco de dados.
--destinationUsername <Atlas user name>Nome de um usuário do banco de dados no Atlas cluster com privilégios para ler, escrever e administrar qualquer banco de dados. Um usuário com o role de administrador do Atlas fornece os privilégios apropriados. Para obter detalhes sobre os privilégios específicos necessários, consulte Acesso necessário no cluster de destino.
--destinationPassword <password>Senha do usuário do banco de dados especificada no
--destinationUsername.
--dropFlag that indicates that
mongomirrorshould drop all user collections (viewable in each database withlistCollections) on the target cluster. This option doesn't drop internal collections likelocal.system*and the oplog.
--includeNamespace <database.collection>Especifique um namespace no cluster de origem para espelhar para o cluster de destino. Pode ser fornecido várias vezes.
Observação
If a transaction spans multiple namespaces, only write operations applied to the namespaces specified in
--includeNamespaceor--includeDBare applied to the destination cluster.
--includeDB <database>Especifique um banco de dados no cluster de origem para espelhar para o cluster de destino. Pode ser fornecida várias vezes.
Observação
If a transaction spans multiple namespaces, only write operations applied to the namespaces specified in
--includeNamespaceor--includeDBare applied to the destination cluster.
--sslPEMKeyFile <file>O arquivo .pem se o conjunto de réplica de origem exigir que os clientes apresentem um certificado. O arquivo .pem contém o certificado TLS/SSL e a chave. Especifique o arquivo utilizando caminhos relativos ou absolutos.
--sslPEMKeyPassword <value>Senha para descriptografar o arquivo da chave de certificado especificado no
--sslPEMKeyFile. Use se--sslPEMKeyFileestiver criptografado.
--sslCAFile <file>O arquivo .pem que contém a cadeia de certificados raiz da Autoridade de certificação (CA) para o conjunto de réplicas de origem. Especifique o arquivo utilizando caminhos relativos ou absolutos.
--sslCRLFile <filename>O arquivo .pem que contém a lista de revogação de certificado para o conjunto de réplica de origem. Especifique o arquivo utilizando caminhos relativos ou absolutos.
--sslAllowInvalidHostnamesObsoleto. Usar
tlsInsecureno lugar.Disables the validation of the TLS/SSL certificates presented by the source replica set. Allows
mongomirrorto connect to the source replica set if the hostname in the certificates does not match the specified hostname.Importante
Esta opção ignora toda a validação do certificado, o que pode resultar na aceitação de certificados inválidos.
--sslAllowInvalidCertificatesObsoleto. Usar
tlsInsecureno lugar.Ignora as verificações de validação para certificados apresentados pelo conjunto de réplicas de origem. Ao usar a configuração
--allowInvalidCertificates, o MongoDB registra como aviso o uso do certificado inválido.Importante
Esta opção ignora toda a validação do certificado, o que pode resultar na aceitação de certificados inválidos.
--tlsInsecureIgnora as verificações de validação para a cadeia de certificado do servidor e o nome do host. Isso permite que você use certificados e nomes de host inválidos.
Isso substitui as opções obsoletas
sslAllowInvalidHostnamesesslAllowInvalidCertificates.
--gssapiServiceName <name>Se o conjunto de réplicas de origem utilizar autenticação Kerberos, o nome do serviço utilizando GSSAPI/Kerberos. Só é necessário se o serviço não usar o nome padrão
mongodb.Esta opção está disponível apenas no MongoDB Enterprise.
--gssapiHostName <host>Se o conjunto de réplica de origem utilizar autenticação Kerberos, o nome de host de um serviço usando GSSAPI/Kerberos. Só é necessário se o nome do host de uma máquina não corresponder ao nome do host resolvido pelo DNS.
Esta opção está disponível apenas no MongoDB Enterprise.
--readPreference <read preference>Descontinuado desde a versão 0.9.0
mongomirrorsempre lê a partir do primário, a menos que a origem seja um único host sem um nome de conjunto de réplicas, caso em que ele faz uma conexão direta somente com esse host.
--writeConcern <write concern>Descontinuado desde a versão 0.2.3:
mongomirrorsempre usa preocupação de gravação majoritária.
--numParallelCollections <num>, -j <num>Padrão: 4
O número de coleções para copiar e restaurar em paralelo.
--bypassDocumentValidationDescontinuado desde a versão 0.2.3:
mongomirrorsempre ignora a validação do documento .
--bookmarkFile <file>Padrão: mongomirror.bookmark
Nome do arquivo de marcador de carimbo de data/hora do oplog.
--forceDumpFlag that indicates that
mongomirrorresync all source collections, even if a nonempty bookmark file exists.
--oplogPath <path>Novo na versão 0.5.0
Enables
mongomirrorto buffer the initial sync oplog window to disk. When you specify a value for this option,mongomirrorstreams the source oplog entries to the specified directory in a single file:<oplogPath>/oplog-mongomirror.bson.sz. After the entire oplog file is replayed to the destination cluster,mongomirrorremoves the file and starts tailing the source oplog without buffering.By default,
mongomirrorstreams oplog entries from the source and applies them to the destination cluster. However, the migration may fail if the source oplog is not large enough to contain the entire initial sync oplog window. To avoid this error, you can either increase the size of the source oplog, or specify this option to ensure that the source oplog will not run out of space during the migration process.Importante
There must be enough disk space to accommodate all of the source oplog entries that occur during the initial
mongomirrorsync.For example, if the source oplog is 10 GB and covers 24 hours of changes, and
mongomirror's sync is estimated to take 48 hours, there must be at least 20 GB of free disk space in the specified directory.
--oplogBatchSize <num>Padrão: 10.000
Specify the number of oplog entries to send as a batch.
mongomirrorallows up to a maximum data volume size of 16 MB of documents to send as a batch.
--httpStatusPort <num>Directs
mongomirrorto start an HTTP server on the specified port. You can retrieve the current status ofmongomirrorby issuing an HTTPGETrequest tohttp://localhost:<num>.When running with
--httpStatusPort,mongomirrordoes not exit when it encounters an error. Instead, it logs the error as normal and reports the error over HTTP to the specified port.mongomirrorretorna um documento em resposta à solicitação HTTP. A sintaxe de exemplo a seguir representa todos os campos de saída possíveis - a resposta real pode retornar apenas um subconjunto desses campos. Consulte a tabela subsequente para obter uma descrição dos campos e quando esperá-los.{ "stage" : "<stage Name>", "phase" : "<phase Name>", "details" : { "currentTimestamp" : "<BSON timestamp>", "latestTimestamp" : "<BSON timestamp>", "lastWriteOnSourceTimestamp" : "<BSON timestamp>", "<namespace>" : { "complete" : <boolean>, "copiedBytes" : <integer>, "totalBytes" : <integer>, "createIndexes" : <integer> }, ... }, "errorMessage" : "<error message>" } A tabela a seguir descreve cada campo e seus valores possíveis:
CampoDescriçãostageO nome do estágio em andamento. Os valores possíveis são:
initializingmongomirrorcomeçou, mas ainda não está copiando nenhum dado.initial syncmongomirroris copying documents and indexes that already exist on the source deployment.mongomirroralso tails and applies entries from the oplog.oplog syncmongomirrorestá seguindo e aplicando entradas do oplog.
phaseO nome da fase. Fornece detalhes mais específicos de qual parte do
stageestá em andamento.detailsUm documento que fornece uma descrição detalhada do progresso da fase atual.
During the
initial syncstage, each subdocument indetailsrepresents a single collection being copied bymongomirror.Depending on the
stageorphase,mongomirrormay not include this field in the response.details.<namespace>O namespace completo da coleção que está sendo copiada, exibido como
<database>.<collection>.Somente é exibido durante a fase
initial syncao copiar documentos ou índices.details.<namespace>.completeDisplays
trueorfalsedepending on whether or notmongomirrorhas copied all documents or indexes from the collection to the target Atlas cluster.Somente é exibido durante a fase
initial syncao copiar documentos ou índices.details.<namespace>.copiedBytesThe number of bytes copied so far. Note that this is a different measurement from the
mongomirrorlogs, which report the current/total number of documents copied.Exibido somente durante a fase
initial syncao copiar dados que não são de índice.details.<namespace>.totalBytesO tamanho total (em bytes) da coleção.
Exibido somente durante a fase
initial syncao copiar dados que não são de índice.details.<namespace>.createIndexesO número de índices que foram ou serão criados.
Exibido somente durante o estágio
initial syncao copiar índices.details.currentTimestampThe BSON timestamp value of the oplog entry most recently processed.
mongomirroronly refreshes this data point every 10 seconds, somongomirrormay be slightly further ahead of the reported time.Só é exibido durante os estágios
initial syncouoplog syncao seguir ou aplicar entradas de oplog.details.latestTimestampDurante o estágio
initial sync, isso representa o valor do registro de data e hora BSON da última entrada do oplog disponível depois que os dados iniciais foram copiados durante a sincronização inicial.Durante o estágio
oplog sync, isso representa o valor do registro de data e hora BSON da última entrada de oplog disponível no sistema de origem.Só é exibido durante os estágios
initial syncouoplog syncao seguir ou aplicar entradas de oplog.details.lastWriteOnSourceTimestampThe BSON timestamp value of the most recent oplog entry that is not a no-op. No-op entries are generally system-level operations such as heartbearts that do not write or edit data in the database.
mongomirrorrefreshes this value every 10 seconds. Operations which write or edit data in the database may not be reported until the next refresh occurs.O campo
lastWriteOnSourceTimestampé útil como confirmação de que nenhuma nova gravação está ocorrendo no sistema de origem antes da interrupção durante a migração.errorMessageA string that describes any error encountered by
mongomirror.
--collStatsThreshold <num>Novo na versão 0.9.0
Maximum number of collections which may exist before collStats is disabled. Use
-1to always run collStats or0to never run collStats. Default:-1
--removeAutoIndexIdNovidade na versão 0.12.0
Remove a opção
autoIndexIddas collections durante a initial sync com o cluster de destino. Remove também a opçãoautoIndexIdde qualquer collection que omongomirrorcrie durante a migração.
--preserveUUIDsPermite ao Atlas preservar UUID durante a migração live. Esta opção funciona somente com o processo de migração live que o Atlas executa. Se você utilizar a opção
--preserveUUIDsna linha de comando, ela falhará devido a erros de permissão. Esses erros são esperados porque essa opção não se destina a ser usada na linha de comando em um processo de migração autogerenciado que executamongomirror.
Exemplos
Migrar um conjunto de réplica para Atlas: nenhuma autenticação na fonte
O exemplo a seguir migra de um conjunto de réplicas de origem que não requer autenticação:
mongomirror --host sourceRS/source-host1:27017,source-host2:27017 \ --destination myAtlasRS/atlas-host1:27017,atlas-host2:27017 \ --destinationUsername myAtlasUser \ --destinationPassword myAtlasPwd
Para migrar de um conjunto de réplicas de origem que não exige autenticação, execute o mongomirror com as seguintes opções:
--host<sourceReplSet/seed list of members>--destination<Cluster do Atlas>--destinationUsername<atlasUser>--destinationPassword<atlasPassword>
Para o destino, especifique o nome do conjunto de réplicas seguido por uma lista de sementes de membros no seguinte formato:
<replicaSetName>/<host1>:<port1>,<host2>:<port2>,<host3>:<port3>,...
The specified user must have the Atlas admin role on Atlas.
Migrar um conjunto de réplicas: o conjunto de réplicas de origem utiliza a autenticação SCRAM-SHA1
O exemplo a seguir migra um conjunto de réplicas de origem que utiliza autenticação SCRAM-SHA1 para Atlas:
mongomirror --host sourceRS/source-host1:27017,source-host2:27017,source-host3:27017 \ --username mySourceUser \ --password mySourcePassword \ --authenticationDatabase admin \ --destination myAtlasRS/atlas-host1:27017,atlas-host2:27017 \ --destinationUsername myAtlasUser \ --destinationPassword atlasPassw0Rd
To migrate from a source replica set that uses SCRAM-SHA1 authentication, run mongomirror with the following options:
--host<sourceReplSet/seed list of members>--username<sourceUser>--password<sourcePassword>--authenticationDatabase<sourceDatabase>--destination<Cluster do Atlas>--destinationUsername<atlasUser>--destinationPassword<atlasPassword>
O usuário do conjunto de réplicas de origem deve ter o acesso necessário no cluster de origem. O role do backup fornece os devidos privilégios.
Para o destino, especifique o nome do conjunto de réplicas seguido por uma lista de sementes de membros no seguinte formato:
<replicaSetName>/<replicaMember>,<replicaMember>,<replicaMember>,...
The specified user must have the Atlas admin on Atlas.
Migrar um conjunto de réplicas: o conjunto de réplicas de origem requer autenticação do cliente X.509
O exemplo a seguir migra de um conjunto de réplicas de origem que usa autenticação X.509:
mongomirror --host sourceRS/source-host1:27017,source-host2:27017,source-host3:27017 \ --username "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry" \ --authenticationDatabase '$external' \ --authenticationMechanism MONGODB-X509 \ --ssl \ --sslPEMKeyFile <path-to-my-client-certificate.pem> \ --sslCAFile <path-to-my-certificate-authority-certificate.pem> \ --destination myAtlasRS/atlas-host1:27017,atlas-host2:27017 \ --destinationUsername myAtlasUser \ --destinationPassword atlasPassw0Rd
To migrate from a source replica set that uses X.509 authentication, run mongomirror with the following options:
--host<sourceReplSet/seed list of members>--username<subject from the client certificate>--authenticationMechanismMONGODB-X509--authenticationDatabase'$external'--sslPEMKeyFile<path-to-my-client-certificate.pem>--sslCAFile<path to root CA PEM file>--destination<Cluster do Atlas>--destinationUsername<atlasUser>--destinationPassword<atlasPassword>
O usuário do conjunto de réplicas de origem deve ter o acesso necessário no cluster de origem. O role do backup fornece os devidos privilégios.
Para o destino, especifique o nome do conjunto de réplicas seguido por uma lista de sementes de membros no seguinte formato:
<replicaSetName>/<replicaMember>,<replicaMember>,<replicaMember>,...
The specified user must have the Atlas admin on Atlas.
Migrar um conjunto de réplicas: o conjunto de réplicas de origem requer autenticação Kerberos/GSSAPI
O exemplo a seguir migra de um conjunto de réplica de origem que usa a autenticação Kerberos:
mongomirror --host sourceRS/source-host1:27017,source-host2:27017,source-host3:27017 \ --username sourceUser/administrator@MYREALM.COM \ --authenticationDatabase '$external' \ --authenticationMechanism GSSAPI \ --destination myAtlasRS/atlas-host1:27017,atlas-host2:27017,atlas-host3:27017 \ --destinationUsername atlasUser \ --destinationPassword atlasPass
To migrate from a source replica set that uses Kerberos authentication, run mongomirror with the following options:
--host<sourceReplSet/seed list of members>--username<Kerberos user principal>--authenticationDatabase'$external'--authenticationMechanismGSSAPI--destination<Cluster do Atlas>--destinationUsername<atlasUser>--destinationPassword<atlasPassword>
O usuário do conjunto de réplicas de origem deve ter o acesso necessário no cluster de origem. O role do backup fornece os devidos privilégios.
Para o destino, especifique o nome do conjunto de réplicas seguido por uma lista de sementes de membros no seguinte formato:
<replicaSetName>/<replicaMember>,<replicaMember>,<replicaMember>,...
The specified user must have the Atlas admin on Atlas.
Salvar a saída mongomirror em um arquivo
Você pode salvar os registros de saída de um procedimento do mongomirror em um arquivo para exame posterior e depuração. Use o seguinte formato para salvar a saída em um arquivo mongomirror.log :
mongomirror <args> 2>&1 | tee -a mongomirror.log