Migre o MongoDB para o Oracle Database sem tempo de inatividade

Descubra como usar o OCI GoldenGate para MongoDB para o Oracle Database com tempo de inatividade zero.

O OCI GoldenGate Big Data suporta migrações do MongoDB e do MongoDB Atlas para o Oracle Autonomous JSON Database, o Oracle Autonomous Database e o Oracle Database sem tempo de inatividade. O Autonomous JSON Database e o Oracle Autonomous Database vêm com strings de conexão Oracle API para MongoDB pré-configuradas que o OCI GoldenGate usa para estabelecer conexão com sistemas Oracle Database de destino. Consulte Usando a API do Oracle Database API for MongoDB para obter mais informações. Se o seu destino for um Oracle Database local, você poderá usar o Oracle Rest Data Services para ativar o Oracle Database API for MongoDB com o seu Oracle Database local.

Antes de começar

Para concluir com êxito este início rápido, certifique-se de que:

  • Uma origem MongoDB, versão 5 ou mais recente
  • Criada uma implantação do OCI GoldenGate Big Data, versão 23.7 ou posterior
  • MongoDB Database Tools, incluindo mongodump e mongostore, instalados e respectivos caminhos de diretório adicionados à variável de ambiente PATH

Configurar e executar a migração

  1. Na sua origem MongoDB, execute o Utilitário de Dump MongoDB.
    1. Execute mongodump com a opção --oplog para criar um snapshot do banco de dados de origem MongoDB:
      $ ./bin/mongodump --uri="mongodb://localhost:27021" --oplog -v

      O comando retorna o seguinte:

      <date+timestamp>    getting most recent oplog timestamp
      <date+timestamp>    writing admin.system.version to dump/admin/system.version.bson
      <date+timestamp>    done dumping admin.system.version (1 document)
      <date+timestamp>    dumping up to 4 collections in parallel
      <date+timestamp>    writing testDB.coll1 to dump/testDB/coll1.bson
      <date+timestamp>    writing testDB.coll2 to dump/testDB/coll2.bson
      <date+timestamp>    writing testDB.coll3 to dump/testDB/coll3.bson
      <date+timestamp>    done dumping testDB.coll3 (10000 documents)
      <date+timestamp>    done dumping testDB.coll1 (10000 documents)
      <date+timestamp>    done dumping testDB.coll2 (10000 documents)
      <date+timestamp>    writing captured oplog to
      <date+timestamp>    dumped 7 oplog entries
      Isso gera uma pasta de dump contendo o arquivo de dados de arquivamento binário para todos os bancos de dados e coleções no seguinte local:
      dump/database-name/collection-name/collection-name.bson
      Ele também cria uma oplog.bson diretamente na pasta de dump.
    2. Para inspecionar o conteúdo do arquivo oplog.bson (que está em formato binário), você pode convertê-lo em JSON usando o utilitário bsondump:
      $ ./bin/bsondump --pretty --outFile /path/to/oplog.json dump/oplog.bson

      O comando retorna o seguinte:

      <date+timestamp>    7 objects found
  2. Extraia os timestamps da primeira e da última operação de oplong.bson:
    1. Faça download do script OplogLSN.sh
    2. Execute o script OplongLSN.sh em seu MongoDB de origem no mesmo diretório onde mongodump está localizado, passando o local para oplog.bson como um argumento da seguinte forma:
      $./oplogLSN.sh /path/to/dump/oplog.bson

      O comando retorna o seguinte:

      <date+timestamp> 1 objects found
      First LSN: 1740663867.1
      Last LSN: 1740663946.211
    3. Inspecionar entradas do Oplog. Se houver alguma operação de entrada durante o dump, o arquivo oplog.bson conterá entradas para essas operações, cada uma com um timestamp. Você pode usar OplogLSN.sh para capturar os timestamps da primeira e da última operação ou convertê-los em um arquivo JSON para inspeção manual, conforme mostrado na etapa anterior.
  3. Execute o Utilitário de Restauração MongoDB. Use o utilitário mongorestore para restaurar as coleções selecionadas do dump para a instância de destino MongoDB:
    $ ./mongorestore --uri="mongodb://localhost:27021" --nsInclude=testDB.coll1 --nsInclude=testDB.coll2 /path/to/dump -v

    O comando retorna o seguinte:

    <date+timestamp>    using write concern: &{majority <nil> 0s}
    <date+timestamp>    using default 'dump' directory
    <date+timestamp>    preparing collections to restore from
    <date+timestamp>    found collection admin.system.version bson to restore to admin.system.version
    <date+timestamp>    found collection metadata from admin.system.version to restore to admin.system.version
    <date+timestamp>    don't know what to do with file "dump/oplog.json", skipping...
    <date+timestamp>    found collection testDB.coll1 bson to restore to testDB.coll1
    <date+timestamp>    found collection metadata from testDB.coll1 to restore to testDB.coll1
    <date+timestamp>    found collection testDB.coll2 bson to restore to testDB.coll2
    <date+timestamp>    found collection metadata from testDB.coll2 to restore to testDB.coll2
    <date+timestamp>    reading metadata for testDB.coll1 from dump/testDB/coll1.metadata.json
    <date+timestamp>    reading metadata for testDB.coll2 from dump/testDB/coll2.metadata.json
    <date+timestamp>    creating collection testDB.coll1 with no metadata
    <date+timestamp>    creating collection testDB.coll2 with no metadata
    <date+timestamp>    restoring testDB.coll1 from dump/testDB/coll1.bson
    <date+timestamp>    restoring testDB.coll2 from dump/testDB/coll2.bson
    <date+timestamp>    finished restoring testDB.coll1 (10000 documents, 0 failures)
    <date+timestamp>    finished restoring testDB.coll2 (10000 documents, 0 failures)
    <date+timestamp>    no indexes to restore for collection testDB.coll1
    <date+timestamp>    no indexes to restore for collection testDB.coll2
    <date+timestamp>    20000 document(s) restored successfully. 0 document(s) failed to restore.

    O comando restaura os dados, metadados e definições de índice da coleção especificada para a instância MongoDB/ORDS de destino. Por exemplo, coll1 e coll2 no banco de dados testDB, conforme mostrado na saída acima.

  4. Crie e execute um Extract CDC (Change Data Capture) na implantação do Big Data de origem para MongoDB. Inicie o Extract do CDC MongoDB no timestamp da primeira operação (Primeiro LSN) obtido na Etapa 2b. Isso garante que a Extração CDC capture operações que ocorrem após o início do processo de dump.
  5. Crie e execute uma Replicação MongoDB.
    1. Use o Arquivo de Trilha CDC gerado na Etapa 4.
    2. Defina oplongReplayLastLsn como o timestamp da última operação (Último LSN) obtido na Etapa 2b ou o caminho para oplog.bson e o Último LSN será obtido automaticamente. Isso garante que o Replicat seja executado no modo oplong-replay, evitando colisões e garantindo uma iniciação precisa sem perda ou duplicação de dados. Depois que o último timestamp é processado, o Replicat continua no modo normal.

Sugestões

Aqui estão algumas dicas para garantir que sua migração ocorra sem problemas:

  • É recomendável usar o mongodb-database-tools versão 100.10.0 ou inferior.
  • Antes de executar o mongodump, limpe a pasta de dump existente para excluir dados inconsistentes.
  • Restauração do MongoDB: várias coleções de um banco de dados podem ser replicadas usando várias opções --nsInclude no comando mongorestore. No entanto, não é possível restaurar vários bancos de dados ORDS usando vários comandos --nsInclude. Você deve usar vários comandos de restauração, um para cada banco de dados a ser restaurado.