MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come configurare la replica MariaDB (Master-Slave) in CentOS/RHEL 7 e Debian 8/9

Anche quando alcuni addetti IT sentono la frase "Replica del database “, spesso lo associano alla necessità di avere più copie delle stesse informazioni per evitare la perdita di dati in caso di guasto hardware o danneggiamento dei dati. Sebbene in una certa misura ciò sia vero, nella replica del database c'è molto di più del concetto comune di backup di un database e della disponibilità dei dati.

Tra gli altri vantaggi della replica del database in una configurazione master-slave possiamo citare:

  1. I backup possono essere eseguiti sul server slave senza influenzare (e risentirne) le operazioni di scrittura nel master.
  2. Le operazioni ad alta intensità di risorse (come l'analisi dei dati) possono essere eseguite sullo slave senza influenzare le prestazioni del master.

In questo articolo spiegheremo come impostare la replica master-slave in MariaDB 10.1 . Al contrario della replica classica, MariaDB ha introdotto il concetto di ID transazione globale (GTID ) in v10.0 , che consente di modificare uno slave per connettersi e replicarlo facilmente da un master diverso. Inoltre, lo stato dello slave viene registrato in modo sicuro (gli aggiornamenti allo stato vengono eseguiti nella stessa transazione degli aggiornamenti ai dati).

Se stai cercando MySQL replica in CentOS/RHEL 6 , segui questa guida Configurazione della replica MySQL (Master-Slave) su CentOS/RHEL 6

Installazione di MariaDB 10.1 in CentOS/RHEL 7 e Debian 8/9

Il nostro ambiente di test è costituito dalle seguenti macchine (entrambe sono CentOS 7 ):

Master: 192.168.0.18
Slave: 192.168.0.19

Per installare l'ultima versione di MariaDB, dovremo aggiungere i loro repository ai nostri server. Se stai utilizzando una versione precedente di MariaDB, ad esempio 5.5, considera l'aggiornamento all'ultima versione 10.1 utilizzando l'articolo di seguito.

  1. Aggiorna MariaDB 5.5 a MariaDB 10.1

In CentOS/RHEL

Crea un file chiamato MariaDB.repo all'interno di /etc/yum.repos.d con i seguenti contenuti su entrambi i Master e Schiavo sistemi:

# MariaDB 10.1 CentOS repository list - created 2016-01-23 14:16 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Salva il file e installa MariaDB su entrambi i server usando yum:

# yum update && yum install MariaDB-server MariaDB-client

In Debian/Ubuntu

Aggiungi la chiave per autenticare i pacchetti e il repository MariaDB:

# apt-get install software-properties-common
# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
# add-apt-repository 'deb [arch=amd64,i386] http://mirror.edatel.net.co/mariadb/repo/10.1/debian jessie main'

Nota :Sostituisci il nome della distribuzione e nome in codice nella riga sopra evidenziata.

Installa utilizzando apt-get comando:

# apt-get update
# apt-get install mariadb-server

Dopo aver installato MariaDB, esegui mysql_secure_installation procedura sia su master che su slave, impostiamo un database di test di esempio nella macchina master.

Impostazione di un database MySQL di esempio su Master

Ora imposteremo nel server principale i Employees database da https://github.com/datacharmer/test_db (che fornisce un set di dati di 4 milioni di record distribuiti su sei tabelle) in due semplici passaggi:

Clona il repository e utilizzalo per importare il database di esempio nella tua installazione di MariaDB:

# git clone https://github.com/datacharmer/test_db
# cd test_db
# mysql < employees.sql

Configurazione di MySQL Server su Master

Per configurare il master, segui questi passaggi:

PASSAGGIO 1: Modifica il /etc/my.cnf file. Sotto il [mysqld] sezione, aggiungi le seguenti quattro righe:

log-bin
server_id=1
replicate-do-db=employees
bind-address=192.168.0.18

e riavvia MariaDB:

# systemctl restart mariadb

PASSAGGIO 2: Accedere al server MariaDB come root, creare lo slave utente e assegnare le autorizzazioni necessarie:

MariaDB [(none)]> CREATE USER 'slave'@'localhost' IDENTIFIED BY 'SlavePassword';
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO slave IDENTIFIED BY 'SlavePassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
MariaDB [(none)]> SHOW MASTER STATUS;

L'ultimo comando (MOSTRA STATO MASTER ) restituisce la posizione corrente nel log binario (le coordinate esatte che indicano esattamente da quale punto lo slave dovrebbe iniziare a replicare:

PASSAGGIO 3: Esci dal prompt di MariaDB (con exit; ) e utilizzare il comando seguente per acquisire uno snapshot del database dei dipendenti. Quando premi Invio , ti verrà chiesto di digitare la password di root che hai impostato in precedenza tramite mysql_secure_installation :

# mysqldump -u root -p employees > employees-dump.sql

Al termine del dump, connettiti nuovamente al server del database per sbloccare le tabelle, quindi esci:

MariaDB [(none)]> UNLOCK TABLES;
MariaDB [(none)]> exit;

PASSAGGIO 4: Copia il dump nello slave:

# scp employees-dump.sql [email protected]:/root/ 

PASSAGGIO 5: Esegui mysql_upgrade procedura per aggiornare le tabelle di sistema (verrà richiesto di inserire la password di root di MariaDB):

# mysql_upgrade -u root -p

PASSAGGIO 6: Consenti il ​​servizio database tramite il firewall:

# firewall-cmd --add-service=mysql
# firewall-cmd --add-service=mysql --permanent
# firewall-cmd --reload

Ora configuriamo lo slave.

Configurazione di MySQL Server su Slave

Per configurare lo slave, attenersi alla seguente procedura:

PASSAGGIO 1: Creare l'account per eseguire le attività di replica. Connettiti al server MariaDB locale con:

# mysql -u root –p

e inserisci la password che hai impostato in precedenza.

PASSAGGIO 2: Una volta connesso al server del database, crea l'utente e un database vuoto e concedi le autorizzazioni:

MariaDB [(none)]> CREATE DATABASE employees;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON employees.* TO 'slave'@'localhost' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;

PASSAGGIO 3: Esci dal prompt di MariaDB e carica il dump creato nel server master:

# mysql -u root -p employees < employees-dump.sql

PASSAGGIO 4: Modifica il /etc/my.cnf file per assegnare un ID del server allo slave sotto il [mysqld] sezione. Tieni presente che deve essere un numero intero diverso da 1 , poiché abbiamo usato 1 nel master:

server_id=2
replicate-do-db=employees

Riavvia il server del database:

# systemctl restart mariadb

PASSAGGIO 5: Esegui mysql_upgrade procedura per aggiornare le tabelle di sistema (verrà richiesto di inserire la password di root di MariaDB):

# mysql_upgrade -u root -p

PASSAGGIO 6: Una volta che il dump è stato importato nello slave, mancano solo pochi passaggi per iniziare la replica. Accedere al database ed eseguire i seguenti comandi nel prompt di MariaDB. Presta particolare attenzione al MASTER_LOG_FILE e MASTER_LOG_POS variabili, che dovrebbero corrispondere ai valori restituiti da SHOW MASTER STATUS nel PASSO 2 di “Configurazione del master” sopra.

MariaDB [(none)]> CHANGE MASTER TO
  MASTER_HOST='192.168.0.18',
  MASTER_USER='slave',
  MASTER_PASSWORD='SlavePassword',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='master-bin.000001',
  MASTER_LOG_POS=314,
  MASTER_CONNECT_RETRY=10,
  MASTER_USE_GTID=current_pos;

PASSAGGIO 7: Avvia lo slave e controlla il suo stato senza uscire dal prompt di MariaDB:

MariaDB [(none)]> START SLAVE;
MariaDB [(none)]> SHOW SLAVE STATUS\G;

Non che tu ne abbia bisogno ora, ma tieni presente che puoi fermare lo schiavo con:

MariaDB [(none)]> STOP SLAVE;

se SHOW SLAVE STATUS\G; il comando restituisce eventuali errori. Utilizza questi errori per risolvere i problemi, quindi esegui START SLAVE; per testare di nuovo.

Testare la replica del database MySQL/MariaDB

Aggiungiamo un record ai dipendenti tabella nel server principale:

MariaDB [(none)]> INSERT INTO employees (emp_no, birth_date, first_name, last_name, gender, hire_date) VALUES (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12');

Quindi verifica che questa modifica sia stata replicata nello slave:

MariaDB [(none)]> USE employees;
MariaDB [(none)]> SELECT * FROM employees WHERE emp_no=500000;

Come puoi vedere, la replica funziona correttamente da master a slave.

Riepilogo

In questo articolo abbiamo spiegato come installare l'ultima versione di MariaDB in CentOS/RHEL 7 e Debian 8/9, e ha discusso come impostare la replica master-slave con GTID. Per ulteriori informazioni, puoi fare riferimento alla Guida alla replica di MariaDB e non esitare a contattarci utilizzando il modulo sottostante in caso di domande o commenti.