Ricerca nel sito web

Come impostare la replica master-slave MySQL su Ubuntu 18.04


La replica master-slave di MySQL è una procedura che consente di replicare o copiare i file di database su uno o più nodi di una rete. Questa configurazione fornisce ridondanza e tolleranza agli errori in modo tale che, in caso di guasto nel nodo master, i database possono ancora essere ripristinati nel nodo slave. Ciò offre agli utenti la tranquillità che non tutto andrà perduto in ogni eventualità poiché una replica dei database può ancora essere recuperata da un server diverso.

In questa guida imparerai come eseguire una replica Master-slave del database MySQL su un sistema Ubuntu 18.04.

Prerequisiti

Nella configurazione avremo due server che eseguono Ubuntu 18.04 con i seguenti indirizzi IP.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Ora tuffiamoci e vediamo come possiamo configurare la configurazione della replica Master-slave su Ubuntu.

Passaggio 1: installa MySQL sui nodi master e slave

I repository Ubuntu contengono la versione 5.7 di MySQL. Per sfruttare eventuali nuove funzionalità ed evitare potenziali problemi, è necessario installare l'ultima versione di MySQL. Ma prima aggiorniamo i due nodi utilizzando il seguente comando apt.

sudo apt update

Per installare MySQL su entrambi i nodi, esegui il comando.

sudo apt install mysql-server mysql-client

Successivamente, apri il file di configurazione mysql.

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

Nel nodo master, scorri e individua l'attributo bind-address come mostrato di seguito.

bind-address 	 =127.0.0.1

Modifica l'indirizzo di loopback in modo che corrisponda all'indirizzo IP del nodo master.

bind-address  	=10.128.0.28

Successivamente, specifica un valore per l'attributo server-id nella sezione [mysqld]. Il numero scelto non deve corrispondere a nessun altro numero ID server. Assegniamo il valore 1.

server-id	 =1

Alla fine del file di configurazione, copia e incolla le righe seguenti.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Uscire dal file di configurazione e riavviare il servizio MySQL affinché le modifiche abbiano effetto sul nodo Master.

sudo systemctl restart mysql

Per verificare che il server MySQL funzioni come previsto, emettere il comando.

sudo systemctl status mysql

Perfetto! Il server MySQL funziona come previsto!

Passaggio 2: creare un nuovo utente per la replica sul nodo master

In questa sezione creeremo un utente di replica nel nodo master. Per raggiungere questo obiettivo, accedi al server MySQL come mostrato.

sudo mysql -u root -p

Successivamente, procedi ed esegui le query seguenti per creare un utente di replica e concedere l'accesso allo slave di replica. Ricordati di utilizzare il tuo indirizzo IP.

mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';

Successivamente, esegui il comando seguente.

mysql> SHOW MASTER STATUS\G

L'output dovrebbe essere simile a quello che puoi vedere di seguito.

Sii attento e nota il valore mysql-bin.000002 e l'ID posizione 1643. Questi valori saranno cruciali durante la configurazione del server slave.

Passaggio 3: configurare il server slave MySQL

Dirigiti al server slave e, come abbiamo fatto con il server master, apri il file di configurazione MySQL.

sudo vim  /etc/mysql/mysql.conf.d/mysqld.cnf

Proprio come per il server master, procedi con la modifica delle righe seguenti.

bind-address           = 10.128.0.29

Come prima, specifica un valore per l'attributo server-id nella sezione [mysqld]. Questa volta seleziona un valore diverso. Andiamo con 2.

server-id		=2 

Ancora una volta, incolla le righe seguenti alla fine del file di configurazione.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Successivamente riavvia il server MySQL sul nodo slave.

sudo systemctl restart mysql

Una volta terminato, salva ed esci dall'editor di testo

Successivamente, accedi alla shell MySQL come mostrato.

sudo mysql -u root -p

In questo passaggio, dovrai effettuare alcune configurazioni che consentiranno al server slave di connettersi al server master. Ma prima, interrompi i thread slave come mostrato.

mysql> STOP SLAVE; 

Per consentire al server slave di replicare il server master, esegui il comando.

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='Saturn@1234', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

Se sei abbastanza appassionato, noterai che abbiamo utilizzato il valore mysql-bin.00002 e l'ID posizione 1643 visualizzato in precedenza dopo aver creato l'utente di replica slave.

Inoltre, sono stati utilizzati l'indirizzo IP, l'utente di replica e la password del server master.

Successivamente, avvia il thread che avevi interrotto in precedenza.

mysql> START SLAVE;

Passaggio 4: verificare la replica MySQL Master-Slave

Per verificare se la configurazione funziona effettivamente come previsto, creeremo un nuovo database sul master e controlleremo se è stato replicato sul server MySQL Slave.

Accedi a MySQL nel server master.

sudo mysql -u root -p

Creiamo un database di prova. In questo caso, creeremo un database chiamato replication_db.

mysql> CREATE DATABASE replication_db;

Ora accedi alla tua istanza MySQL nel server slave.

sudo mysql -u root -p

Ora elenca i database utilizzando la query.

mysql> SHOW DATABASES;

Noterai che il database che hai creato sul master è stato replicato sullo slave. Eccezionale ! La tua replica MySQL Master-slave funziona come previsto! Ora puoi essere certo che in caso di guasto, le copie dei file del database verranno replicate sul server slave.

Conclusione

In questa guida hai imparato come configurare una configurazione di replica MySQL Master-slave su Ubuntu 18.04.