Instanciação Precisa de MySQL para MySQL Usando Utilitários de Shell MySQL e Oracle GoldenGate

O método de instanciação preciso permite a carga inicial de dados de um banco de dados de origem para um banco de dados de destino, enquanto o banco de dados de origem permanece on-line para atualizações de aplicativos. Esse método garante o posicionamento preciso dos processos de captura e entrega de dados de alteração sem ter dados duplicados no banco de dados de destino e sem a necessidade de usar HANDLECOLLISIONS no processo Replicat.

A instanciação precisa do Oracle GoldenGate for MySQL usa os utilitários de carregamento de dump e dump do Shell MySQL e só há suporte entre uma origem MySQL e um banco de dados de destino MySQL.

Esse método requer que o Shell MySQL seja instalado. As etapas de instalação estão disponíveis no seguinte link:

<https://dev.mysql.com/doc/mysql-shell/ 8.0/en/mysql-shell-install.html>

Para obter informações detalhadas e limitações dos utilitários de carregamento de dump e dump do shell MySQL, consulte os seguintes links:

https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-dump-instance-schema.html

https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-load-dump.html

Você usará o utilitário de dump do Shell MySQL para exportar a instância, o esquema ou as tabelas MySQL, dependendo dos seus requisitos. Em seguida, você usará o utilitário de carregamento de dump MySQL para carregar os objetos no banco de dados de destino e depois configurará um Extract e Replicat GoldenGate para replicar dados de alteração contínua da origem para o banco de dados de destino.

O utilitário de dump do Shell MySQL cria vários arquivos de exportação, um dos quais é um arquivo @.json. Esse arquivo é necessário para determinar o posicionamento do Extract ao adicioná-lo ao banco de dados de origem.

Veja a seguir um método de instanciação preciso de amostra usando um dump de esquema da instância de origem e, em seguida, carregado na instância de destino, seguido pela configuração do Oracle GoldenGate para replicação de dados de alteração: 1. Conecte-se ao Shell MySQL. Para obter detalhes sobre as opções de conexão suportadas com o Shell MySQL, consulte este link: https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-connections.html

<pre class="copy"><code>mysqlsh -mysqlx -u *username* -h *hostname* -P *port*</code></pre>
  1. Depois de estabelecer conexão com o Shell MySQL, certifique-se de estar no modo JavaScript. Você deverá ver um prompt JS >. Se estiver no modo SQL, alterne para o modo JavaScript usando a chave \js:

    MySQL sourcehost:33060+ ssl SQL > \js
  2. Verifique se a Variável Global local_infile está definida como ON.

    MySQL sourcehost:33060+ ssl JS > \sql SHOW GLOBAL VARIABLES LIKE
        'local_infile';

    Se a variável local_infile for definida como OFF, ative-a com o seguinte comando:

    MySQL sourcehost:33060+ ssl JS > \sql SET GLOBAL local_infile = ON;
  3. Em seguida, use uma das funções a seguir para exportar a instância, o esquema ou as tabelas que você deseja exportar.

    util.dumpInstance(outputUrl[, options])
    util.dumpSchemas(schemas, outputUrl[,  options])
    util.dumpTables(schema, tables, outputUrl[, options])

    Neste exemplo, vamos fazer dump do esquema hr, na pasta ~/dumps/hr-schema-src:

    MySQL sourcehost:33060+ ssl JS >util.dumpSchemas(["hr"], "~/dumps/hr-schema-src")
  4. Após a conclusão da exportação, use o utilitário util.loadDump para importar o esquema para a instância de destino. Observação: Se a sua instância de destino estiver em um sistema diferente da origem, você precisará copiar os arquivos exportados para o sistema de destino.

<pre class="copy"><code>MySQL targethost:33060+ ssl JS &gt;util.loadDump(&quot;~/dumps/hr-schema-tgt&quot;, {schema: &quot;tgt-hr&quot;})</code></pre>
  1. Quando o utilitário de carregamento de dados for concluído, abra o arquivo @.json na pasta de dump de origem. Este arquivo contém a última transação confirmada contida no dump e será necessário configurar um Extract de dados de alteração usando esse valor de transação. Veja a seguir um exemplo das informações da transação no arquivo @.json:

    "binlogFile": "binlog.000005",
    "binlogPosition": 1289,
          "gtidExecuted": "1174b383-3441-11e8-b90a-c80aa9429920:1-9,\n1174b383-3441-11e8-b90a-c80aa9429921:1-9"
  2. Adicione um Extract ao banco de dados de origem usando o valor gtidExecuted ou os valores binlogFile e binlogPosition, com base na configuração do banco de dados.

    1. Se o banco de dados de origem estiver configurado com o gtid_mode definido como ON, use o valor gtidExecuted do arquivo @.json para adicionar o Extract.

      Um exemplo usando o posicionamento GTIDSET, com base no valor gtidExecuted:

      ADD EXTRACT extsrc, TRANLOG GTIDSET "1174b383-3441-11e8-b90a-c80aa9429920:1-9,\n1174b383-3441-11e8-b90a-c80aa9429921:1-9"
    2. Se o banco de dados de origem tiver o valor gtid_mode definido como OFF, use os valores binlogFile e binlogPosition do arquivo @.json ao adicionar o Extract.

      Um exemplo usando o posicionamento LOGNUM e LOGPOS, com base nos valores binlogFile e binlogPosition:

      ADD EXTRACT extsrc, TRANLOG, LOGNUM 5 LOGPOS 1289
  3. Por fim, conclua a configuração do Oracle GoldenGate adicionando os seguintes processos:

    1. Trilha correspondente do Extract

    2. Um caminho de distribuição, se necessário

    3. Um Replicat para entrega ao banco de dados de destino

  4. Iniciar os processos do Oracle GoldenGate e monitorar os processos Extract e Replicat para confirmar se eles estão sendo executados corretamente, e esse atraso é reduzido para quase em tempo real.