GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare un database slave MySQL

La replica MySQL consente a più copie dello stesso database di trovarsi su più server contemporaneamente, copiando automaticamente i dati dal server primario al server "slave".

Grazie a questo meccanismo tutte le istruzioni eseguite sul master, che in qualche modo modificano i dati possono essere registrate, trasmesse ed eseguite sui database replicati.

Questa guida ti aiuterà a installare MySQL sul tuo server, configurare correttamente una replica e verificarne il funzionamento con i dati di test.

Per prima cosa, connettiti al tuo server tramite una connessione SSH. Se non l'hai ancora fatto, ti consigliamo di seguire la nostra guida per connetterti in sicurezza con il protocollo SSH. Nel caso di un server locale, vai al passaggio successivo e apri il terminale del server.

Installazione MySQL

Per impostare la replica Master/Slave su entrambi i server, installa una versione di MySQL, quindi esegui la seguente procedura di installazione su entrambe le macchine, prima di procedere al capitolo successivo.

Aggiorna i repository di distribuzione, per assicurarti di scaricare la versione più aggiornata di MySQL:

$ sudo apt update

Se hai già lanciato questo comando in precedenza, vai al passaggio successivo.

Ora procedi con l'installazione di MySQL:

$ sudo apt install mysql-server

Per assicurarti che l'installazione sia andata a buon fine, controlla la versione di MySQL:

$ mysqld --version

Se la procedura è stata eseguita con successo, sullo schermo verrà stampata la versione di MySQL installata.

Procedi con la protezione di MySQL eseguendo uno script incluso in MySQL, che aumenterà la sicurezza e limiterà l'accesso ai tuoi database:

$ sudo mysql_secure_installation

A questo punto una procedura guidata ti guiderà nella configurazione del livello di sicurezza di MySQL.

In primo luogo, ti verrà chiesto se desideri abilitare il sistema di convalida della password. Se abilitato, quando si imposta la password di un utente, la password viene valutata e se non soddisfa i criteri di sicurezza viene rifiutata con un errore.

Successivamente ti verrà chiesto se vuoi cambiare la password di root con una a tua scelta (se abiliti il ​​sistema di validazione password devi inserire una password che soddisfi i criteri di sicurezza).

Si consiglia di seguire diverse best practice per la creazione di una password sicura. Ciò include:

  • l'uso di lettere maiuscole e minuscole

  • l'uso di lettere e numeri

  • l'uso di caratteri non alfanumerici come @ # $% ˆ &!

  • l'uso di password mai utilizzate in precedenza.

Scegli infine se rimuovere gli utenti anonimi, testare i database e se disabilitare il login remoto con utente root. Per un livello di sicurezza adeguato si consiglia di confermare tutte queste modifiche.

A questo punto conferma gli aggiornamenti della tabella dei permessi visualizzata per applicare tutti i nuovi criteri di sicurezza.

Riavvia finalmente il servizio per applicare le modifiche:

$ sudo service mysql restart

Configurazione della replica Master/Slave

Dopo l'installazione su entrambi i server (Master e Slave), procedere prima configurando il server Master.

Per prima cosa, modifica il file di configurazione in /etc/mysql/mysql.conf.d/mysqld.cnf come segue:

server-id               = 1
	
	log_bin                 = /var/log/mysql/mysql-bin.log
	
	expire_logs_days        = 10
	
	max_binlog_size   = 100M

Dato che il server Slave dovrà necessariamente connettersi in remoto al server Master, devi assicurarti che il servizio MySQL possa accettare connessioni esterne, modificando il bind-address come segue:

bind-address            = 0.0.0.0

Una volta completato, riavvia il servizio per applicare le modifiche:

$ sudo service mysql restart

A scopo dimostrativo e di valutazione, creare un database di test sul server master (qui chiamato "tutorial") con una tabella denominata "numbers" con dati fittizi. Al termine della procedura di configurazione verificare se tutti i dati qui inseriti sono sincronizzati con il server Slave:

$ sudo mysql -u root -p
mysql> CREATE DATABASE tutorial;
	Query OK, 1 row affected (0.00 sec)
	
	mysql> USE tutorial;
	Database changed
	
	mysql> CREATE TABLE numbers ( value REAL );
	Query OK, 0 rows affected (0.09 sec)
	
	mysql> INSERT INTO numbers VALUES ( 1 ), ( 2 ), ( 3 );
	Query OK, 3 rows affected (0.04 sec)
	
	Records: 3  Duplicates: 0  Warnings: 0

Assicurati quindi che i valori che hai appena inserito siano presenti nella tabella di test:

