Come implementare ETL con MySQL?

1

Ho un database MySQL legacy (A) e una nuova struttura revisionata per il database MySQL (B). Il problema numero uno è che il database deve essere attivo e continua a ricevere i dati dalle app precedenti.

Ciò di cui ho bisogno è spostare costantemente i dati dalla vecchia struttura dati a quella nuova. Lo spostamento non è 1: 1 ma è soggetto alla trasformazione dei dati.

Fino ad ora ho realizzato un sistema che ha sia DB (A & B) sotto lo stesso host che realizza la replica MySQL per DB (A) (readonly). Quindi, eseguendo una sostituzione, selezionare DB (B) per i nuovi record aggiornati. Tengo traccia delle nuove modifiche con una data / ora sull'aggiornamento della colonna current_timestamp sulle tabelle chiave soggette al trasferimento dei dati.

Questo approccio funziona ma è molto laborioso e richiede molto tempo e risorse per la sincronizzazione. E accoppia anche i due DB. Ho il problema che il DB legacy deve rimanere sullo stesso host del nuovo per eseguire la sostituzione ... selezionare gli script sql.

Hai qualche idea migliore su come risolvere un problema come questo? (Sto pensando di usare i file CSV come media per la sincronizzazione, ma non sono sicuro di quanto migliorerà la situazione)

Grazie per qualsiasi consiglio.

    
posta koalaok 07.11.2016 - 09:11
fonte

1 risposta

1

Hai preso in considerazione l'utilizzo di uno dei metodi di replica del database?

Esistono diversi approcci principali per la replica del database MySQL . L'approccio che può gestire il caso è "Replica Binlog".

Questo metodo (a volte indicato come change data capture - CDC) utilizza il binlog di MySQL. Il binlog di MySQL mantiene un registro ordinato di ogni operazione eseguita dal database.

Questo approccio consente la replica quasi in tempo reale su scala e non blocca né influisce sulle prestazioni del database.

Supporta inoltre le eliminazioni e le alterazioni delle tabelle e pertanto consente la replica uno-a-uno.

Controlla questo per maggiori dettagli: link

    
risposta data 31.07.2017 - 11:25
fonte

Leggi altre domande sui tag