Replica dei database MySQL
Pubblicato il 16-11-2012 15:00
Numero di Visualizzazioni: 71271
Sul database server master impostiamo un id server e il log binario e riavviamo il servizio (un reload non è la stessa cosa). La dimensione del log di 100 MB dovrebbe essere sufficiente anche per sistemi molto grandi, ma potrebbe convenire di usare file da 1G. Nota importante: se viene a mancare lo spazio in /var/log/mysql/, il server database cessa a funzionare. Quindi è necessario monitorare il consumo dello spazio e aggiustare eventualmente le dimensioni e il ciclo di backup, che come valore predefinito è di 10 giorni. Per sistemi sempre connessi, è sufficiente un ciclo di 1-3 giorni.
Codice:
# /etc/init.d/mysql stop
# nano /etc/mysql/my.cnf
[mysqld]
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 100M
Accediamo quindi a mysql per impostare un utente replica e bloccare la scrittura a tutte le tabelle. Dato che il processo di impostazione della replica potrebbe richiedere diverso tempo, consigliamo aprire quindi uno screen, che all'eventuale caduta connessione al sistema rimane attiva e quindi può essere ricaricata:
Codice:
# screen
# /etc/init.d/mysql start
# mysql -uroot -ppassword
GRANT REPLICATION SLAVE ON *.* TO 'replicauser'@'%' IDENTIFIED BY 'metti-qui-una-password-sicura';
FLUSH TABLES WITH READ LOCK;
A questo punto, l'accesso a tutti i database è di sola lettura. Eseguiamo quindi il comando seguente, per ottenere la posizione attuale del log binario:
Codice:
SHOW MASTER STATUS;
Se questa query restituisce una risposta simile a:
Codice:
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 746 | | |
+------------------+----------+--------------+------------------+
allora tutto è corretto, altrimenti non si ha impostato bene il log binario. Il file mysql-bin.000001 e la posizione 746 in questo esempio ci serve poi nella configurazione delle macchine slave.
Ora passiamo alle macchine slave per copiare i database nello stato attuale, e senza chiudere la connessione al server master.
Messaggio vBulletin