2013-03-22 12 views
9

Se ho un tavolo (chiamiamolo orders) su un mio server, denominato, ad esempio, local. E ho questo stesso tavolo un altro mio server, chiamato, ad esempio, remote.Come sincronizzare due tabelle MySQL?

Il mio problema è, qual è il modo migliore per sincronizzare queste due tabelle?

Vorrei una soluzione che sostituisce un registro se il locale è diverso da quello remoto. E inserisci il registro se non esiste sulla tabella locale.

avevo provato utilizzando il dump di un comando dump simile a questo, ma non ha funzionato come previsto:

/usr/bin/mysqldump --defaults-file=~/my/conf.cnf --skip-opt --skip-add-locks --default-character-set=latin1 --disable-keys --no-create-db --no-create-info --dump-date --compress --quick --replace --where='date > DATE_SUB(NOW(), INTERVAL 1 DAY)' mydb orders >> /backup/myDump 

Come posso fare questo? Come potrei fare uno script per fare questo?

+0

MySQL ha una replica master/slave integrata, è eccessivo per l'applicazione? http://dev.mysql.com/doc/refman/5.0/en/replication.html –

+1

Hai bisogno di sincronizzazione bidirezionale? In tal caso, è necessario un modo per notificare le eliminazioni, poiché una sincronizzazione bidirezionale di solo inserimento ricreare erroneamente le righe eliminate. – cdhowie

+0

@cdhowie, solo unidirezionale. – GarouDan

risposta

9

pt-tavolo-sync può fare questo: http://www.percona.com/doc/percona-toolkit/2.1/pt-table-sync.html

Vedi anche other SO questions and answers menzionare pt-tavolo-sync.

+0

Sai se posso installare questo strumento anche su Mac? – GarouDan

+0

Sì, uso regolarmente Percona Toolkit su un Mac. Hai solo bisogno di Perl e forse di alcuni moduli Perl. –

+0

Sto cercando, ma sai come posso risolvere questo avviso? 'Attenzione: prerequisito DBD :: mysql 3 non trovato. Avevo eseguito' perl Makefile.PL'. – GarouDan

0

Sto risolvendo problemi simili di sincronizzazione di due tabelle costantemente.

Tra tutti gli script (di cui la maggior parte sono vecchi) che ho trovato questo app attivamente sviluppato (sembra essere molto promettente)

https://github.com/mrjgreen/db-sync

Cercherò e forse più tardi scriverò un esempio .