Database Replication · 3 min read · Dec 22, 2025
Come Configurare la Replica del Database In MySQL
Questo è un “copia & incolla” HowTo!
Il modo più semplice per seguire questo tutorial è utilizzare un client da riga di comando/client SSH (come
PuTTY
per Windows) e semplicemente copiare e incollare i comandi (eccetto dove devi fornire informazioni proprie come indirizzi IP, nomi host, password,…). Questo aiuta a evitare errori di battitura.
Come Configurare la Replica del Database In MySQL
Versione 1.1
Autore: Falko Timme
Ultima modifica: 01/14/2006
Questo tutorial descrive come configurare la replica del database in MySQL. La replica di MySQL consente di avere una copia esatta di un database da un server master su un altro server (slave), e tutti gli aggiornamenti al database sul server master vengono immediatamente replicati al database sul server slave in modo che entrambi i database siano sincronizzati. Questa non è una politica di backup perché un comando DELETE emesso accidentalmente verrà eseguito anche sullo slave; ma la replica può aiutare a proteggere contro i guasti hardware.
In questo tutorial mostrerò come replicare il database exampledb dal master con l’indirizzo IP 192.168.0.100 a uno slave. Entrambi i sistemi (master e slave) stanno eseguendo Debian Sarge; tuttavia, la configurazione dovrebbe applicarsi a quasi tutte le distribuzioni con poche o nessuna modifica.
Entrambi i sistemi hanno MySQL installato, e il database exampledb con tabelle e dati esiste già sul master, ma non sullo slave.
Voglio dire prima che questo non è l’unico modo per configurare un tale sistema. Ci sono molti modi per raggiungere questo obiettivo, ma questo è il modo che seguo. Non fornisco alcuna garanzia che questo funzionerà per te!
1 Configurare Il Master
Prima dobbiamo modificare /etc/mysql/my.cnf. Dobbiamo abilitare il networking per MySQL, e MySQL dovrebbe ascoltare su tutti gli indirizzi IP, quindi commentiamo queste righe (se esistenti):
| #skip-networking #bind-address = 127.0.0.1 |
Inoltre, dobbiamo dire a MySQL per quale database dovrebbe scrivere i log (questi log sono utilizzati dallo slave per vedere cosa è cambiato sul master), quale file di log dovrebbe utilizzare, e dobbiamo specificare che questo server MySQL è il master. Vogliamo replicare il database exampledb, quindi mettiamo le seguenti righe in /etc/mysql/my.cnf:
| log-bin = /var/log/mysql/mysql-bin.log binlog-do-db=exampledb server-id=1 |
Poi riavviamo MySQL:
/etc/init.d/mysql restart
Poi accediamo al database MySQL come root e creiamo un utente con privilegi di replica:
mysql -u root -p
Inserisci la password:
Ora siamo nella shell di MySQL.
GRANT REPLICATION SLAVE ON . TO ‘slave_user’@’%’ IDENTIFIED BY ‘
FLUSH PRIVILEGES;
Successivamente (ancora nella shell di MySQL) fai questo:
USE exampledb;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
L’ultimo comando mostrerà qualcosa di simile a questo:
| +---------------+----------+--------------+------------------+ | File | Position | Binlog_do_db | Binlog_ignore_db | +---------------+----------+--------------+------------------+ | mysql-bin.006 | 183 | exampledb | | +---------------+----------+--------------+------------------+ 1 row in set (0.00 sec) |
Annota queste informazioni, ne avremo bisogno più tardi sullo slave!
Poi esci dalla shell di MySQL:
quit;
Ci sono due possibilità per ottenere le tabelle e i dati esistenti da exampledb dal master allo slave. La prima è fare un dump del database, la seconda è utilizzare il comando LOAD DATA FROM MASTER; sullo slave. Quest’ultima ha lo svantaggio che il database sul master sarà bloccato durante questa operazione, quindi se hai un grande database su un sistema di produzione ad alto traffico, questo non è ciò che desideri, e ti consiglio di seguire il primo metodo in questo caso. Tuttavia, l’ultimo metodo è molto veloce, quindi descriverò entrambi qui.
Se vuoi seguire il primo metodo, allora fai questo:
mysqldump -u root -p
Questo creerà un dump SQL di exampledb nel file exampledb.sql. Trasferisci questo file al tuo server slave!
Se vuoi seguire il modo LOAD DATA FROM MASTER; allora non devi fare nulla in questo momento.
Infine dobbiamo sbloccare le tabelle in exampledb:
mysql -u root -p
Inserisci la password:
UNLOCK TABLES;
quit;
Ora la configurazione sul master è finita. Passiamo allo slave…
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.