Punto informatico Network
Canali
20090625115954_737063149_20090625115932_18826826_sl_sync.png

Come replicare un database MySQL su più server (Windows/Linux)

12/10/2010
- A cura di
Zane.
Tecniche Avanzate - MySQL consente di "fotocopiare" i database gestiti da un singolo server principale su molteplici server secondari: un'ottima soluzione per distribuire il carico oppure per approntare una procedura di backup efficiente ed automatica.

Download

Tag

Passa qui con il mouse e visualizza le istruzioni per utilizzare i tag!

server (2) , windows (1) , linux (1) , mysql (1) , database (1) , amministrazione (1) , dba (1) , backend (1) .

Valutazione

  •  
Voto complessivo 4 calcolato su 18 voti

Il master è di nuovo operativo e sta funzionando come di consueto. Possiamo quindi dedicarci alla configurazione dei server secondari.

Configurare il primo "slave"

Aprite il file di configurazione di MySQL sul primo server slave.

Se state operando sotto Windows, tale file si trova nella cartella d'installazione del programma stesso: per impostazione predefinita, C:\Programmi\MySQL\MySQL Server <versione>\my.ini.

Se invece il vostro sistema utilizza Linux... individuare il corrispondente my.cnf è meno immediato, poichè il percorso varia da distribuzione a distribuzione. /usr/local/mysql/ potrebbe essere un buon candidato. In caso ancora non lo troviate, aiutatevi con find / -name my.cnf.

Una volta aperto il file, individuate anche qui la sezione [mysqld]. Nuovamente, vi raccomando di tenervi alla larga dalla sezione [mysql] (senza la "d" finale), poichè non è quella che ci interessa.

Una volta individuata la giusta riga, aggiungetevi subito sotto i parametri proposti di seguito:

Sostituite, naturalmente, a miodatabase1, miodatabase2 e miodatabase3 i nomi dei database che vorrete replicare dal master.

Ricordate soltanto di utilizzare una riga distinta per ogni database.

Se ometterete di specificare almeno un database, l'intero contenuto del server master (compresa la tabella "di sistema" chiamata mysql) verrà replicato.

Per garantire la massima integrità dei dati, vi raccomando inoltre di non richiedere in questo modo la replica di un database che non sia stato precedentemente incluso nel dump generato sul master.

Dopo aver apportato tale variazione, salvate la modifica. Notate che, su Windows Vista e successivi con Controllo Account Utente (UAC) attivo, dovrete dapprima salvare il documento in una cartella non-"di sistema" come il desktop, quindi sovrascrivere manualmente il vecchio file con quello nuovo.

Riavviate ora il database: se MySQL è installato come servizio di sistema (impostazione predefinita), aprite un prompt di comando amministrativo e quindi lanciate net stop mysql seguito da net start mysql. Sotto Linux usate semplicemente service mysqld restart.

Da dove prendo i dati?

Dovrete ora indicare allo slave le coordinate necessarie per collegarsi con il server master e recuperare, di volta in volta, i vari aggiornamenti.

Accedete al database dello slave (mysql -uNomeUtenteAmministratore -pRelativaPassword se lavorate da linea di comando) e quindi impartite CHANGE MASTER TO MASTER_HOST='master.miodominio.it', MASTER_USER='Replicator', MASTER_PASSWORD='RepliCarter';.

Come è ovvio, immettete come valore di MASTER_HOST l'indirizzo del vostro server master (va benissimo anche l'indirizzo IP). Gli altri due parametri devono invece riportare le credenziali d'accesso per l'utente abilitato alla replicazione creato precedentemente sul master.

Importare il database "dumpato"

Aprite un nuovo prompt di comando ed impartite mysql -uNomeUtenteAmministratore -pReplativaPassword < C:\dump_del_database_master.sql, indicando, naturalmente, il file generato in precedenza da mysqldump sul master.

Gli utenti Linux, ovviamente, devono usare un percorso adeguato al proprio file system.

Attivare la sincronizzazione

Ad operazione terminata, aprite nuovamente lo strumento di gestione di MySQL (mysql -uNomeUtenteAmministratore -pRelativaPassword se lavorate da linea di comando) e quindi impartite semplicemente START SLAVE;.

Sebbene nessuna informazione sia mostrata a video, i dati locali dovrebbero iniziare a sincronizzarsi automaticamente con il master remoto: il modo migliore di verificarlo è quello di apportare qualche variazione ai dati sul database master e controllare che vengano recepiti anche sullo slave.

In caso tutto funzioni correttamente, non resta che premiarsi con un po' di relax! In caso contrario...

Cosa fare se qualcosa non funziona

Se l'operazione non funziona come dovrebbe, non resta che rimboccarsi le maniche e cercare di risalire alla causa.

MySQL mantiene un file con estensione .err e lo stesso nome del sistema locale. All'interno dello stesso, il programma segnala con grande chiarezza i vari errori, compresi i motivi che hanno impedito la sincronizzazione. La posizione predefinita di tale log dipende dal sistema in uso.

Se state operando sotto Windows XP o Windows Server 2003, aprite il percorso %ALLUSERSPROFILE%\Dati applicazioni\MySQL\MySQL Server <versione>\data .

Sotto Windows Vista o Windows Server 2008 e successivi invece, %ALLUSERSPROFILE%\MySQL\MySQL Server <versione>\data .

Su taluni sistemi Linux, provate invece in /usr/local/mysql/data o ricorrette alle funzioni di ricerca del sistema operativo.

Una volta aperto il file .err, troverete un messaggio che vi illustrerà la natura del problema.

Nel corso delle mie prove, l'unico in cui mi sono imbattuto è stato [ERROR] Slave I/O: error connecting to master: questo significa che lo slave non è riuscito a contattare il master. Nel mio specifico caso, si era trattato semplicemente di un errore nella configurazione del firewall.

Per tutti gli altri inconvenienti, la ricerca con Google dovrebbe aiutarvi. In caso contrario, inserite un commento e la community di MegaLab.it cercherà di darvi una mano.

Configurare gli altri "slave"

Se avete la necessità di configurare altri server slave oltre al primo (complimenti! la vostra infrastruttura è davvero bella grossa!) ripetete l'operazione descritta nella pagina che avete davanti anche su tutte le altre macchine che volete adibire a slave.

È tutto esattamente uguale, non fosse per l'identificativo server-id immesso nel file di configurazione, che dovrà essere ben distinto per ogni sistema: in altre parole, nel file di configurazione del secondo slave si scriverà server-id=3, sul terzo server-id=4 e via dicendo.

Non è necessario che la numerazione sia progressiva, ma è sicuramente una buona idea per non fare confusione e semplificare eventuali operazioni di sostituzione.

Pagina successiva
Osservazioni e conclusioni
Pagina precedente
Configurazione del master

 

Segnala ad un amico

Tuo nome Tuo indirizzo e-mail (opzionale)
Invia a:
    Aggiungi indirizzo email
    Testo

    © Copyright 2020 BlazeMedia srl - P. IVA 14742231005

    • Gen. pagina: 0.18 sec.
    •  | Utenti conn.: 47
    •  | Revisione 2.0.1
    •  | Numero query: 43
    •  | Tempo totale query: 0.01