Limitazioni
La replica in entrata al servizio MySQL HeatWave non supporta alcune configurazioni possibili per la replica MySQL.
- È supportata solo la replica basata su righe. Questo formato di log binario è quello predefinito in MySQL versione 5.7 e successive. Replica basata su istruzioni e replica mista non supportate.
Nota
MySQL 5.7 ha un bug noto in cui l'istruzioneDROP TEMPORARY TABLEviene erroneamente registrata nel log binario basato su righe e la replica basata su righe non riesce. MySQL 5.7 è disponibile nella sezione Sustaining Support da ottobre 2023 e non verranno fornite ulteriori correzioni di bug in base alla Oracle Lifetime Support Policy. - È supportata solo la replica asincrona. Replica semi-sincrona non supportata.
- È supportata solo la replica da una singola origine. Replica multi-origine non supportata.
- Un canale può supportare un massimo di 30 filtri canale.
- Le modifiche allo schema
mysqlnon vengono replicate e causano l'arresto della replica. - Quando viene eseguito l'upgrade di un sistema DB High Availability, il canale di replica in entrata viene sospeso. Il canale viene ripreso al termine del processo di aggiornamento.
- È possibile replicare solo le istruzioni per le quali il nome utente dell'applier dispone del privilegio per l'esecuzione. La replica non riesce se il nome utente dell'applier non dispone di privilegi sufficienti per eseguire alcuna istruzione letta dai log binari del server di origine. La lista di privilegi è limitata ai privilegi concessi all'amministratore del sistema DB. Vedere Privilegi MySQL predefiniti.
- Prima di MySQL 8.2, il nome utente nella clausola
DEFINERdelle istruzioniCREATE VIEW,CREATE PROCEDUREeCREATE FUNCTIONdeve essere uguale al nome utente dell'applier per replicare correttamente queste istruzioni. In MySQL 8.2 o versioni successive, l'utente applier deve disporre del privilegioSET_ANY_DEFINERper replicare le istruzioniCREATE VIEW,CREATE PROCEDUREeCREATE FUNCTIONcon clausolaDEFINERcontenente un altro nome utente. - I sistemi DB (MySQL 8.3.0 o versioni successive) creati prima di maggio 2024 che non dispongono del privilegio
TRANSACTION_GTID_TAGdevono essere aggiornati per replicare le transazioni con tag GTID. - Nella replica asincrona, sia i sistemi DB di origine che quelli di destinazione possono essere sistemi DB in lettura-scrittura e il cluster HeatWave associato può essere gestito in modo indipendente. Tuttavia, poiché è presente un canale di replica nel mezzo, le azioni eseguite all'origine possono influire sulla funzionalità del sistema DB di destinazione.
- Quando le istruzioni
ALTER TABLE <table_name> SECONDARY_LOADeALTER TABLE <table_name> SECONDARY_UNLOADvengono replicate in un sistema DB di destinazione, non caricano né scaricano i dati nel cluster HeatWave collegato al sistema DB di destinazione, se presente.Ciò consente di impostare la replica tra i sistemi DB in cui l'origine dispone di un cluster HeatWave, ma la destinazione non dispone di un cluster HeatWave, nonché nei sistemi DB High Availability in cui solo il sistema DB primario dispone di un cluster HeatWave. Tuttavia, quando l'istruzione
ALTER TABLE <table_name> SECONDARY_LOADviene replicata, i metadati di caricamento secondari vengono aggiornati nel dizionario dati MySQL. Poiché i metadati di caricamento secondari vengono consultati al momento del recupero, se il sistema DB di destinazione viene riavviato, anche le nuove tabelle di cui vengono replicate le istruzioni DDL di caricamento secondario vengono prese in considerazione per il ricaricamento nel cluster HeatWave nel sistema DB di destinazione. - Puoi caricare o scaricare le tabelle in modo indipendente nel cluster HeatWave sia nei sistemi DB di origine che in quelli di destinazione. Tuttavia, se carichi prima una tabella nel cluster HeatWave nel sistema DB di destinazione e poi tenti di caricare la stessa tabella nel cluster HeatWave nel sistema DB di origine, potrebbe causare l'interruzione del canale di replica e in tali casi viene generato un errore simile al seguente:
Ciò si verifica perché l'istruzione DDLReplica SQL for channel 'replication_channel': Worker 1 failed executing transaction '<transaction_id>' at source log binary-log.<number>, end_log_pos <number>; Error 'Secondary engine operation failed. Table already has a secondary engine defined.' on query. Default database: ''. Query: 'ALTER TABLE <table_name> SECONDARY_ENGINE=RAPID', Error_code: MY-003889ALTER TABLE <table_name> SECONDARY_ENGINE = RAPIDgenerata dal caricamento viene replicata ma non riesce nel sistema DB di destinazione perché la tabella corrispondente è già caricata nel cluster HeatWave e dispone già diSECONDARY_ENGINE = RAPIDimpostato. - Quando il cluster HeatWave viene eliminato o ricreato nel sistema DB di origine, tutte le tabelle caricate in precedenza vengono scaricate dal cluster HeatWave nel sistema DB di origine e le stesse tabelle vengono scaricate dal cluster HeatWave anche nel sistema DB di destinazione. Questo perché quando il cluster HeatWave nel sistema DB di origine viene eliminato o ricreato, l'impostazione
SECONDARY_ENGINEper tutte le tabelle caricate in precedenza nel sistema DB di origine viene reimpostata su NULL. Quando l'impostazioneSECONDARY_ENGINEper una tabella viene reimpostata nel sistema DB di origine, l'impostazioneSECONDARY_ENGINEper la stessa tabella viene reimpostata su NULL anche nel sistema DB di destinazione, il che comporta lo scaricamento della tabella dal cluster HeatWave nel sistema DB di destinazione. - Se si desidera replicare le tabelle esterne di Lakehouse, si consiglia di non impostare il canale su
GENERATE_IMPLICIT_PRIMARY_KEYper le tabelle senza chiave primaria. La replica si interrompe quando si modifica una tabella InnoDB con una chiave primaria generata in una tabella Lakehouse. - Nelle versioni precedenti a 8.4.0-u2, se il sistema DB di destinazione dispone di un cluster HeatWave arrestato (inattivo), il canale di replica non può applicare alcuna istruzione DDL che crei o modifichi una tabella esterna Lakehouse. Il canale di replica si interromperà.
- Nelle versioni precedenti a 8.4.0-u2, anche se il caricamento dati viene saltato, il canale di replica può interrompersi se MySQL HeatWave Lakehouse è abilitato nel sistema DB di destinazione e non dispone dell'accesso in lettura e lista ai file specificati nell'attributo motore della tabella esterna Lakehouse.