MySQL la replica master-slave è 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à perso in nessuna eventualità poiché una replica dei database può ancora essere recuperata da un server diverso.
In questa guida imparerai come eseguire un MySQL database Master-slave replica su Ubuntu 18.04 sistema.
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
Entriamo ora e vediamo come possiamo configurare il Master-slave configurazione della replica su Ubuntu .
Passaggio 1:installa MySQL sui nodi master e slave
Ubuntu i repository contengono la versione 5.7 di MySQL . Per sfruttare tutte le nuove funzionalità ed evitare potenziali problemi, è necessario installare l'ultima versione di MySQL. Ma prima, aggiorniamo i due nodi usando il seguente comando apt.
$ sudo apt update
Per installare MySQL su entrambi i nodi, eseguire il comando.
$ sudo apt install mysql-server mysql-client
Quindi, apri mysql file di configurazione.
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
Sul nodo principale , scorri e individua il bind-address
attributo 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
Quindi, specifica un valore per server-id
attributo nel [mysqld]
sezione. Il numero che scegli non deve corrispondere a nessun altro numero di ID server. Assegniamo il valore 1
.
server-id =1
Alla fine del file di configurazione, copia e incolla le righe sottostanti.
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
Esci dal file di configurazione e riavvia il servizio MySQL affinché le modifiche abbiano effetto sul nodo Master.
$ sudo systemctl restart mysql
Per verificare che il server MySQL funzioni come previsto, emetti il comando.
$ sudo systemctl status mysql
Perfetto! Il server MySQL funziona come previsto!
Fase 2:crea un nuovo utente per la replica sul nodo principale
In questa sezione creeremo un utente di replica nel nodo master . Per ottenere ciò, accedi al server MySQL come mostrato.
$ sudo mysql -u root -p
Quindi, 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';
Quindi, esegui il comando seguente.
mysql> SHOW MASTER STATUS\G
L'output dovrebbe essere simile a quello che puoi vedere di seguito.
Sii appassionato e prendi nota di mysql-bin.000002
valore e l'ID posizione 1643
. Questi valori saranno fondamentali durante la configurazione del server slave .
Fase 3:Configura il server slave MySQL
Vai al server slave e come abbiamo fatto con il server principale , apri il file di configurazione MySQL.
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
Proprio come il server principale , procedi alla modifica delle seguenti righe.
bind-address = 10.128.0.29
Come prima, specifica un valore per server-id
attributo nel [mysqld]
sezione. Questa volta seleziona un valore diverso. Andiamo con 2
.
server-id =2
Ancora una volta, incolla le righe sottostanti 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
Quindi riavvia il server MySQL sul nodo slave.
$ sudo systemctl restart mysql
Al termine, salva ed esci dall'editor di testo
Quindi, accedi alla shell MySQL come mostrato.
$ sudo mysql -u root -p
In questo passaggio, dovrai eseguire alcune configurazioni che consentiranno il server slave per connettersi al server principale . Ma prima, interrompi i thread slave come mostrato.
mysql> STOP SLAVE;
Per consentire il server slave per replicare il server principale , esegui il comando.
mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='[email protected]', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;
Se sei abbastanza appassionato, noterai che abbiamo usato mysql-bin.00002
valore e ID posizione 1643
visualizzato in precedenza dopo la creazione dell'utente di replica slave.
Inoltre, sono stati utilizzati l'indirizzo IP, l'utente di replica e la password del server principale.
Successivamente, avvia il thread interrotto in precedenza.
mysql> START SLAVE;
Fase 4:verifica la replica MySQL Master-Slave
Per verificare se l'installazione funziona davvero come previsto, creeremo un nuovo database sul master e verificheremo se è stato replicato sul server MySQL Slave.
Accedi a MySQL nel server principale .
$ 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 usando la query.
mysql> SHOW DATABASES;
Noterai il database che hai creato sul master è stato replicato su slave . Eccezionale ! La tua replica MySQL Master-slave funziona come previsto! Ora puoi essere certo che, in caso di errore, le copie dei file di database verranno replicate sul server slave.
Conclusione
In questa guida hai imparato a configurare un MySQL Master-slave configurazione della replica su Ubuntu 18.04 .