c'e' solo un modo di fare le cose: farle bene
MySQL supporta nativamente la configurazione master/slave tra due database ma in questo modo si può scrivere solo sul master.
Se si ha la necessità di avere due database identici ed eseguire su entrambi operazioni di scrittura è necessario sincronizzarli in qualche modo. Si può optare per rsync e quindi aggiornare i file che compongono il database o, come nel caso che vedremo tra poco, usare i comandi di MySQL e muovere i dati via SSH.
Supponiamo di voler trasferire il dump di un database locale in un db remoto, il comando è questo:
ssh user@www.my_domain.com "mysqldump
-u my_remote_db_username --password=my_remote_db_password my_remote_db_name"
| mysql -u my_local_db_username --password=my_local_db_password --host=localhost -C my_local_db_name
Viceversa, dal database remoto a quello locale:
mysqldump -u my_local_db_username --password=my_local_db_password --host=localhost -C my_local_db_name | ssh user@www.my_domain.com "mysql -u my_remote_db_username --password=my_remote_db_password my_remote_db_name"
Facile no?
Usando SSH con autenticazione a chiave pubblica è possibile automatizzare la sincronizzazione con crond e quindi schedulare il processo di aggiornameno.
Gianluca il lavoro nobilita l'uomo e lo sport fa bene sono due concetti espressi da un eroinomane. Facendo sport mi sono infortunato e quando torno dal lavoro altro che "nobilitato" mi sento più rincoglionito di una scimmia da laboratorio.
Gianluca quando mi sono svegliato ho scoperto che non era sabato e adesso vado a dormire con la malinconia nel sapere che domani è solo giovedì...so fatt na calat!
Gianluca dai che domani è sabato!
Powered by Lifestream.
| L | M | M | G | V | S | D |
|---|---|---|---|---|---|---|
| « lug | ||||||
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 | |||
4 Responses for "Sincronizzare due database MySQL via SSH"
Ho provato ad usare la tua guida per aggiornare un database in remoto ma:
- usando il primo comando invece di copiarmi il db locale sul remoto mi ha copiato il db remoto sul locale (per fortuna ne avevo una copia backup!)
- usando il secondo comando, dopo aver inserito la password per la connessione ssh è successo niente per minuti, alla fine ho dato ^C per interrompere ed i due db sono rimasti tali e quali.
Hai qualche consiglio su come posso risolvere?
Ciao Andrea, mi dispiace se con la mia guida è successo qualcosa di sbagliato ma mentre scrivevo l’articolo provavo i comandi sui miei server. Hai accettato la chiave SSH? Prova a collegarti in SSH semplice, senza passare dati.
Occhio: è chiaramente come dice Andrea (e si vede). Il primo comando copia da remoto in locale (non ce bisogno nemmeno di provarlo e infatti non l’ho provato)
E per la cronaca, MySQL supporta nativamente anche la sincronizzazione master-to-master.
Basta utilizzare mysql-ndb
Si hai ragione, cambio il post appena ho 2 minuti.
Leave a reply