GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Replica MySQL 8 Master-Slave su Ubuntu 20.04

A volte potrebbe essere necessario replicare automaticamente i dati da un server DB MySQL a uno o più server DB MySQL. Fondamentalmente, gli amministratori di database eseguono attività relative al database come la replica, il clustering e il failover automatico. La gestione dei server di database MySQL e l'esecuzione di attività di replica sono responsabilità degli esperti di database. In questo articolo impareremo come configurare la replica del database MySQL master-slave in Ubuntu 20.04. In questo articolo utilizzeremo MySQL 8 per la replica.

Prerequisiti

  • Due server Ubuntu
  • Account utente con privilegi di root
  • Connessione Internet per scaricare pacchetti

In questo esempio vengono utilizzati i seguenti server.

  • Maestro – 192.168.178.135
  • Schiavo – 192.168.178.137

Installa il server MySQL 8 su entrambi i nodi

L'installazione di MySQL è un processo semplice e diretto. Nel sistema Ubuntu, MySQL può essere installato utilizzando il repository di pacchetti APT. Prima dell'installazione, aggiorna l'indice del pacchetto Ubuntu usando il comando seguente.

$apt update

Installa il pacchetto del server MySQL utilizzando il comando seguente.

$apt install mysql-server -y

La nuova installazione del server MySQL lo lascia non protetto. Esegui lo script “mysql_secure_installation ” per modificare alcune delle opzioni predefinite meno sicure come accessi root remoti, database di test, utenti di esempio, ecc.

$ mysql_secure_installation

Avvia e abilita il servizio MySQL

$ systemctl start mysql
$ systemctl enable mysql

Configura il server DB principale

Ora dobbiamo apportare alcune modifiche al server master per la replica. Modifica il mysqld.conf file nella directory /etc/mysql/mysql.conf.d e aggiungi le seguenti righe. Ricorda di aggiungere le variabili di configurazione sotto [mysqld] sezione.

$ vi /etc/mysql/mysql.conf.d/mysqld.conf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
tmpdir = /tmp
binlog_format = ROW
max_binlog_size = 800M
sync_binlog = 1
expire-logs-days = 5
slow_query_log=1
slow_query_log_file=/var/lib/mysql/mysqld-slow.log

Dove:

  • server-id – ID univoco del server MySQL. Questo ID non può essere riutilizzato in nessun nodo del cluster.
  • log-bin – Questo è il file in cui sono archiviate tutte le informazioni sulla replica.
  • max_binlog_size – Dimensioni del file binlog.

Inoltre, commenta l'indirizzo di rilegatura come:

#bind-address =127.0.0.1

Riavvia il servizio MySQL

$systemctl restart mysql

Crea un nuovo utente per il servizio di replica sul nodo master

Ora è necessario creare un utente del database in un nodo master che verrà utilizzato dagli slave durante la connessione. Accedi al database utilizzando l'utente root e crea l'utente.

$ mysql -u root -p
$ mysql> CREATE USER [email protected] IDENTIFIED BY '[email protected]';

Nota:la specifica dell'indirizzo IP durante la creazione dell'utente accetterà le connessioni MySQL solo dall'host specificato. Le connessioni da altri host verranno rifiutate. In questo esempio, ho utilizzato l'indirizzo IP del mio server slave MySQL. Potrebbe essere necessario modificare questo indirizzo IP nel tuo ambiente di conseguenza.

L'utente ha bisogno dei privilegi REPLICATION SLAVE per poter replicare i dati MySQL. Utilizzare la query seguente per concedere i privilegi.

mysql> GRANT REPLICATION SLAVE on *.* to [email protected] ;

Verifica i privilegi concessi utilizzando la query seguente.

mysql> SHOW GRANTS FOR [email protected];

Configura nodo DB slave

Abbiamo già installato il server MySQL nel passaggio precedente. Ora cambieremo alcuni file di configurazione per abilitare il processo di replica. Modifica il mysqld.conf file in /etc/mysql/mysql.conf.d directory e aggiungi i seguenti contenuti.

$vi /etc/mysql/mysql.conf.d/mysqld.conf

Contenuto del file di configurazione:

[mysqld]
log_bin = /var/log/mysql/mysql-bin.log
server-id = 2
read_only = 1
tmpdir = /tmp
binlog_format = ROW
max_binlog_size = 800M
sync_binlog = 1
expire-logs-days = 5
slow_query_log = 2

Dove,

  • ID server – ID server MySQL univoco.
  • sola_lettura – Il nodo slave è impostato in modalità di sola lettura
  • log_bin – Abilita la registrazione binaria nel nodo slave
  • slow_query_log – Abilita il registro delle query lente

Inoltre, commenta la riga dell'indirizzo di rilegatura.

# bind-address = 127.0.0.1

Ora riavvia il servizio MySQL

$ systemctl restart mysql

Collega il server slave al server master

Prima di configurare il server slave, vai al server master e controlla lo stato.

$ mysql -u root -p
mysql> SHOW MASTER STATUS\G

Prendi nota dei seguenti flag che useremo nel server slave.

  • File:mysql-bin.000002
  • Posizione:156

Configurare ora i parametri nel server slave che verranno utilizzati per connettere il server master. Segui i passaggi seguenti.

  • Accedi al server MySQL utilizzando le credenziali di root
$ mysql -u root -p
  • Interrompi i thread slave
mysql> STOP SLAVE;
  • Configura il server slave per replicare il server master
mysql> CHANGE MASTER TO MASTER_HOST='192.168.178.137', MASTER_USER='replication_user', MASTER_PASSWORD='[email protected]', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=1050;

Dove,

  • 192.168.178.137 – Indirizzo IP del server principale
  • utente_replica – Utente MySQL del server master
  • password – Password utente di replica
  • mysql-bin.000002 – File di registro del server principale
  • 156 – Posizione del registro del server principale

Ora attiva il server slave.

mysql> START SLAVE;

Verifica lo stato dello slave utilizzando la query seguente

mysql> SHOW SLAVE STATUS\G

Nota lo stato del seguente flag.

  • Slave_IO_Running:connessione
  • Slave_IO_Running:connessione

Verifica la replica master-slave

Master e slave sono configurati per la replica. Possiamo verificare se la replica master-slave funziona o meno. Nel server master, accedi alla shell MySQL e crea un database di prova.

$ mysql -u root -p
mysql> CREATE DATABASE example_db;

Verifica il database creato.

mysql> SHOW DATABASES;

Ora accedi al server slave

$ mysql -u root -p

Eseguire la query seguente per elencare i database.

mysql> SHOW DATABASES;

Puoi vedere che il database creato nel server master viene replicato sul server slave.

Conclusione

In questo articolo, abbiamo imparato come configurare il nodo MySQL master e slave su Ubuntu 20.04. Puoi seguire questo articolo per configurare la replica MySQL master-slave anche su Ubunutu 18.04.


Ubuntu
  1. Come installare MySQL 8.0 in Ubuntu 18.04

  2. Come installare MySQL su Ubuntu 20.04

  3. Installazione di Ubuntu 22.04 LAMP

  4. Come installare MySQL su Ubuntu 18.04

  5. Come configurare la replica MySQL Master-Slave su Ubuntu 18.04

Come installare il server MySQL in Ubuntu

Come installare MySQL 8.0 su Ubuntu 18.04

Come installare Lychee su Ubuntu 14.04

Installa MySQL Workbench su Ubuntu 22.04

Come impostare la replica MySQL Master-Slave su RHEL 7?

Come installare MySQL su Ubuntu 22.04