MySQL: Unterstützte Datentypen, Objekte und Vorgänge
Dieser Abschnitt enthält Supportinformationen für Oracle GoldenGate auf MySQL Database.
Oracle GoldenGate für MySQL unterstützt die Zuordnung, Filterung und Transformation von Quelldaten, sofern in diesem Dokument nichts anderes angegeben ist, sowie die Replikation von Daten, die von anderen von Oracle GoldenGate unterstützten Quelldatenbanken abgeleitet werden, in MySQL-Datenbanken.
Unterstützte Datentypen in Oracle GoldenGate für MySQL
Oracle GoldenGate für MySQL unterstützt die folgenden Datentypen:
-
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
Einschränkungen und Klarstellungen
Wenn Sie Oracle GoldenGate für MySQL ausführen, beachten Sie Folgendes:
-
Funktionsindizes werden für Capture oder Delivery nicht unterstützt.
-
Oracle GoldenGate unterstützt die Typen
BLOBoderTEXTnicht, wenn sie als Primärschlüssel verwendet werden. -
Oracle GoldenGate unterstützt einen
TIME-Typbereich von 00:00:00 bis 23:59:59. -
Oracle GoldenGate unterstützt Zeitstempeldaten von
0001/01/03:00:00:00bis9999/12/31:23:59:59. Wenn ein Zeitstempel von GMT in Ortszeit konvertiert wird, gelten diese Grenzwerte auch für den resultierenden Zeitstempel. Je nach Zeitzone kann die Konvertierung Stunden addieren oder subtrahieren, was dazu führen kann, dass der Zeitstempel den unteren oder oberen unterstützten Grenzwert überschreitet. -
Oracle GoldenGate unterstützt keine negativen Datumsangaben.
-
Die Unterstützung von Reichweite und Genauigkeit für Gleitkommazahlen hängt vom Hostrechner ab. Im Allgemeinen ist die Genauigkeit auf 16 signifikante Stellen genau, aber Sie sollten die Datenbankdokumentation überprüfen, um die erwarteten Näherungen zu ermitteln. Oracle GoldenGate rundet oder schneidet Werte ab, die den unterstützten Nachkommastellenwert überschreiten.
-
Wenn Sie den Typ
ENUMin der nicht-striktensql_modeverwenden, hindert Sie die nicht-striktesql_modenicht daran, einen ungültigen Wert fürENUMeinzugeben, und ein Fehler wird zurückgegeben. Um diese Situation zu vermeiden, führen Sie einen der folgenden Schritte aus:-
Verwenden Sie
sql_modealsSTRICT, und starten Sie Extract neu. Dadurch wird verhindert, dass Benutzer ungültige Werte für einen der Datentypen eingeben. Ein IE-Benutzer kann nur gültige Werte für diese Datentypen eingeben. -
Verwenden Sie weiterhin nicht-strikte
sql_mode, aber keineENUM-Datentypen. -
Verwenden Sie die nicht-strikte
sql_mode, und verwenden SieENUM-Datentypen mit gültigen Werten in der Datenbank. Wenn Sie ungültige Werte angeben, akzeptiert die Datenbank diese automatisch, und Extract wird beendet.
-
-
Tabelle mit einer einzelnen Spalte wird für den JSON-Datentyp nicht unterstützt. Extract wird abgebrochen, wenn es für eine Tabelle konfiguriert ist, die eine einzelne Spalte des Datentyps
JSONaufweist. -
JSON-Datentyp unterstützt CDR nicht. Die folgende Meldung wird in der Berichtsdatei protokolliert, wennGETBEFORECOLSkonfiguriert ist und die Tabelle Spalten mit DatentypenJSONenthält:INFO OGG-06556 The following columns will not be considered for CDRDie Einschränkungen für CDR gelten für Fälle, in denen
GETBEFORECOLSundCOMPARECOLSverwendet werden. -
Der Extract MySQL wird nicht abgebrochen, und die Spaltenwerte
ENUMwerden verarbeitet, die nicht in der Tabellendefinition als "invalid_enum" definiert sind.
Nicht unterstützte MySQL-Datentypen
Oracle GoldenGate für MySQL unterstützt die folgenden Datentypen nicht:
Alle räumlichen Typen (GEOMETRY usw.) und SET.
Alle folgenden GEOMETRY-Typen werden in MySQL nicht unterstützt:
-
PUNKT
-
LINESTRING
-
POLYGON
-
MULTIPOINT
-
MULTILINESTRING
-
MULTIPOLYGON
-
GEOMCOLLECTION Hinweis: Extract wird abgebrochen, wenn es für die Erfassung aus Tabellen konfiguriert ist, die einen der nicht unterstützten Datentypen enthalten. Stellen Sie daher sicher, dass Extract nicht für die Erfassung aus Tabellen konfiguriert ist, die Spalten nicht unterstützter Datentypen enthalten.
Unterstützte Objekte und Vorgänge für MySQL
Oracle GoldenGate für MySQL unterstützt die folgenden Objekte und Vorgänge:
-
Oracle GoldenGate unterstützt die folgenden DML-Vorgänge für Quell- und Zieldatenbank-Transaktionstabellen:
-
Vorgang einfügen
-
Aktualisierungsvorgang (komprimiert eingeschlossen)
-
Löschvorgang (komprimiert eingeschlossen)
-
Vorgang abschneiden
-
-
Oracle GoldenGate unterstützt die Extraktion und Replikation von DDL-(Data Definition Language-)Vorgängen.
-
Oracle GoldenGate unterstützt Transaktionstabellen bis zur vollständigen Zeilengröße und der maximalen Spaltenanzahl, die von MySQL und der verwendeten Datenbankspeicher-Engine unterstützt werden. InnoDB unterstützt bis zu 1017 Spalten.
-
Oracle GoldenGate unterstützt die Extraktion generierter Spalten.
-
Replikation ist für eine generierte Spalte MySQL nicht zulässig. Daher müssen alle generierten Quellspaltendaten einer nicht generierten Spalte zugeordnet werden.
-
Oracle GoldenGate unterstützt das Spaltenattribut
AUTO_INCREMENT. Der Inkrementwert wird von Extract aus dem Binärlog erfasst und in einem Replicat-Einfügevorgang auf die Zieltabelle angewendet. -
Oracle GoldenGate kann gleichzeitig mit der nativen MySQL-Replikation ausgeführt werden.
-
Oracle GoldenGate unterstützt das Feature
DYNSQLfür MySQL.
Hinweis: XA-Transaktionen werden für die Erfassung nicht unterstützt. XA-Transaktionen, die in binlog protokolliert werden, führen zum Abbruch von Extract. Daher dürfen Sie keine XA-Transaktionen für eine Datenbank verwenden, für die Extract konfiguriert ist. Wenn XA-Transaktionen für Datenbanken verwendet werden, die nicht für Oracle GoldenGate Capture konfiguriert sind, schließen Sie diese Datenbanken mit dem Parameter binlog-ignore-db in der Serverkonfigurationsdatei MySQL von der Anmeldung bei MySQL-Binärlogs aus.
Die Unterstützung der automatischen Heartbeat-Tabelle ist wie folgt eingeschränkt:
-
Stellen Sie sicher, dass die Datenbank, in der die Heartbeat-Tabelle erstellt werden soll, bereits vorhanden ist, um Fehler beim Hinzufügen der Heartbeat-Tabelle zu vermeiden.
-
In der Verzögerungsansicht der Heartbeat-Historie werden die Informationen in Feldern wie
heartbeat_received_ts,incoming_heartbeat_ageundoutgoing_heartbeat_agein Bezug auf die Systemzeit angezeigt. Stellen Sie sicher, dass die Betriebssystemzeit mit den richtigen und aktuellen Zeitzoneninformationen eingerichtet ist. -
Position nach Ende der Datei (EOF) wird in MySQL unterstützt. Für Oracle GoldenGate Extract for MySQL wird die Position entsprechend dem Dateiende bestimmt, und Transaktionen werden ab dort gelesen. Die EOF-Position ist nicht genau, wenn kontinuierlich Daten in das Binärlog geschrieben werden.
Der Extract wird hinzugefügt und geändert mit:
ADD EXTRACT *group_name*, TRANLOG, EOFALTER EXTRACT *group_name*, EOF
Details zur Unterstützung von Objekten und Vorgängen in MySQL-DDL
Im Folgenden finden Sie eine Liste der MySQL-Objekte und Vorgangstypen, die Oracle GoldenGate für die Erfassung und Replikation von DDL-Vorgängen unterstützt.
-
Die DDL-Replikation für MySQL wird nur zwischen MySQL-Datenbanken als Quellen und Ziele unterstützt.
-
Die Extraktion und Replikation von DDL-Vorgängen wird für MySQL 8.0 und höher unterstützt. Folgende DDL-Vorgänge werden unterstützt:
-
CREATE TABLE(ausgenommenCREATE TABLE AS SELECT) -
DROP TABLE -
TRUNCATE TABLE(Unterstützung unterGETTRUNCATES) -
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
-
-
Bei MySQL 8.0 wird die lokale und Remote-DDL-Erfassung unterstützt.
-
TRUNCATE-Vorgänge werden als DML über den Extract- und Replicat-ParameterGETTRUNCATESunterstützt und erfordern keine Konfiguration von Oracle GoldenGate für die DDL-Unterstützung MySQL. -
Die DDL-Replikation wird in einer bidirektionalen Oracle GoldenGate-Konfiguration nicht unterstützt.
-
Die DDL-Replikation wird für cloudbasierte Datenbankservices nicht unterstützt, bei denen die Datenbankeinstellung
binlog_row_metadatanicht aufFULLgesetzt werden kann.
Nicht unterstützte Objekte und Vorgänge für MySQL
Oracle GoldenGate für MySQL unterstützt die folgenden Objekte und Vorgänge nicht:
-
Unsichtbare Spalte
-
Das Oracle GoldenGate-Feature
BATCHSQLfür Replicat. -
Die folgenden Zeichensätze werden nicht unterstützt:
-
ULIB_CS_ARMSCII8, /* American National 166-9 */
-
ULIB_CS_GEOSTD8, /* Geogian Standard */
-
ULIB_CS_KEYBCS2, /* Kemennicky MS-DOS
-
-
Das Erfassen von NLS-LOB-Daten mit den Optionen
FETCHMOCOLSundFETCHMODCOLEXCEPTTABLE wird nicht unterstützt, wenn DDL aktiviert ist. -
Tabellen werden umbenannt.
-
DDL-Anweisungen in Stored Procedures werden nicht unterstützt.
-
Wenn die Zeitzone des Oracle GoldenGate-Installationsservers nicht mit der Zeitzone des Quelldatenbankservers übereinstimmt, unterscheiden sich die an die Zieldatenbank gesendeten TIMESTAMP-Daten von der Quelldatenbank. Bei Oracle GoldenGate-Microservices-Installationen löst Extract die Zeitzone in UTC auf, unabhängig davon, ob die Zeitzonen identisch sind. Bestimmen Sie die Zeitzone der Quelldatenbank, indem Sie die folgende Abfrage ausführen:
select @@system_time_zone;Gibt einen Zeitzonenwert zurück, z.B. PDT.
Erstellen Sie eine Variable im Deployment mit dem Quellextrakt namens
TZ, und setzen Sie sie auf den Wert der Zeitzone der Quelldatenbank. Stoppen Sie anschließend alle ausgeführten Oracle GoldenGate-Prozesse, starten Sie den Administrationsservice neu, und starten Sie dann die Extracts und Replicats. -
Extrahierung und Replikation von und in Views werden nicht unterstützt.
-
Vom Slave angewendete Transaktionen werden in den Relay-Logs und nicht in der
binlogdes Slaves protokolliert. Wenn ein Slave Transaktionen mit derbinlogschreiben soll, die er vom Master empfängt, müssen Sie den Replikations-Slave mit der Option "Log Slave-updates" als 1 inmy.cnfstarten. Dies ist zusätzlich zu den anderen binären Logging-Parametern. Nachdem sich die Transaktionen des Masters in derbinlogdes Slaves befinden, können Sie einen regulären Capture-Prozess auf dem Slave einrichten, um diebinlogdes Slaves zu erfassen und zu verarbeiten.
Einschränkungen von SingleStoreDB-Objekten und -Vorgängen
Oracle GoldenGate für MySQL unterstützt jetzt SingleStoreDB und SingleStoreDB Cloud, jedoch mit den folgenden Einschränkungen:
-
Die Replikation auf Ansichten innerhalb von SingleStoreDB wird nicht unterstützt, da nur die Basistabellen schreibgeschützt sind.
-
Aktualisierungen von Spalten, die Teil des Schlüssels
SHARDsind, werden nicht unterstützt. -
Primärschlüsselaktualisierungen in Tabellen ohne expliziten
SHARD-Schlüssel werden nicht unterstützt. Der Grund dafür ist, dass SingleStoreDB in dieser Situation den Primärschlüssel alsSHARD-Schlüssel zuweist und Aktualisierungen vonSHARD-Schlüsselspalten nicht zulässig sind. -
Das
DBOPTIONS LIMITROWS-Verhalten von Replicat für SingleStoreDB-Tabellen ohne einen Primärschlüssel oder eindeutigen Schlüssel, der über mehrere Partitionen verteilt ist, wird nicht unterstützt. -
Die Parameteroptionen
DBOPTIONS LIMITROWSundNOLIMITROWSwerden für SingleStoreDB nicht unterstützt. -
SingleStoreDB unterstützt keine datenbankübergreifenden Transaktionen. Das bedeutet, dass ein Replicat nur die Zuordnung zu einem einzelnen Schema/einer einzelnen Datenbank unterstützen kann. Dazu gehören Mappings für Checkpoint- und Heartbeat-Tabellen. Daher müssen diese Objekte unter demselben Schema/ derselben Datenbank wie die zu replizierenden Benutzertabellen erstellt werden.
Systemschemas
Die folgenden Schemas oder Objekte werden nicht automatisch von Oracle GoldenGate repliziert, es sei denn, sie werden explizit ohne Platzhalter angegeben.
-
MySQL
-
'information_schema' -
'performance_schema' -
'mysql' -
'sys'
-
-
SingleStore
-
'information_schema' -
'cluster' -
'memsql'
-