使用 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 傾印公用程式會建立多個匯出檔案,其中一個是 @.json 檔案。將 Extract 新增至來源資料庫時,需要使用此檔案來決定其位置。
以下是一個使用來源執行處理之綱要傾印的精確建立方法範例,然後載入目標執行處理,接著是 Oracle GoldenGate 的組態來進行變更資料複製:1。連線至 MySQL Shell。如需 MySQL Shell 支援之連線選項的詳細資訊,請參閱此連結: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>
-
連線至 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公用程式將綱要匯入目標執行處理。注意:如果您的目標執行處理位於與來源不同的系統上,則必須將匯出的檔案複製到目標系統。
<pre class="copy"><code>MySQL targethost:33060+ ssl JS >util.loadDump("~/dumps/hr-schema-tgt", {schema: "tgt-hr"})</code></pre>
-
資料載入公用程式完成時,請開啟來源傾印資料夾中的
@.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。使用
GTIDSET位置的範例 (根據gtidExecuted值):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值。使用
LOGNUM和LOGPOS位置的範例 (根據binlogFile和binlogPosition值):ADD EXTRACT extsrc, TRANLOG, LOGNUM 5 LOGPOS 1289
-
-
最後,新增下列處理作業來完成 Oracle GoldenGate 組態:
-
擷取的對應歷程檔
-
分佈路徑 (如果需要)
-
要傳遞至目標資料庫的 Replicat
-
-
啟動 Oracle GoldenGate 處理作業並監督 Extract 和 Replicat,以確認它們是否正確執行,並且將延遲縮短至近乎即時。