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

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

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

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

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

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

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

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

次に、ソース・インスタンスからのスキーマ・ダンプを使用してターゲット・インスタンスにロードし、その後に変更データ・レプリケーション用のOracle GoldenGateの構成を使用した正確なインスタンス化のサンプル方法を示します: 1。MySQLシェルに接続します。MySQLシェルでサポートされる接続オプションの詳細は、次のリンクを参照してください: 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. MySQLシェルに接続したら、JavaScriptモードであることを確認します。JS >プロンプトが表示されます。SQLモードの場合は、\jsスイッチを使用してJavaScriptモードに切り替えます。

    MySQL sourcehost:33060+ ssl SQL > \js
  2. グローバル変数local_infileがONに設定されていることを確認します。

    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;
  3. 次に、次のいずれかの関数を使用して、エクスポートするインスタンス、スキーマまたは表のいずれかをエクスポートします。

    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")
  4. エクスポートが完了したら、util.loadDumpユーティリティを使用してスキーマをターゲット・インスタンスにインポートします。ノート:ターゲット・インスタンスがソースとは異なるシステム上にある場合は、エクスポートされたファイルをターゲット・システムにコピーする必要があります。

<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. データ・ロード・ユーティリティが完了したら、ソース・ダンプ・フォルダの@.jsonファイルを開きます。このファイルには、ダンプに含まれる最後にコミットされたトランザクションが含まれ、変更データExtractはそのトランザクション値を使用して構成する必要があります。@.jsonファイルのトランザクション情報の例を次に示します。

    "binlogFile": "binlog.000005",
    "binlogPosition": 1289,
          "gtidExecuted": "1174b383-3441-11e8-b90a-c80aa9429920:1-9,\n1174b383-3441-11e8-b90a-c80aa9429921:1-9"
  2. データベース構成に基づいて、gtidExecuted値またはbinlogFileおよびbinlogPosition値を使用してExtractをソース・データベースに追加します。

    1. ソース・データベースがgtid_modeをONに設定して構成されている場合は、@.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_modeがOFFに設定されている場合は、Extractの追加時に@.jsonファイルのbinlogFileおよびbinlogPosition値を使用します。

      binlogFileおよびbinlogPosition値に基づくLOGNUMおよびLOGPOSの位置指定の使用例:

      ADD EXTRACT extsrc, TRANLOG, LOGNUM 5 LOGPOS 1289
  3. 最後に、次のプロセスを追加して、Oracle GoldenGateの構成を完了します。

    1. Extractの対応する証跡

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

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

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