MySQL ShellユーティリティおよびOracle GoldenGateを使用したMySQLからMySQLへの正確なインスタンス化

正確なインスタンス化の方法では、ソース・データベースからターゲット・データベースへのデータの初期ロードが可能ですが、ソース・データベースはアプリケーションの更新のためにオンラインのままになります。この方法では、ターゲット・データベースに重複データを持たず、ReplicatでHANDLECOLLISIONSを使用する必要なく、変更データの取得および配信プロセスを正確に位置指定できます。

Oracle GoldenGate for MySQLの正確なインスタンス化では、MySQL Shellのダンプおよびダンプ・ロード・ユーティリティが使用され、MySQLソース・データベースとMySQLターゲット・データベース間でのみサポートされます。

この方法では、MySQL Shellをインストールする必要があります。インストール手順は、次のリンクから確認できます:

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

MySQL Shellのダンプおよびダンプ・ロード・ユーティリティの詳細および制限事項は、次のリンクを参照してください:

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

MySQL Shellダンプ・ユーティリティを使用して、要件に応じてMySQLのインスタンス、スキーマまたは表のいずれかをエクスポートします。次に、MySQLダンプ・ロード・ユーティリティを使用してオブジェクトをターゲット・データベースにロードし、その後、GoldenGate ExtractおよびReplicatを構成して、ソース・データベースからターゲット・データベースに継続的な変更データをレプリケートします。

MySQL Shellダンプ・ユーティリティでは、複数のエクスポート・ファイルが作成されます。そのうちの1つは@.jsonファイルです。このファイルは、ソース・データベースに追加する際にExtractの位置を判別するために必要です。

ソース・インスタンスからのスキーマ・ダンプを使用した正確なインスタンス化の方法の例を次に示します。その後、ターゲット・インスタンスにロードし、変更データ・レプリケーション用にOracle GoldenGateを構成します:
  1. MySQL Shellに接続します。MySQL Shellでサポートされる接続オプションの詳細は、次のリンクを参照してください: https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-connections.html
    mysqlsh –mysqlx -u username -h hostname -P port
  2. MySQL Shellに接続したら、JavaScriptモードであることを確認します。JS >プロンプトが表示されることを確認します。SQLモードの場合、\jsスイッチを使用してJavaScriptモードに切り替えます。
    MySQL sourcehost:33060+ ssl SQL > \js
  3. グローバル変数local_infileONに設定されていることを確認します。
    MySQL sourcehost:33060+ ssl JS > \sql SHOW GLOBAL VARIABLES LIKE
        ‘local_infile’;
    local_infile変数がOFFに設定されている場合は、次のコマンドで有効にします:
    MySQL sourcehost:33060+ ssl JS > \sql SET GLOBAL local_infile = ON;
  4. 次に、次のいずれかの関数を使用して、エクスポートするインスタンス、スキーマまたは表のいずれかをエクスポートします。
    util.dumpInstance(outputUrl[, options]) 
    util.dumpSchemas(schemas, outputUrl[,  options])
    util.dumpTables(schema, tables, outputUrl[, options])
    この例では、hrスキーマを~/dumps/hr-schema-srcフォルダにダンプします:
    MySQL sourcehost:33060+ ssl JS >util.dumpSchemas([“hr”], “~/dumps/hr-schema-src”)
  5. エクスポートが完了したら、util.loadDumpユーティリティを使用してスキーマをターゲット・インスタンスにインポートします。

    ノート:

    ターゲット・インスタンスがソースとは異なるシステム上にある場合は、エクスポートされたファイルをターゲット・システムにコピーする必要があります。
    MySQL targethost:33060+ ssl JS >util.loadDump(“~/dumps/hr-schema-tgt”, {schema: “tgt-hr”})
  6. データ・ロード・ユーティリティが完了したら、ソース・ダンプ・フォルダの@.jsonファイルを開きます。このファイルには、ダンプに含まれている最後にコミットされたトランザクションが含まれ、そのトランザクション値を使用して変更データExtractを構成する必要があります。@.jsonファイルのトランザクション情報の例を次に示します:
    "binlogFile": "binlog.000005",
    "binlogPosition": 1289,
          "gtidExecuted": "1174b383-3441-11e8-b90a-c80aa9429920:1-9,\n1174b383-3441-11e8-b90a-c80aa9429921:1-9"
    
  7. データベース構成に基づいて、gtidExecuted値、またはbinlogFile値とbinlogPosition値のいずれかを使用して、ソース・データベースにExtractを追加します。

    1. ソース・データベースがgtid_modeONに設定して構成されている場合は、@.jsonファイルのgtidExecuted値を使用してExtractを追加します。

      gtidExecuted値に基づくGTIDSETによる位置指定の使用例:
      ADD EXTRACT extsrc, TRANLOG GTIDSET "1174b383-3441-11e8-b90a-c80aa9429920:1-9,\n1174b383-3441-11e8-b90a-c80aa9429921:1-9"
    2. ソース・データベースでgtid_modeOFFに設定されている場合は、Extractを追加するときに@.jsonファイルのbinlogFileおよびbinlogPosition値を使用します。

      binlogFileおよびbinlogPositionの値に基づくLOGNUMおよびLOGPOSによる位置指定の使用例:
      ADD EXTRACT extsrc, TRANLOG, LOGNUM 5 LOGPOS 1289
  8. 最後に、次のプロセスを追加して、Oracle GoldenGateの構成を完了します:

    1. Extractの対応する証跡

    2. 必要に応じて分散パス

    3. ターゲット・データベースに配信するReplicat

  9. Oracle GoldenGateプロセスを起動し、ExtractおよびReplicatを監視して、正しく実行されていること、およびラグがほぼリアルタイムに減少していることを確認します。