GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come configurare la replica MySQL Master-Slave su CentOS 7

La replica di MySQL è un processo che consente di copiare automaticamente i dati da un server di database a uno o più server.

MySQL supporta una serie di topologie di replica con la topologia Master/Slave che è una delle topologie più note in cui un server di database funge da master, mentre uno o più server agiscono da slave. Per impostazione predefinita, la replica è asincrona in cui il master invia gli eventi che descrivono le modifiche del database al suo log binario e gli slave richiedono gli eventi quando sono pronti.

In questo tutorial, spiegheremo come configurare una replica MySQL Master/Slave con un server master e uno slave su CentOS 7. Gli stessi passaggi si applicano a MariaDB.

Questo tipo di topologia di replica è più adatto per la distribuzione di repliche di lettura per il ridimensionamento in lettura, il backup di database live per il ripristino di emergenza e per i processi di analisi.

Prerequisiti #

In questo esempio, supponiamo che tu abbia due server che eseguono CentOS 7, che possono comunicare tra loro su una rete privata. Se il tuo provider di hosting non fornisce indirizzi IP privati, puoi utilizzare gli indirizzi IP pubblici e configurare il tuo firewall per consentire il traffico sulla porta 3306 solo da fonti attendibili.

I server in questo esempio hanno i seguenti IP:

Master IP: 192.168.121.59
Slave IP:  192.168.121.14

Installa MySQL #

I repository The CentOS 7 predefiniti non includono i pacchetti MySQL, quindi installeremo MySQL dal loro repository Yum ufficiale. Per evitare problemi, installeremo la stessa versione di MySQL 5.7 su entrambi i server.

Installa MySQL su entrambi i server Master e Slave:

sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmsudo yum install mysql-community-server

Una volta completata l'installazione, avvia il servizio MySQL e abilitalo all'avvio automatico all'avvio con:

sudo systemctl enable mysqldsudo systemctl start mysqld

Quando il server MySQL viene avviato per la prima volta, viene generata una password temporanea per l'utente root MySQL. Per trovare la password usa il seguente comando grep:

sudo grep 'temporary password' /var/log/mysqld.log

Esegui mysql_secure_installation comando per impostare la nuova password di root e migliorare la sicurezza dell'istanza MySQL:

mysql_secure_installation

Inserisci la password di root temporanea e rispondi Y (sì) a tutte le domande.

La nuova password deve essere lunga almeno 8 caratteri e contenere almeno una lettera maiuscola, una lettera minuscola, un numero e un carattere speciale.

Configura il server principale #

Per prima cosa, configureremo il server MySQL principale e apporteremo le seguenti modifiche:

  • Imposta il server MySQL in ascolto sull'IP privato.
  • Imposta un ID server univoco.
  • Abilita la registrazione binaria.

Per farlo, apri il file di configurazione di MySQL e aggiungi le seguenti righe in [mysqld] sezione:

sudo nano /etc/my.cnf
master:/etc/my.cnf
bind-address           = 192.168.121.59
server-id              = 1
log_bin                = mysql-bin

Al termine, riavvia il servizio MySQL per rendere effettive le modifiche

sudo systemctl restart mysqld

Il passaggio successivo consiste nel creare un nuovo utente di replica. Accedi al server MySQL come utente root:

mysql -uroot -p

Dall'interno del prompt di MySQL, esegui le seguenti query SQL che creeranno la replica utente e concedere il REPLICATION SLAVE privilegio per l'utente:

CREATE USER 'replica'@'192.168.121.14' IDENTIFIED BY 'strong_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.14';
Assicurati di cambiare l'IP con il tuo indirizzo IP slave. Puoi nominare l'utente come vuoi.

Mentre sei ancora all'interno del prompt di MySQL, esegui il seguente comando che stamperà il nome e la posizione del file binario.

SHOW MASTER STATUS\G
*************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 1427
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

Prendi nota del nome del file, 'mysql-bin.000001' e Posizione '1427' . Avrai bisogno di questi valori durante la configurazione del server slave. Questi valori saranno probabilmente diversi sul tuo server.

Configura il server slave #

Come per il server master sopra, apporteremo le seguenti modifiche al server slave:

  • Imposta il server MySQL in ascolto sull'IP privato
  • Imposta un ID server univoco
  • Abilita la registrazione binaria

Apri il file di configurazione MySQL e modifica le seguenti righe:

sudo nano /etc/my.cnf
slave:/etc/my.cnf
bind-address           = 192.168.121.14
server-id              = 2
log_bin                = mysql-bin

Riavvia il servizio MySQL:

sudo systemctl restart mysqld

Il passaggio successivo consiste nel configurare i parametri che il server slave utilizzerà per connettersi al server master. Accedi alla shell MySQL:

mysql -uroot -p

Per prima cosa, interrompi i thread slave:

STOP SLAVE;

Esegui la seguente query che imposterà lo slave per replicare il master:

CHANGE MASTER TOMASTER_HOST='192.168.121.59',MASTER_USER='replica',MASTER_PASSWORD='strong_password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1427;

Assicurati di utilizzare l'indirizzo IP, il nome utente e la password corretti. Il nome e la posizione del file di registro devono corrispondere ai valori ottenuti dal server master.

Una volta terminato, avvia i thread slave.

START SLAVE;

Verifica la configurazione #

A questo punto, dovresti avere una configurazione di replica Master/Slave funzionante.

Per verificare che tutto funzioni come previsto, creeremo un nuovo database sul server master:

mysql -uroot -p
CREATE DATABASE replicatest;

Accedi alla shell MySQL slave:

mysql -uroot -p

Esegui il comando seguente per elencare tutti i database:

SHOW DATABASES;

Noterai che il database che hai creato sul server master viene replicato sullo slave:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| replicatest        |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

Cent OS
  1. Come installare MySQL su CentOS 7

  2. Come configurare la configurazione MySQL Master-Slave utilizzando i nodi CentOS 7?

  3. Come configurare OpenSSH su CentOS 7

  4. Come configurare la replica MySQL su CentOS

  5. Come installare MySQL 5.6 su CentOS 6.x

Come configurare la replica MariaDB su CentOS Linux

Come configurare OpenNMS su CentOS 7

Come impostare la replica MySQL in RHEL/Centos

Come configurare la replica in streaming di PostgreSQL 12 in CentOS 8

Come configurare la replica Master-Slave MariaDB su CentOS 7

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