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の位置を判別するために必要です。
-
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
-
MySQL Shellに接続したら、JavaScriptモードであることを確認します。
JS >
プロンプトが表示されることを確認します。SQLモードの場合、\js
スイッチを使用してJavaScriptモードに切り替えます。MySQL sourcehost:33060+ ssl SQL > \js
-
グローバル変数
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;
-
次に、次のいずれかの関数を使用して、エクスポートするインスタンス、スキーマまたは表のいずれかをエクスポートします。
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”)
-
エクスポートが完了したら、
util.loadDump
ユーティリティを使用してスキーマをターゲット・インスタンスにインポートします。ノート:
ターゲット・インスタンスがソースとは異なるシステム上にある場合は、エクスポートされたファイルをターゲット・システムにコピーする必要があります。MySQL targethost:33060+ ssl JS >util.loadDump(“~/dumps/hr-schema-tgt”, {schema: “tgt-hr”})
-
データ・ロード・ユーティリティが完了したら、ソース・ダンプ・フォルダの
@.json
ファイルを開きます。このファイルには、ダンプに含まれている最後にコミットされたトランザクションが含まれ、そのトランザクション値を使用して変更データExtractを構成する必要があります。@.jsonファイルのトランザクション情報の例を次に示します:"binlogFile": "binlog.000005", "binlogPosition": 1289, "gtidExecuted": "1174b383-3441-11e8-b90a-c80aa9429920:1-9,\n1174b383-3441-11e8-b90a-c80aa9429921:1-9"
-
データベース構成に基づいて、
gtidExecuted
値、またはbinlogFile
値とbinlogPosition
値のいずれかを使用して、ソース・データベースにExtractを追加します。-
ソース・データベースが
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"
-
ソース・データベースで
gtid_mode
がOFF
に設定されている場合は、Extractを追加するときに@.json
ファイルのbinlogFile
およびbinlogPosition
値を使用します。binlogFile
およびbinlogPosition
の値に基づくLOGNUM
およびLOGPOS
による位置指定の使用例:ADD EXTRACT extsrc, TRANLOG, LOGNUM 5 LOGPOS 1289
-
-
最後に、次のプロセスを追加して、Oracle GoldenGateの構成を完了します:
-
Extractの対応する証跡
-
必要に応じて分散パス
-
ターゲット・データベースに配信するReplicat
-
-
Oracle GoldenGateプロセスを起動し、ExtractおよびReplicatを監視して、正しく実行されていること、およびラグがほぼリアルタイムに減少していることを確認します。