In questo articolo, dimostrerò come configurare la replica MySQL tra server di database Master e Slave. Questo utilizzerà due server, uno dei quali replicherà i dati dall'altro (dal master allo slave). Utilizzare questa configurazione se si desidera una maggiore affidabilità e prestazioni dalla configurazione del sistema.
Fare riferimento a uno dei nostri altri tutorial se hai bisogno di aiuto per configurare un sistema basato su RHEL.
Per questa guida, utilizzeremo questa configurazione del laboratorio di replica MySQL.
MySQL Master - 192.168.56.1
MySQL Slave - 192.168.56.2
Passaggio 1:installa MySQL su server master e slave
Inizia installando il database MySQL sia sul server master che su quello slave.
$ sudo dnf install @mysql
or
$ sudo yum install mysql-server
Una volta completata l'installazione, avvia il servizio database.
$ sudo systemctl start mysqld
Quindi abilitalo per iniziare con systemctl. Abilitandolo, il servizio verrà avviato nella sequenza di avvio.
$ sudo systemctl enable mysqld
Quindi conferma che il server del database MySQL è in esecuzione:
$ sudo systemctl status mysqld
Fase 2:proteggi MySQL su server master e slave
Si consiglia di proteggere il nuovo server di database con il seguente comando:
$ sudo mysql_secure_installation
Per iniziare, dovrai impostare la password di root di MySQL. Assicurati di utilizzare una password di root complessa, preferibilmente una che contenga una combinazione di caratteri maiuscoli, minuscoli, speciali e numerici e sia più lunga di 8 caratteri.
Per le restanti richieste, digita "Y" per configurare il server del database con le impostazioni consigliate.
Una volta terminata l'installazione e la protezione avanzata di MySQL sul nodo master e slave, il passaggio successivo consiste nel configurare il nodo master.
Fase 3:Configura il nodo principale (server)
Ora configuriamo il nodo Master e concediamo al nodo slave l'accesso ad esso. Innanzitutto, dobbiamo modificare il file di configurazione mysql-server.cnf.
$ sudo vim /etc/my.cnf.d/mysql-server.cnf
Aggiungi le seguenti righe nella sezione [mysqld].
bind-address = 192.168.56.1
server-id = 1
log_bin = mysql-bin
Al termine, salva le modifiche ed esci. Quindi riavvia il server MySQL.
$ sudo sysemctl restart mysqld
Quindi, accedi alla shell MySQL.
$ sudo mysql -u root -p
Esegui i seguenti comandi per creare un utente del database che verrà utilizzato per associare il master e lo slave per la replica.
mysql> CREATE USER 'replica'@'192.168.56.2' IDENTIFIED BY 'Password';
mysql> GRANT REPLICATION SLAVE ON *.*TO 'replica'@'192.168.56.2';
Applica le modifiche ed esci dal server MySQL.
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
Verifica lo stato del master.
mysql> SHOW MASTER STATUS\G
Prendi nota del nome del file e della posizione. Ne avrai bisogno in seguito durante la configurazione dello slave per la replica. Nel nostro caso, abbiamo il nome del file come binlog.000001 e Posizione 854.
Fase 4:Configura il nodo slave (server)
Ora, torna al nodo Slave. Ancora una volta, modifica il file di configurazione mysql-server.cnf.
$ sudo vim /etc/my.cnf.d/mysql-server.cnf
Come prima, incolla queste righe nella sezione [mysqld]. Modificare l'indirizzo IP in modo che corrisponda all'IP dello slave. Inoltre, assegna un server-id diverso. Qui gli abbiamo assegnato il valore di 2.
bind-address = 192.168.56.2
server-id = 2
log_bin = mysql-bin
Salva le modifiche ed esci dal file. Quindi riavvia il server del database.
$ sudo systemctl restart mysqld
Per configurare il nodo Slave per la replica dal nodo Master, accedi al server MySQL dello Slave.
$ sudo mysql -u root -p
Inizia interrompendo i thread di replica:
mysql> STOP SLAVE;
Quindi eseguire il comando seguente per configurare il nodo slave per replicare i database dal master.
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.56.1' ,
MASTER_USER='replica' ,
MASTER_PASSWORD='Password' ,
MASTER_LOG_FILE='binlog.000001' ,
MASTER_LOG_POS=854;
I flag MASTER LOG FILE e MASTER LOG POS corrispondono ai valori del file e della posizione del nodo Master alla fine del passaggio 1.
MASTER HOST, MASTER USER e MASTER PASSWORD sono rispettivamente l'indirizzo IP principale, l'utente di replica e la password.
I thread di replica slave dovrebbero quindi essere avviati:
mysql> START SLAVE;
Fase 4:test della replica MySQL Master-Slave
Ora, per verificare se la replica tra il nodo master e quello slave funziona, accedi al server del database MySQL sul nodo master:
$ sudo mysql -u root -p
Crea un database di prova. Qui, il nostro database di test si chiama replication_db.
mysql> CREATE DATABASE replication_db;
Verifica l'esistenza del database.
mysql> SHOW DATABASES;
Ora vai al nodo slave, accedi al server MySQL e ricontrolla che il database di replica db esista. Possiamo vedere che il database è presente nell'output di seguito. Ciò indica che è avvenuta la replica dal nodo Master al nodo slave.
mysql> SHOW DATABASES;