Mysql
Configurazioni non banali di mysql (debian Squeeze)
Replicazione
Qui si spiega come configurare due macchine come master e slave, partendo dalla supposizione che il database master sia vuoto. Se non lo e`, occorre sincronizzare master e slave prima di avviare la replicazione.
Sul server "master", in my.cnf, occorre:
- togliere il commento dalle righe che riguardano il server-id e log_bin (sono una di fianco all'altra). Il server-id puo` essere qualsiasi numero che non sia duplicato negli slave e non sia zero.
consentire la connessione a mysql via lan, quindi in Debian commentare la riga che dice bind-address = 127.0.0.1.
impostare il campo binlog_ignore_db o il campo binlog_do_db in modo da replicare solo i database che ci servono (e da non replicare quelli che farebbero danni se fosser replicati). Una impostazione decente per replicare tutto potrebbe essere:
binlog_ignore_db = information_schema, mysql, phpmyadmin
Sul server slave (o sui server slave) occorre:
- togliere il commento dalla riga che riguarda il server-id. Il server-id puo` essere qualsiasi numero che non sia duplicato nell'insieme master ed eventuali altri slave e non sia zero.
- Facoltativamente (ma e` consigliato per il recovery da crash o corruzioni) scommentare la riga del log_bin (come sul master).
consentire la connessione a mysql via lan, quindi in Debian commentare la riga che dice bind-address = 127.0.0.1.
IMPORTANTE: cambiare percorso alla tmpdir, impostandola a un path dove un riavvio della macchina NON cancelli i dati, quindi non su /tmp. Potrebbe per esempio essere messa a /var/spool/mysql (che va creata a chownata a mysql.)
Dopo aver riavviato i due mysql sul master e sullo slave, procedere SUL MASTER con la creazione dell'utente che verra` usato dagli slave per la replicazione (uno per tutti quanti o anche uno per ogni slave, a discrezione). Questo utente deve disporre del privilegio di replicazione e deve avere accesso ovviamente dall' ip della/delle macchina/e slave. Se usate phpmyadmin esiste una funzione apposta "replicazione" che indica lo stato della replicazione e consente di creare un utente per la replicazione. Di fatto phpmyadmin crea l'utente cosi`:
CREATE USER 'replicazione'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE , REPLICATION CLIENT ON * . * TO 'replicazione'@'%' IDENTIFIED BY 'password';
A questo punto, procedere SULLO SLAVE a configurare il medesimo per l'accesso al master, si puo` sempre fare da phpmyadmin sullo slave alla voce "replicazione", inserendo uno username, una password e un ip per il server master (l'utente e` quello che abbiamo appena creato sul server master, appunto). Oppure si puo` fare a mano con il comando:
mysql> CHANGE MASTER TO -> MASTER_HOST='master_host_name', -> MASTER_USER='replication_user_name', -> MASTER_PASSWORD='replication_password', -> MASTER_LOG_FILE='recorded_log_file_name', -> MASTER_LOG_POS=recorded_log_position;
Fatto questo, occorre riavviare mysql sullo slave e dovremmo essere connessi.