Sto provando a utilizzare MySQL Replication Listener Library per eseguire la replica dei dati tra HostA e HostB.Problemi nell'esecuzione della replica MySQL basata su riga da solo
La replica è basata su istruzioni diverse da righe. So che esiste già una funzionalità incorporata in MySQL, ma voglio farlo da solo --- Leggere tutte le modifiche di riga dal registro bin di HostA e applicare tutte queste modifiche a HostB.
Il problema che sto riscontrando è, non sono in grado di disabilitare temporaneamente i trigger, il che causerà la sincronizzazione dei dati.
Prendete un esempio, supponiamo che il database da sincronizzare sia TestSyncDB e ci sono due tabelle in esso che sono Dati e DataOp. La tabella dati ha un trigger con esso e una volta inserito un record in questa tabella, il trigger genererà un nuovo record per DataOp.
Ora un nuovo record viene inserito in HostA.TestSyncDB.Data, poiché esiste un trigger, quindi saranno effettivamente aggiunti due record al database e la libreria del listener di replica restituirà due query, ad esempio:
- inserto in valori HostA.TestSyncDB.Data (...)
- inserto in valori HostA.TestSyncDB.DataOp (...) // dal grilletto
Il problema è che se io riprodurre queste due query su HostB, ci saranno tre nuovi record aggiunti alle tabelle in HostA.TestSyncDB, a causa dei trigger. Quindi i dati non hanno mai ragione, mai dopo.
Quindi come risolvere questo? È possibile disabilitare temporaneamente i trigger? In caso contrario, come farlo correttamente come ciò che MySQL Replication fa?