Instanciación precisa de MySQL a MySQL mediante las utilidades de shell MySQL y Oracle GoldenGate

El método preciso de instanciación permite la carga inicial de datos de una base de datos origen a una base de datos destino mientras la base de datos origen permanece en línea para las actualizaciones de la aplicación. Este método garantiza un posicionamiento preciso de los procesos de captura y entrega de datos de cambio sin tener datos duplicados en la base de datos de destino y sin necesidad de utilizar HANDLECOLLISIONS en Replicat.

La instanciación precisa para Oracle GoldenGate para MySQL utiliza las utilidades de carga de volcado y volcado del shell MySQL y solo está soportada entre un origen MySQL y una base de datos de destino MySQL.

Este método requiere que se instale el shell MySQL. Los pasos de instalación están disponibles en el siguiente enlace:

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

Para obtener información detallada y limitaciones de las utilidades de carga de volcado y volcado del shell MySQL, consulte los siguientes enlaces:

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

Utilizará la utilidad de volcado del shell MySQL para exportar la instancia, el esquema o las tablas MySQL, según sus requisitos. A continuación, utilizará la utilidad de carga de volcado MySQL para cargar los objetos en la base de datos de destino y, posteriormente, configurará GoldenGate Extract y Replicat para replicar los datos de cambio continuo de la base de datos de origen a la de destino.

La utilidad de volcado del shell MySQL crea varios archivos de exportación, uno de los cuales es un archivo @.json. Este archivo es necesario para determinar el posicionamiento de Extract al agregarlo a la base de datos origen.

A continuación se muestra un método de instanciación preciso de ejemplo que utiliza un volcado de esquema de la instancia de origen y, a continuación, se carga en la instancia de destino, seguido de la configuración de Oracle GoldenGate para la replicación de datos de cambio: 1. Conéctese al shell MySQL. Para obtener más información sobre las opciones de conexión soportadas con el shell MySQL, consulte este enlace: 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. Después de conectarse al shell MySQL, asegúrese de que está en modo JavaScript. Debe ver una petición de datos JS >. Si está en modo SQL, cambie al modo JavaScript mediante el conmutador \js:

    MySQL sourcehost:33060+ ssl SQL > \js
  2. Verifique que la variable global local_infile está definida en ON.

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

    Si la variable local_infile está definida en OFF, actívela con el siguiente comando:

    MySQL sourcehost:33060+ ssl JS > \sql SET GLOBAL local_infile = ON;
  3. A continuación, utilice una de las siguientes funciones para exportar la instancia, el esquema o las tablas que desea exportar.

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

    En este ejemplo, volcaremos el esquema hr en la carpeta ~/dumps/hr-schema-src:

    MySQL sourcehost:33060+ ssl JS >util.dumpSchemas(["hr"], "~/dumps/hr-schema-src")
  4. Una vez finalizada la exportación, utilice la utilidad util.loadDump para importar el esquema a la instancia de destino. Nota: Si la instancia de destino está en un sistema diferente al de origen, deberá copiar los archivos exportados en el 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. Cuando se complete la utilidad de carga de datos, abra el archivo @.json en la carpeta de volcado de origen. Este archivo contiene la última transacción confirmada contenida en el volcado y se deberá configurar una extracción de datos de cambio con ese valor de transacción. A continuación se muestra un ejemplo de la información de transacción en el archivo @.json:

    "binlogFile": "binlog.000005",
    "binlogPosition": 1289,
          "gtidExecuted": "1174b383-3441-11e8-b90a-c80aa9429920:1-9,\n1174b383-3441-11e8-b90a-c80aa9429921:1-9"
  2. Agregue un Extract a la base de datos origen mediante el valor gtidExecuted o los valores binlogFile y binlogPosition, según la configuración de la base de datos.

    1. Si la base de datos origen se configura con gtid_mode definido en ON, utilice el valor gtidExecuted del archivo @.json para agregar el Extract.

      Un ejemplo con el posicionamiento GTIDSET, basado en el valor gtidExecuted:

      ADD EXTRACT extsrc, TRANLOG GTIDSET "1174b383-3441-11e8-b90a-c80aa9429920:1-9,\n1174b383-3441-11e8-b90a-c80aa9429921:1-9"
    2. Si la base de datos origen tiene gtid_mode definido en OFF, utilice los valores binlogFile y binlogPosition del archivo @.json al agregar el Extract.

      Un ejemplo con el posicionamiento LOGNUM y LOGPOS, basado en los valores binlogFile y binlogPosition:

      ADD EXTRACT extsrc, TRANLOG, LOGNUM 5 LOGPOS 1289
  3. Por último, complete la configuración de Oracle GoldenGate agregando los siguientes procesos:

    1. Pista correspondiente para el extracto

    2. Una ruta de distribución si es necesario

    3. Un Replicat para entregar a la base de datos destino

  4. Inicie los procesos de Oracle GoldenGate y controle Extract y Replicat para confirmar que se están ejecutando correctamente y que la demora se reduce a casi en tiempo real.