MySQL:支援的資料類型、物件及作業
本節包含 MySQL Database 上 Oracle GoldenGate 的支援資訊。
除非本文件另有說明,否則 Oracle GoldenGate for MySQL 支援對應、篩選及轉換來源資料,以及將從 Oracle GoldenGate 支援的其他來源資料庫衍生的資料複製到 MySQL 資料庫中。
Oracle GoldenGate for MySQL 支援的資料類型
Oracle GoldenGate for MySQL 支援下列資料類型:
-
BLOB -
BIGINT -
BINARY -
BIT(M) -
CHAR -
DATE -
DATETIME -
DECIMAL -
DOUBLE -
ENUM -
FLOAT -
INT -
JSON -
LONGBLOB -
LONGTEXT -
MEDIUMBLOB -
MEDIUMINT -
MEDIUMTEXT -
SMALLINT -
TEXT -
TIME -
TIMESTAMP -
TINYBLOB -
TINYINT -
TINYTEXT -
VARBINARY -
VARCHAR -
VECTOR -
YEAR
限制與說明
執行 Oracle GoldenGate for MySQL 時,請注意下列事項:
-
擷取或傳遞不支援功能索引。
-
當作主索引鍵使用時,Oracle GoldenGate 不支援
BLOB或TEXT類型。 -
Oracle GoldenGate 支援從 00:00:00 到 23:59:59 的
TIME類型範圍。 -
Oracle GoldenGate 支援從
0001/01/03:00:00:00到9999/12/31:23:59:59的時戳資料。如果時間戳記是從 GMT 轉換成當地時間,這些限制也會套用至產生的時間戳記。視時區而定,轉換可能會增加或減去時數,這可能會導致時間戳記超過支援的下限或上限。 -
Oracle GoldenGate 不支援負數日期。
-
浮點數的支援範圍和精確度取決於主機機器。一般而言,精確度為 16 個有效位數,但您應複查資料庫文件以決定預期的近似值。Oracle GoldenGate 會捨入或截斷超過支援精確度的值。
-
當您在非嚴格
sql_mode中使用ENUM類型時,非嚴格的sql_mode不會阻止您輸入無效的ENUM值,並會傳回錯誤。為了避免這種情況,請執行下列其中一項動作:-
使用
sql_mode作為STRICT,然後重新啟動 Extract。這可防止使用者為任何資料類型輸入無效值。IE 使用者只能輸入這些資料類型的有效值。 -
繼續使用非嚴格的
sql_mode,但不要使用ENUM資料類型。 -
繼續使用非嚴格的
sql_mode,並使用含有資料庫中有效值的ENUM資料類型。如果您指定無效的值,資料庫將會無訊息地接受這些值,Extract 將會中止。
-
-
JSON 資料類型不支援單一資料欄的表格。若為具有單一資料欄
JSON資料類型的表格設定 Extract,將會異常中止。 -
JSON資料類型不支援 CDR。如果已設定GETBEFORECOLS,且表格的資料欄為JSON資料類型,則下列訊息會記錄在報表檔案中:INFO OGG-06556 The following columns will not be considered for CDRCDR 的限制適用於使用
GETBEFORECOLS和COMPARECOLS的情況。 -
MySQL Extract 不會中止並處理未在表格定義中定義為 'invalid_enum' 的
ENUM資料欄值。
非支援的 MySQL 資料類型
Oracle GoldenGate for MySQL 不支援下列資料類型:
所有空間類型 (GEOMETRY 等等) 和 SET。
MySQL 中不支援下列所有 GEOMETRY 類型:
-
積點
-
林斯特林
-
多邊形
-
多點
-
多重投資
-
多邊形
-
GEOMCOLLECTION 注意:如果將 Extract 設定為從包含任何不支援資料類型的表格擷取,就會中止 Extract,以確保 Extract 未設定為從包含不支援資料類型之資料欄的表格擷取。
MySQL 支援的物件和作業
Oracle GoldenGate for MySQL 支援下列物件和作業:
-
Oracle GoldenGate 支援來源和目標資料庫交易表格上的下列 DML 作業:
-
插入作業
-
更新作業 (包括壓縮)
-
刪除作業 (包括壓縮)
-
截斷作業
-
-
Oracle GoldenGate 支援擷取及複製 DDL (資料定義語言) 作業。
-
Oracle GoldenGate 支援的交易表格,最多可支援 MySQL 支援的完整資料列大小和資料欄數目上限,以及目前使用的資料庫儲存引擎。InnoDB 最多支援 1017 個資料欄。
-
Oracle GoldenGate 支援擷取產生的資料欄。
-
不允許複製 MySQL 產生的資料欄,因此任何來源產生的資料欄資料都必須對應至非產生的資料欄。
-
Oracle GoldenGate 支援
AUTO_INCREMENT資料欄屬性。「擷取」會從二進位日誌擷取增量值,並在 Replicat 插入作業中套用至目標表格。 -
Oracle GoldenGate 可以與 MySQL 原生複製同時運作。
-
Oracle GoldenGate 支援 MySQL 的
DYNSQL功能。
注意:擷取不支援 XA 交易,而任何登入 binlog 的 XA 交易都會導致 Extract 中止。因此,您不能對 Extract 設定為擷取的資料庫使用 XA 交易。如果 XA 交易用於未設定 Oracle GoldenGate 擷取的資料庫,則使用 MySQL 伺服器組態檔中的 binlog-ignore-db 參數,將這些資料庫排除在登入 MySQL 二進位日誌之外。
「自動活動訊號表」支援的限制如下:
-
請確定要建立活動訊號表的資料庫已存在,以避免新增活動訊號表時發生錯誤。
-
在活動訊號歷史記錄延遲檢視中,會根據系統時間顯示
heartbeat_received_ts、incoming_heartbeat_age和outgoing_heartbeat_age等欄位中的資訊。您應確定已使用正確與目前時區資訊設定作業系統時間。 -
MySQL 支援依檔案結尾 (EOF) 的位置。Oracle GoldenGate Extract for MySQL 會尋找相對應於檔案結尾的位置,然後從該處開始讀取交易。若持續將資料寫入二進位記錄檔,則 EOF 位置並不準確。
「擷取」使用下列項目新增及更改:
ADD EXTRACT *group_name*, TRANLOG, EOFALTER EXTRACT *group_name*, EOF
MySQL DDL 中物件與作業的支援詳細資訊
以下是 Oracle GoldenGate 支援擷取及複製 DDL 作業的 MySQL 物件和作業類型清單。
-
只有 MySQL 資料庫作為來源和目標時,才支援複製 MySQL 的 DDL。
-
MySQL 8.0 和更新版本支援擷取和複製 DDL 作業。支援的 DDL 作業包括:
-
CREATE TABLE(不包括CREATE TABLE AS SELECT) -
DROP TABLE -
TRUNCATE TABLE(支援使用GETTRUNCATES) -
ALTER TABLE TRUNCATE PARTITION -
ALTER TABLE ADD COLUMN -
ALTER TABLE ADD COLUMN AFTER -
ALTER TABLE DROP COLUMN -
ALTER TABLE MODIFY COLUMN(COLUMN_NAME,TYPE,SIZE) -
ALTER TABLE ADD (constraints) PRIMARY KEY -
ALTER TABLE DROP PRIMARY KEY
-
-
對於 MySQL 8.0,支援本機和遠端 DDL 擷取。
-
透過
GETTRUNCATESExtract 和 Replicat 參數以 DML 的形式支援TRUNCATE作業,不需要設定 Oracle GoldenGate 以提供 MySQL DDL 支援。 -
Oracle GoldenGate 雙向組態不支援 DDL 複製。
-
無法將
binlog_row_metadata資料庫設定設為FULL的雲端資料庫服務不支援 DDL 複製。
MySQL 的非支援物件與作業
Oracle GoldenGate for MySQL 不支援下列物件和作業:
-
不顯示的資料欄
-
適用於 Replicat 的 Oracle GoldenGate
BATCHSQL功能。 -
不支援下列字元集:
-
ULIB_CS_ARMSCII8,/* 美國國家 166-9 */
-
ULIB_CS_GEOSTD8,/* 地質標準 */
-
ULIB_CS_KEYBCS2, /* Kemennicky MS-DOS
-
-
啟用 DDL 時,不支援使用
FETCHMOCOLS和FETCHMODCOLEXCEPTTABLE 選項擷取 NLS LOB 資料。 -
重新命名表格。
-
不支援預存程序中的 DDL 敘述句。
-
當 Oracle GoldenGate 安裝伺服器的時區與來源資料庫伺服器的時區不符時,傳送至目標資料庫的 TIMESTAMP 資料將會與來源資料庫不同。對於 Oracle GoldenGate Microservices 安裝,無論時區是否相同,Extract 都會將時區解析為 UTC。執行下列查詢以決定來源資料庫時區:
select @@system_time_zone;這會傳回時區值,例如 PDT。
在包含來源 Extract (稱為
TZ) 的部署中建立變數,並將其設為來源資料庫時區的值。在此之後,請停止所有執行中的 Oracle GoldenGate 處理作業並重新啟動「管理服務」,然後啟動 Extract 和 Replicat。 -
不支援從視觀表擷取和複寫。
-
此從屬站套用的交易會登入中繼日誌,不會登入從屬站的
binlog。如果您要從主從binlog寫入交易,則需要在my.cnf中以日誌從屬更新選項 1 啟動複製從屬站。除了其他二進位記錄日誌參數之外。主從的交易在從屬站的binlog之後,您就可以在從屬站上設定一般擷取,以擷取和處理從屬站的binlog。
SingleStoreDB 物件和作業的限制
Oracle GoldenGate for MySQL 現在支援 SingleStoreDB 和 SingleStoreDB 雲端,但有下列限制:
-
不支援複製 SingleStoreDB 內的視觀表,因為只有基礎表格可寫入。
-
不支援更新
SHARD索引鍵中的資料欄。 -
不支援對沒有明確
SHARD索引鍵的表格進行主索引鍵更新。這是因為在此情況下,SingleStoreDB 會將主索引鍵指派為SHARD索引鍵,而且不允許更新SHARD索引鍵資料欄。 -
不支援將 SingleStoreDB 表格的 Replicat
DBOPTIONS LIMITROWS行為 (不含分散在多個分割區中的主索引鍵或唯一索引鍵)。 -
SingleStoreDB 不支援
DBOPTIONS LIMITROWS和NOLIMITROWS參數選項。 -
SingleStoreDB 不支援跨資料庫交易,這表示 Replicat 只支援對單一綱要 / 資料庫的對應。這包括檢查點和活動訊號表的對應,因此必須在要複製之使用者表格的相同綱要 / 資料庫下建立這些物件。
系統綱要
除非在沒有萬用字元的情況下明確指定下列綱要或物件,否則 Oracle GoldenGate 不會自動複製這些綱要或物件。
-
MySQL
-
'information_schema' -
'performance_schema' -
'mysql' -
'sys'
-
-
SingleStore
-
'information_schema' -
'cluster' -
'memsql'
-