Ricerca nel sito web

Come impostare la replica MySQL in RHEL, Rocky e AlmaLinux


La replica dei dati è il processo di copia dei dati su più server per migliorare la disponibilità dei dati e migliorare l'affidabilità e le prestazioni di un'applicazione. Nella replica MySQL, i dati vengono copiati da un database dal server master ad altri nodi in tempo reale per garantire la coerenza dei dati e anche per fornire backup e ridondanza.

In questa guida, mostriamo come impostare la replica MySQL (Master-Slave) in distribuzioni basate su RHEL come CentOS, Fedora, Rocky Linux e AlmaLinux.

Configurazione della replica MySQL

Quindi, ecco la configurazione del nostro laboratorio di replica MySQL.

MySQL Master - 10.128.0.14
MySQL Slave - 10.128.15.211

Iniziamo…

Passaggio 1: installa MySQL sul server master e slave

Inizieremo installando il database MySQL sia sul server master che su quello slave.

sudo dnf install @mysql

Una volta completata l'installazione, è necessario avviare il server del database.

sudo systemctl start mysqld

Quindi abilitalo per l'avvio all'avvio del sistema o al riavvio.

sudo systemctl enable mysqld

Successivamente, verifica che il server del database MySQL sia in esecuzione come mostrato:

sudo systemctl status mysqld

Passaggio 2: proteggere MySQL sul server master e slave

Il passo successivo è proteggere il database MySQL sia sul server master che su quello slave. Questo perché le impostazioni predefinite non sono sicure e presentano alcune lacune che possono essere facilmente sfruttate dagli hacker.

Quindi, per rafforzare MySQL, esegui il comando:

sudo mysql_secure_installation

Per prima cosa ti verrà richiesto di impostare la password root di MySQL. Assicurati di fornire una password di root complessa, preferibilmente con più di 8 caratteri che siano un mix di caratteri maiuscoli, minuscoli, speciali e numerici.

Per le restanti richieste, digita 'Y' per modificare il server del database sulle impostazioni consigliate.

Una volta terminata l'installazione e il rafforzamento di MySQL sul nodo master e slave, il passo successivo è configurare il nodo master.

Passaggio 3: configurazione del nodo master (server)

Il passo successivo è configurare il nodo Master e concedere al nodo slave l'accesso ad esso. Per prima cosa 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	 = 10.128.0.14
server-id 	 = 1
log_bin		 = mysql-bin

Una volta terminato, salva le modifiche ed esci. Quindi riavvia il server MySQL.

sudo sysemctl restart mysqld

Successivamente, accedi alla shell MySQL.

sudo mysql -u root -p

Eseguire 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'@'10.128.15.211' IDENTIFIED BY 'P@ssword321';
mysql> GRANT REPLICATION SLAVE ON *.*TO 'replica'@'10.128.15.211';

Applica le modifiche ed esci dal server MySQL.

mysql> FLUSH PRIVILEGES;
mysql> EXIT;

Verificare lo stato del master.

mysql> SHOW MASTER STATUS\G

Prendi nota del nome file e della posizione. Ne avrai bisogno in seguito quando configuri lo slave per la replica. Nel nostro caso, abbiamo il nome file come mysql-bin.000001 e la posizione 1232.

Passaggio 4: configurare 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 ID server diverso. Qui gli abbiamo assegnato il valore 2.

bind-address	 = 10.128.15.211
server-id	 = 2
log_bin 	 = mysql-bin

Salvare le modifiche ed uscire dal file. Quindi riavviare 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

Innanzitutto, interrompi 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='10.128.0.14' ,
     MASTER_USER='replica' ,
     MASTER_PASSWORD='P@ssword321' ,
     MASTER_LOG_FILE='mysql-bin.000001' ,
     MASTER_LOG_POS=1232;

Tieni presente che i flag MASTER_LOG_FILE e MASTER_LOG_POS corrispondono al file e ai valori di Posizione dal nodo Master alla fine di Passo 1.

MASTER_HOST, MASTER_USER e MASTER_PASSWORD corrispondono rispettivamente all'indirizzo IP principale, all'utente di replica e alla password dell'utente di replica.

Quindi avvia i thread di replica dello slave:

mysql> START SLAVE;

Passaggio 4: test della replica master-slave di MySQL

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

Creare un database di prova. Qui, il nostro database di test si chiama replication_db.

mysql> CREATE DATABASE replication_db;
Verify the existence of the database.
mysql> SHOW DATABASES;

Ora vai al nodo slave, accedi al server MySQL e conferma che il database replication_db sia presente. Dall'output seguente, possiamo vedere che il database è presente. Questa è la conferma che è avvenuta la replica dal nodo Master al nodo slave.

mysql> SHOW DATABASES;

E questo è tutto, abbiamo dimostrato con successo come impostare un modello di replica master-slave MySQL in grado di replicare i database dal nodo master al nodo slave.