GNU/Linux >> Linux Esercitazione >  >> Linux

Replica Master-Master con MariaDB

Un paio di giorni fa ho scritto un tutorial su come fare la replica con MariaDB (o MySQL). Questa è una replica unidirezionale:da master a slave; ciò significa che il server slave riceve le transazioni dal master. Ma il mio cliente ha bisogno della replica bidirezionale, perché non sappiamo quale server riceverà la transazione e gli stessi dati devono essere su entrambi. Qui ti mostrerò come configurare la replica master-master con MariaDB per raggiungere questo obiettivo.

La mia configurazione

Nel caso ti fossi perso l'articolo precedente, quelle sono le funzionalità delle macchine virtuali su cui eseguo questa replica.

  • OS:Debian testando "Bookworm"
  • Versione MariaDB:10.5.12
  • Master1:192.168.122.13
  • Master2:192.168.122.223

Configurazione Master

Entrambi i master ottengono la stessa configurazione, edit /etc/mysql/mariadb.conf.d/50-server.cnf e sostituisci i seguenti valori:

bind-address  = <master.X.ip.address>
server-id        = <X>
report_host    = masterX
log_bin          = /var/log/mysql/mysql-bin.log
relay_log       = /var/lib/mysql/relay-bin
relay_log_index = /var/lib/mysql/relay-bin.index

log-slave-updates
auto_increment_increment=2
auto_increment_offset=X

Dove X è 1 per il primo master e 2 per il secondo.
I valori di autoincremento significano che nei campi di tipo id uno dei master otterrà sempre numeri pari e l'altro otterrà sempre numeri dispari. Questo per evitare che lo stesso numero ID venga assegnato contemporaneamente a entrambi i master.

Ora riavvia il servizio mariadb e accedi a mysql per creare un utente (esclavo significa schiavo in spagnolo) con privilegi di replica:

CREATE USER 'esclavo1'@'ip.mysql.master.2' IDENTIFIED BY 'SlavePass' ;
GRANT REPLICATION SLAVE ON *.* TO 'esclavo1'@'ip.mysql.master.2';
FLUSH PRIVILEGES;

Ripetere su entrambi i master modificando le informazioni di conseguenza (es. su master2 creare un utente [email protected] ). Ma prima, ottieni un dump sql del tuo primo master e caricalo nel secondo:

master1: mysqldump -u root --all-databases -p --master-data > data.sql
master2: mysql -uroot < data.sql

Ora ottieni alcune informazioni su questo master di cui abbiamo bisogno per abilitare la modalità slave sull'altro host.

MariaDB [(none)]> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003|      358 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.000 sec)
STOP SLAVE;

Configurazione slave

Ora è il momento di configurare la modalità slave su entrambi gli host mariadb/mysql:

CHANGE MASTER TO MASTER_HOST='ip.mysql.master.X', MASTER_USER='esclavoX',MASTER_PASSWORD='SlavePass MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS = 358';
START SLAVE;

Il valore master_host è l'ip dell'altro master, il valore master_user è l'utente che hai creato sull'altro master e infine ottieni i valori master_log_file e master_log_post da show master sta comando tu.

Controllo tutto

Per vedere se sono stato in grado di abilitare la replica master-master con MariaDB, ho eseguito alcuni test molto semplici:

Ho creato un database su un master, quindi una tabella semplice (solo 1 campo) e inserito un paio di record. Quindi ho verificato con una selezione che i dati vengono visualizzati su entrambi gli host. Infine ho aggiunto una colonna id auto incrementale su un host e ho inserito altri dati per vedere come appare:

Solo per aggiungere più confusione a quegli screenshot:ho aggiunto la configurazione auto_increment (incremento e offset) a my.cnf durante questo test e non dall'inizio, perché non lo sapevo fino a quando non ho iniziato i test.

Ad ogni modo, è così che ho abilitato la replica master-master con MariaDB, che è anche la replica slave-slave. O master-slave e replica slave-master, lo chiami.

Penso che il prossimo passo logico sia quello di ricercare e utilizzare alcuni Galera Cluster.


Linux
  1. Replica di un database master usando MariaDB 10 su Debian 8

  2. Come impostare la replica master-master di MySQL

  3. Come sostituire MySQL con MariaDB su CentOS 6

  4. Come configurare MariaDB Master Slave Replication su Ubuntu 18.04

  5. Come sbloccare un disco SSD con hdparm?

Come configurare la replica MariaDB su CentOS Linux

Replica Master-Slave con MariaDB

Come configurare la replica Master-Slave MariaDB su CentOS 7

Come installare il server Web OpenLiteSpeed ​​con MariaDB e PHP

Come gestire le cassette postali con RoundCube su CentOS 7

8 passaggi per installare MirthConnect con MySQL / MariaDB su Linux