Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso sincronizzare due tabelle MySQL che hanno le stesse strutture e server diversi

Ci sono alcune opzioni. Uno è impostare replica all'interno di MySQL, che copierà automaticamente i dati avanti e indietro tra i server e li manterrà sincronizzati automaticamente, con una granularità di pochi secondi mentre i dati volano in giro. Lo svantaggio è che devi esporre almeno il server master alla rete per consentire le connessioni TCP.

Esternamente puoi eseguire mysqldump regolari sul server A, copiare sul server B, caricare in mysql e il gioco è fatto. Questo avrà una granularità dell'intervallo di tempo in cui esegui la sequenza di dump/copia/caricamento. Lo svantaggio è che mysqldump blocca le tabelle mentre funziona. Se disponi di un database di grandi dimensioni, verrai bloccato dalle tabelle del serverA mentre il dump è in corso e il serverB verrà bloccato quando i dati vengono caricati. E caricare un dump è molto più lento che eseguire il dump in primo luogo, poiché mysql esegue tutti i tipi di pulizie interne (aggiornamenti delle chiavi, aggiornamenti dei metadati delle tabelle, ecc...) durante il caricamento.

Per la terza opzione, puoi scrivere un sincronizzatore che confronti le righe tra i due database e esegua gli aggiornamenti se necessario. Tuttavia, stai trasferendo il contenuto di un server all'altro ed eseguendo operazioni riga per riga. Inoltre, è necessario gestire anche eventuali aggiornamenti dipendenti di chiave esterna / relazione figlio, e questo si complicherà in fretta. A quel punto potresti invece usare l'opzione mysqldump.

Ovviamente, dovresti aggiornare il tuo MySQL a qualcosa di più moderno. v4.x è molto obsoleto. Dovresti eseguire almeno una versione 5.0, preferibilmente una versione 5.1.