Creazione precisa dell'istanza da MySQL a MySQL mediante le utility della shell MySQL e Oracle GoldenGate

Il metodo di creazione delle istanze preciso consente il caricamento iniziale dei dati da un database di origine a un database di destinazione mentre il database di origine rimane in linea per gli aggiornamenti dell'applicazione. Questo metodo garantisce un posizionamento preciso dei processi di acquisizione e consegna dei dati di modifica senza avere dati duplicati nel database di destinazione e senza la necessità di utilizzare HANDLECOLLISIONS in Replicat.

La creazione di un'istanza precisa per Oracle GoldenGate for MySQL utilizza le utility di caricamento del dump e del dump della shell MySQL ed è supportata solo tra un'origine MySQL e un database di destinazione MySQL.

Questo metodo richiede l'installazione della shell MySQL. I passaggi di installazione sono disponibili al seguente collegamento:

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

Per informazioni dettagliate e le limitazioni delle utility di caricamento dei dump e dei dump della shell MySQL, fare riferimento ai collegamenti riportati di seguito.

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

Si utilizzerà la utility di dump della shell MySQL per esportare l'istanza, lo schema o le tabelle MySQL, a seconda dei requisiti. Sarà quindi possibile utilizzare la utility di caricamento del dump MySQL per caricare gli oggetti nel database di destinazione e successivamente configurare un Extract e un Replicat GoldenGate per replicare i dati di modifica continui dall'origine al database di destinazione.

La utility di dump della shell MySQL crea più file di esportazione, uno dei quali è un file @.json. Questo file è necessario per determinare il posizionamento di Extract quando viene aggiunto al database di origine.

Di seguito è riportato un metodo di creazione di istanze preciso di esempio che utilizza un dump dello schema dall'istanza di origine, quindi viene caricato nell'istanza di destinazione, seguito dalla configurazione di Oracle GoldenGate per la replica dei dati di modifica: 1. Connettersi alla shell MySQL. Per informazioni dettagliate sulle opzioni di connessione supportate con la shell MySQL, fare riferimento a questo collegamento: 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. Dopo aver eseguito la connessione alla shell MySQL, assicurarsi di essere in modalità JavaScript. Il prompt deve essere visualizzato JS >. Se in modalità SQL, passare alla modalità JavaScript utilizzando lo switch \js:

    MySQL sourcehost:33060+ ssl SQL > \js
  2. Verificare che la variabile globale local_infile sia impostata su ON.

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

    Se la variabile local_infile è impostata su OFF, attivarla con il comando seguente:

    MySQL sourcehost:33060+ ssl JS > \sql SET GLOBAL local_infile = ON;
  3. Utilizzare quindi una delle funzioni riportate di seguito per esportare l'istanza, lo schema o le tabelle che si desidera esportare.

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

    In questo esempio, verrà eseguito il dump dello schema hr nella cartella ~/dumps/hr-schema-src:

    MySQL sourcehost:33060+ ssl JS >util.dumpSchemas(["hr"], "~/dumps/hr-schema-src")
  4. Al termine dell'esportazione, utilizzare la utility util.loadDump per importare lo schema nell'istanza di destinazione. Nota: se l'istanza di destinazione si trova in un sistema diverso da quello di origine, sarà necessario copiare i file esportati nel sistema di destinazione.

<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. Al termine della utility di caricamento dati, aprire il file @.json nella cartella di dump di origine. Questo file contiene l'ultima transazione di cui è stato eseguito il commit contenuta nel dump e un'estrazione dei dati di modifica dovrà essere configurata utilizzando il valore di transazione specificato. Di seguito è riportato un esempio delle informazioni sulla transazione nel file @.json:

    "binlogFile": "binlog.000005",
    "binlogPosition": 1289,
          "gtidExecuted": "1174b383-3441-11e8-b90a-c80aa9429920:1-9,\n1174b383-3441-11e8-b90a-c80aa9429921:1-9"
  2. Aggiungere un'estrazione al database di origine utilizzando il valore gtidExecuted o i valori binlogFile e binlogPosition, in base alla configurazione del database.

    1. Se il database di origine è configurato con gtid_mode impostato su ON, utilizzare il valore gtidExecuted del file @.json per aggiungere l'estrazione.

      Esempio che utilizza il posizionamento GTIDSET, basato sul valore gtidExecuted:

      ADD EXTRACT extsrc, TRANLOG GTIDSET "1174b383-3441-11e8-b90a-c80aa9429920:1-9,\n1174b383-3441-11e8-b90a-c80aa9429921:1-9"
    2. Se per il database di origine gtid_mode è impostato su OFF, utilizzare i valori binlogFile e binlogPosition del file @.json durante l'aggiunta dell'estrazione.

      Un esempio che utilizza il posizionamento LOGNUM e LOGPOS, basato sui valori binlogFile e binlogPosition:

      ADD EXTRACT extsrc, TRANLOG, LOGNUM 5 LOGPOS 1289
  3. Completare infine la configurazione di Oracle GoldenGate aggiungendo i processi riportati di seguito.

    1. Percorso corrispondente per l'estrazione

    2. Un percorso di distribuzione, se necessario

    3. Replicat da consegnare al database di destinazione

  4. Avviare i processi Oracle GoldenGate e monitorare Extract e Replicat per confermare che sono in esecuzione correttamente e che il ritardo viene ridotto quasi in tempo reale.