Instanciation précise de MySQL vers MySQL à l'aide des utilitaires de shell MySQL et d'Oracle GoldenGate

La méthode d'instanciation précise permet le chargement initial des données d'une base de données source vers une base de données cible tandis que la base de données source reste en ligne pour les mises à jour d'application. Cette méthode garantit un positionnement précis des processus de capture et de transmission des données de modification sans avoir de données en double dans la base de données cible et sans avoir à utiliser HANDLECOLLISIONS dans le processus Replicat.

L'instanciation précise d'Oracle GoldenGate pour MySQL utilise les utilitaires de chargement de vidage et de vidage du shell MySQL. Elle est uniquement prise en charge entre une source MySQL et une base de données cible MySQL.

Cette méthode requiert l'installation du shell MySQL. Les étapes d'installation sont disponibles à l'adresse suivante :

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

Pour obtenir des informations détaillées et connaître les limites des utilitaires de vidage et de chargement de vidage du shell MySQL, reportez-vous aux liens suivants :

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

Vous allez utiliser l'utilitaire de vidage de shell MySQL pour exporter l'instance, le schéma ou les tables MySQL, en fonction de vos besoins. Vous allez ensuite utiliser l'utilitaire de chargement de fichier dump MySQL pour charger les objets dans la base de données cible, puis configurer une extraction et une réplication GoldenGate pour répliquer les données de modification continue de la source vers la base de données cible.

L'utilitaire de vidage du shell MySQL crée plusieurs fichiers d'export, dont l'un est un fichier @.json. Ce fichier est nécessaire pour déterminer le positionnement du processus Extract lors de son ajout à la base de données source.

Voici un exemple de méthode d'instanciation précise utilisant un fichier dump de schéma de l'instance source, puis chargé dans l'instance cible, suivi de la configuration d'Oracle GoldenGate pour la réplication des données de modification : 1. Connectez-vous au shell MySQL. Pour plus d'informations sur les options de connexion prises en charge avec le shell MySQL, reportez-vous à ce lien : 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. Après vous être connecté au shell MySQL, vérifiez que vous êtes en mode JavaScript. Une invite JS > doit s'afficher. Si vous êtes en mode SQL, passez en mode JavaScript à l'aide du commutateur \js :

    MySQL sourcehost:33060+ ssl SQL > \js
  2. Vérifiez que la variable globale local_infile est définie sur ON.

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

    Si la variable local_infile est définie sur OFF, activez-la à l'aide de la commande suivante :

    MySQL sourcehost:33060+ ssl JS > \sql SET GLOBAL local_infile = ON;
  3. Ensuite, utilisez l'une des fonctions suivantes pour exporter l'instance, le schéma ou les tables à exporter.

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

    Dans cet exemple, nous allons vider le schéma HR dans le dossier ~/dumps/hr-schema-src :

    MySQL sourcehost:33060+ ssl JS >util.dumpSchemas(["hr"], "~/dumps/hr-schema-src")
  4. Une fois l'export terminé, utilisez l'utilitaire util.loadDump pour importer le schéma vers l'instance cible. Remarque : si l'instance cible se trouve sur un système différent de celui de la source, vous devez copier les fichiers exportés vers le système cible.

<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. Une fois l'utilitaire de chargement de données terminé, ouvrez le fichier @.json dans le dossier de vidage source. Ce fichier contient la dernière transaction validée contenue dans le fichier dump et une extraction de données de modification doit être configurée à l'aide de cette valeur de transaction. Voici un exemple des informations de transaction dans le fichier @.json :

    "binlogFile": "binlog.000005",
    "binlogPosition": 1289,
          "gtidExecuted": "1174b383-3441-11e8-b90a-c80aa9429920:1-9,\n1174b383-3441-11e8-b90a-c80aa9429921:1-9"
  2. Ajoutez une extraction à la base de données source à l'aide de la valeur gtidExecuted ou des valeurs binlogFile et binlogPosition, en fonction de la configuration de la base de données.

    1. Si la base de données source est configurée avec gtid_mode défini sur ON, utilisez la valeur gtidExecuted du fichier @.json pour ajouter l'extraction.

      Exemple utilisant le positionnement GTIDSET, en fonction de la valeur gtidExecuted :

      ADD EXTRACT extsrc, TRANLOG GTIDSET "1174b383-3441-11e8-b90a-c80aa9429920:1-9,\n1174b383-3441-11e8-b90a-c80aa9429921:1-9"
    2. Si la valeur gtid_mode est définie sur OFF pour la base de données source, utilisez les valeurs binlogFile et binlogPosition du fichier @.json lors de l'ajout de l'extraction.

      Exemple utilisant le positionnement LOGNUM et LOGPOS, en fonction des valeurs binlogFile et binlogPosition :

      ADD EXTRACT extsrc, TRANLOG, LOGNUM 5 LOGPOS 1289
  3. Enfin, terminez la configuration d'Oracle GoldenGate en ajoutant les processus suivants :

    1. Trace correspondante pour l'extraction

    2. Un chemin de distribution si nécessaire

    3. Une réplication à transmettre à la base de données cible

  4. Démarrez les processus Oracle GoldenGate et surveillez le processus Extract et Replicat pour vérifier qu'ils s'exécutent correctement et que le décalage est réduit à un temps quasi réel.