mysql> SELECT * FROM numbers;
		
	+-------+
	| value |
	+-------+
	|     1 |
	|     2 |
	|     3 |
	+-------+
	3 rows in set (0.00 sec)

La tabella dei numeri dovrebbe contenere 3 righe di esempio come mostrato sopra.

Procedi quindi creando i dati di accesso per l'utente da utilizzare nel database Slave:

mysql> GRANT REPLICATION SLAVE ON *.* TO 'usr_replica'@'%' IDENTIFIED BY 'SMDipmf#23$42';
	mysql> FLUSH PRIVILEGES;

Prima di procedere con la configurazione del server Slave, verrà stampato a video lo stato attuale del Master e verranno salvate le seguenti informazioni:

mysql> SHOW MASTER STATUS;
	
	+------------------+----------+--------------+------------------+-------------------+
	
	| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
	
	+------------------+----------+--------------+------------------+-------------------+
	
	| mysql-bin.000001 |     1238 | |               | |
	
	+------------------+----------+--------------+------------------+-------------------+
	
	1 row in set (0.00 sec)

Ti serviranno questi dati durante la configurazione del server Slave.

Procedi per uscire dalla shell MySQL:

mysql> exit
	Bye

Quindi salva un dump completo del database per caricarlo successivamente sul server Slave:

$ sudo mysqldump -u root -p --opt tutorial > slave-init.sql
	Enter password:

Trasferisci il file appena creato sulla macchina slave e procedi con la sua configurazione, modificando il file /etc/mysql/mysql.conf.d/mysqld.cnf:

server-id               = 2
	
	log_bin                 = /var/log/mysql/mysql-bin.log
	
	expire_logs_days        = 10
	
	max_binlog_size   = 100M

Si prega di notare che l'id del server è stato modificato utilizzando il numero 2 e ricordarsi anche di cambiare l'indirizzo di collegamento come mostrato qui:

bind-address            = 0.0.0.0

Ora riavvia lo Slave per applicare le modifiche:

$ sudo service mysql restart

Ora procedi creando un database con lo stesso nome del server Master:

$ sudo mysql -u root -p

	mysql> create database tutorial;
	
	Query OK, 1 row affected (0.00 sec)
	mysql> exit
	
	Bye

Ora importare il backup appena creato e avviare lo Slave utilizzando le informazioni precedentemente salvate dal database Master (MASTER_LOG_FILE e MASTER_LOG_POS):

$ sudo mysql -u root tutorial < /root/slave.sql
	$ sudo mysql -u root -p 
	mysql> CHANGE MASTER TO MASTER_HOST='195.231.4.201', MASTER_USER='usr_replica', MASTER_PASSWORD='SMDipmf#23$42', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 1238;
	
	Query OK, 0 rows affected, 2 warnings (0.10 sec)
	mysql> START SLAVE;
	
	Query OK, 0 rows affected (0.00 sec)

Da questo momento in poi, i database vengono sincronizzati in tempo reale e puoi uscire dalla shell MySQL.

Verifica del corretto funzionamento della replica

Per verificare il funzionamento della replica si può provare ad inserire i dati nel Master e verificare se arrivano correttamente al database Slave. Inizia inserendo nuovi dati sul Master come segue:

$ sudo mysql -u root -p
mysql> use tutorial;
	Reading table information for completion of table and column names 
	Turn off this feature to get a quicker startup with -A   
	Database changed 
	
	mysql> INSERT INTO numbers VALUES ( 4 ) , ( 5 );
	
	Query OK, 2 rows affected (0.03 sec)
	Records: 2 
	Duplicates: 0 
	Warnings: 0

Quindi procedi interrogando il database Slave:

$ sudo mysql -u root -p

	mysql> use tutorial;
	
	Reading table information for completion of table and column names
	
	Turn off this feature to get a quicker startup with -A
	  changed
	
	mysql> SELECT * FROM numbers;
	
	+-------+
	| value |
	+-------+
	|     1 |
	|     2 |
	|     3 |
	|     4 |
	|     5 |
	+-------+
	
	5 rows in set (0.00 sec)

Come puoi vedere, sul database Slave sono arrivati ​​i nuovi valori (4 e 5), quindi la sincronizzazione sta funzionando correttamente.


Linux
  1. Come configurare un server web Apache

  2. Come copiare un database MySQL

  3. Come installare il server database MySQL 8 su CentOS 8

  4. Come creare un database in MySQL con MySQL Workbench

  5. Come installare il server di database MySQL su CentOS

Come eseguire il backup del database di WordPress tramite MySQL

Come consentire l'accesso remoto al server di database MySQL

Server database MySQL

Come creare un database in MySQL

Come configurare NGINX su un server CentOS 7

Come installare e configurare un server database su Jelastic Cloud