sincronizzare due database mysql

  • Creatore Discussione Creatore Discussione zauker
  • Data di inizio Data di inizio

zauker

Nuovo Utente
2 Nov 2004
3
0
0
ho la necessità di sincronizzare in via automatica 2 database mysql.
il primo (A) è il database del server web, il secondo (B) è il database del server di back end presente in lan.
Per evitare il 'consumo' di banda o l'uso massiccio di richieste http... abbiamo realizzato una piattaforma di back end che gira autonomamente sul nostro server.
attualmente la sincronizzazione avviene per mezzo di script per...
ma vorremmo perfezionare la procedura.
La sincronizzazione dovrebbe avvenire dal server A verso il B per quanto riguarda la tabella ordini... dal server B al server A per quanto riguarda gli articoli.
sapete indicarmi una tecnica per sincronizzare i due DB?
grazie
 
i modi sono molteplici....
se devi automatizzarlo diventa laborioso, comunque l'idea e' che cancelli tutto dal secondo db, ed importi il dump del primo.
non e' difficilissimo!
 
sincronizzare 2 database

non è proprio l'ideale fare il dump ad ogni modifica...
ti faccio un esempio...
sul server web la tabella ordini contiene 10000 ordini ne vengono aggiunti 2...
bene a questo punto io dovrei sincronizzare le informazioni nel DB in LAN...
secondo il tuo consiglio dovrei farmi il dump di tutta la tabella contenente tutti e 10002 ordini... cancellare tutti i 10000 ordini dal server di lan e reinserirli tutti...
francamente mi sembra una cosa mastodontica da fare...
per fare il dump 'intaserei' il server mysql sul server web e la procedura di eliminazione e reinserimento di massa non mi sembra molto prudente.
allora mantengo il mio buon script perl fatto in casa... mi sono aggiunto un campo 'scaricato' alla tabella ordini... lo script in cron sul server della lan ogni 5 minuti interroga il server web se esistono ordini con il valore scaricato uguale a nul NULL li estrae con una SELECT e li inserisce nel DB della LAN con un REPLACE... dopo fa una SELECT di verifica sul DB della LAN e se il dato risulta essere inserito correttamente fa un UPDATE del DB sul server web andando ad impostare scaricato con valore -1.
Ora una sincronizzazione dovrei andarla a fare anche sul DB articoli... ovvero in LAN abbiamo 5000 articoli... il DB del server web deve avere gli stessi articoli allineati.
Da locale capita quotidianamente che un articolo venga modificato (prezzo taglie ecc..) o venga aggiunto o rimosso... di conseguenza il server web dovrebbe sincronizzare questi cambiamenti...
Ora potrei mettere una data di modifica e una data di inserimento articolo... e farmi uno script perl che controlla i modificati e/o i nuovi articoli e provveda al trasbordo sul server... ma... preferirei trovare dei meccanismi esistenti e collaudati che si prefiggono di fare questa operazione...
o no?
ciao michele
 
Salve a tutti, sono nuovo del forum.
Sono interessato alla discussione,anch'io devo sincronizare 2 database , uno il locale e uno in remoto.
Anch'io sul database in locale ho molti record che possono essere cancellati o modificati e vorrei sincronizzare i 2 database solo con le ultime modifiche apportate al database in locale(che possono essere inserimenti , modifiche o cancellazioni).
Per spiegarmi meglio:
1)nel database del programma in locale ho 1000 record , premo un tasto sincronizza e con 1000 stringhe di insert anche sul database in remoto ho 1000 record.
2)nel programma in locale aggiungo 2 record e premo il tasto sincronizza,a questo punto vorrei solo 2 insert e non 1002.
3)nel programma in locale cancello 2 record e premo il tasto sincronizza, a questo punto vorrei 2 stringhe delete da inviare al remoto.

Insomma vorrei che il database in remoto venga sincronizzato solo con le ultime modifiche.
Grazie ciao!!
 
Ho ricercato su internet ed ho visto che con "mysqld" si puo creare un file di log che tiene conto di tutte le query eseguite su un database in formato testo.
per sincronizzare un il db in remoto basta eseguire mysql <filedilog.log
E' questa la strada?
Grazie
 
Sja

se vai a questo indirizzo:
http://www.webyog.com/sqlyog/sja.html
troverai un interessante programma per la sincronizzazione di due database mysql.
non l'ho ancora esaminato per bene ma mi sembra di capire che è possibile incronizzare anche singole tabelle e scegliere il tipo di flusso, ovvero il replication di default di mysql gesctisce un flusso ad una sola direzione SERVER->CLIENT dove io realizzo le modifiche su un solo database e queste mi vengono replicate in un secondo.
Mi sembra di aver capito che SJA permette anche una sincronizzazione bidirezionale, DB1<->DB2... ovvero io creo una modifica ad un record sul DB1 e viene riportata sul due... creo una modifica sul due e viene riportata sul primo...
questo programma si basa su dei checksum creati a livello di record.
spero di essere stato esauriente... quando so qualcosa di più lo posto... se vi informato prima voi... postate geste.. postate :)
 
repliche

Scusate gente ma quando non capisco....
Cosa sono le repliche?e come faccio ad avere una serie di query(insert,delete,update) incrementali?
 
ok ho capito cosa sono le repliche.
Il mio problema però è che devo sincronizzare un db in locale con uno in remoto quindi mi servirebbero delle stringhe sql da uploadare!!
 

Discussioni simili