introduzione
Quando si esegue un sito Web critico, è importante assicurarsi di disporre di almeno un server di backup ridondante. Ciò garantisce che il database si stia sincronizzando in tempo reale. MySQL si riferisce alla sincronizzazione del database come replica. Questo breve tutorial fornisce istruzioni su come impostare una replica MySQL master-slave.
Imposta il nodo principale
Modifica /etc/mysql/my.cnfper disabilitare l'associazione IP.
Commenta le seguenti righe:
bind-address = 127.0.0.1
skip-networking
Creare nuove impostazioni per la replica eseguendo i seguenti comandi:
cat >/etc/mysql/conf.d/replication.cnf <<EOF
[mysqld]
server-id = 100
log_bin = /var/log/mysql/mysql-bin.log
binlog-do-db = YOUR_DATABASE_ONE
binlog-do-db = YOUR_DATABASE_TWO
EOF
Riavvia il server MySQL.
/etc/init.d/mysql restart
Crea un utente slave in MySQL eseguendo i seguenti comandi nella console MySQL.
CREATE USER 'slave'@'SLAVE_SERVER_IP_ADDRESS' identified by 'YOUR_SLAVE_PASSWORD';
GRANT ALL ON *.* TO 'slave'@'SLAVE_SERVER_IP_ADDRESS';
FLUSH PRIVILEGES;
Ora, blocca l'accesso in scrittura al tuo database:
FLUSH TABLES WITH READ LOCK;
Ottieni lo stato del nodo principale:
SHOW MASTER STATUS;
Nota: annotare i valori dei campi "File" e "Posizione" in quanto sarà necessario fare riferimento in un secondo momento per il nodo slave.
Aprire un'altra sessione SSH ed eseguire il dump del database utilizzando il comando seguente:
mysqldump -u MYSQL_USERNAME -pMYSQL_PASSWORD --databases YOUR_DATABASE_ONE YOUR_DATABASE_TWO > database.sql
Torna alla precedente sessione SSH ed esegui il seguente comando nella console MySQL per sbloccare l'accesso in scrittura:
UNLOCK TABLES;
Trasferisci il database.sqlcreato nel passaggio precedente sul nodo slave.
Configurare il nodo slave
Modifica /etc/mysql/my.cnfper disabilitare l'associazione IP.
Commenta le seguenti righe:
bind-address = 127.0.0.1
skip-networking
Creare nuove impostazioni per la replica eseguendo il comando seguente:
cat >/etc/mysql/conf.d/replication.cnf <<EOF
[mysqld]
server-id = 101
log_bin = /var/log/mysql/mysql-bin.log
binlog-do-db = YOUR_DATABASE_ONE
binlog-do-db = YOUR_DATABASE_TWO
EOF
Riavvia il server MySQL.
/etc/init.d/mysql restart
Importa database.sqlcreato dal nodo principale proprio ora usando questo comando:
mysql -u MYSQL_USERNAME-pMYSQL-PASSWORD < database.sql
Ora, iniziamo la replica. Apri la console MySQL, esegui i seguenti comandi:
SLAVE STOP;
CHANGE MASTER TO MASTER_HOST='MASTER_SERVER_IP_ADDRESS', MASTER_USER='slave', MASTER_PASSWORD='YOUR_SLAVE_PASSWORD', MASTER_LOG_FILE='FILE_VALUE_FROM_MASTER', MASTER_LOG_POS=POSITION_VALUE_FROM_MASTER;
SLAVE START;
Nota: il valore di MASTER_LOG_FILEe MASTER_LOG_POSè "File" e "Posizione" annotati dall'impostazione del nodo principale.