Ricerca nel sito web

Come configurare la replica master-master di MariaDB su Debian 11


Su questa pagina

  1. Prerequisiti
  2. Imposta il file fqdn e /etc/hosts
  3. Sincronizzare l'ora usando Chrony
  4. Installazione del server MariaDB
  5. Impostazione del firewall UFW
  6. Impostazione del server MariaDB master1
  7. Impostazione del server MariaDB master2
  8. Avvia la replica master-master sul server MariaDB master1
  9. Testare la replica del database
  10. Conclusione

Questo tutorial spiegherà come configurare MariaDB Master-Master Replication sui server Debian 11. Inoltre, esamineremo come sincronizzare l'ora utilizzando Chrony tra i server MariaDB.

Prerequisiti

Per completare questo tutorial, avrai bisogno dei seguenti requisiti:

  • Due o più server Debian 11. Questa dimostrazione ha utilizzato due server Debian.
  • Un utente non root con privilegi di root/amministratore.

Imposta il file fqdn e /etc/hosts

Per configurare MariaDB Master-Master tra più server, dovrai assicurarti che ogni nome host di sistema sia risolto nell'indirizzo IP corretto. Per configurarlo, devi impostare il file fqdn e il file /etc/hosts su ciascun server.

In questa dimostrazione, utilizzeremo i seguenti due server Debian:

IP Address      Hostname    FQDN
---------------------------------------------------
192.168.5.10    master1     master1.localdomain.io
192.168.5.11    master2     master2.localdomain.io

Per impostare il corretto fqdn (Fully Qualified Domain Name), eseguire il comando hostnamectl di seguito.

Imposta fqdn per il server \master1\.

sudo hostnamectl set-hostname master1.localdomain.io

Imposta fqdn per il server \master2\.

sudo hostnamectl set-hostname master2.localdomain.io

Successivamente, modifica il file /etc/hosts su ciascun server utilizzando il seguente comando.

sudo nano /etc/hosts

Aggiungere la seguente configurazione al file.

192.168.5.10    master1.localdomain.io  master1
192.168.5.11    master2.localdomain.io  master2

Salva e chiudi il file quando hai finito.

Infine, esegui il comando \ping\ qui sotto per controllare e verificare il file fqdn e /etc/hosts.

Ora dovresti vedere che il nome host \master1\ punta al fqdn \master1.localdomain.io\ con l'indirizzo IP \192.168.5.10\. E il nome host \master2\ verrà indirizzato al fqdn \master2.localdomain.io\ con l'indirizzo IP \192.168.5.11\.

ping master1
ping master2

Sincronizzare il tempo usando Chrony

La sincronizzazione dell'ora per l'implementazione della replica master-master di MariaDB è fondamentale. E per sincronizzare l'ora tra i server, dovrai configurare Chrony come client NTP su ciascun server MariaDB.

Per installare il pacchetto Chrony, esegui il seguente comando \apt install\. Immettere Y per confermare l'installazione e premere INVIO e l'installazione avrà inizio.

sudo apt install chrony

Al termine dell'installazione, eseguire il comando \systemctl\ riportato di seguito per avviare e abilitare il servizio Chrony.

sudo systemctl start chrony
sudo systemctl enable chrony

Ora controlla e verifica il servizio Chrony usando il seguente comando. E dovresti vedere che il servizio Chrony è in esecuzione. Inoltre, vedrai che il servizio Chrony è \abilitato\, il che significa che verrà eseguito automaticamente all'avvio del sistema.

sudo systemctl status chronyd

Successivamente, esegui il comando \timedatectl\ di seguito per regolare l'ora del tuo sistema con il fuso orario specifico e abilitarlo all'uso del servizio NTP Chrony.

sudo timedatectl set-timezone Europe/Stockholm --adjust-system-clock
sudo timedatectl set-ntp yes

Infine, esegui il comando \timedatectl\ di seguito per controllare e verificare le impostazioni correnti dell'orologio e dell'ora del tuo sistema. Assicurati che l'ora sia sincronizzata tra tutti i server MariaDB.

timedatectl

Installazione del server MariaDB

Il repository Debian predefinito fornisce il pacchetto server MariaDB. Ma, per questa dimostrazione, installeremo il server MariaDB dal repository MariaDB ufficiale.

Prima di installare il server MariaDB, esegui il comando \apt install\ di seguito per installare alcune dipendenze di base del pacchetto. Immettere Y per confermare l'installazione e premere INVIO per continuare.

sudo apt install gnupg2 apt-transport-https software-properties-common

Successivamente, esegui il seguente comando per importare la chiave GPG per il repository MariaDB. L'impronta digitale completa della chiave è \1993 69E5 404B D5FC 7D2F E43B CBCB 082A 1BB9 43DB\.

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

Ora esegui il seguente comando per aggiungere il repository MariaDB per il server Debian 11. Quindi, aggiorna e aggiorna l'indice dei pacchetti sui tuoi server.

sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://sfo1.mirrors.linux-console.net/mariadb/repo/10.8.3/debian bullseye main'
sudo apt update

Per installare il pacchetto \mariadb-server\, eseguire il comando \apt install\ di seguito. Immettere Y per confermare e premere INVIO e l'installazione avrà inizio.

sudo apt install mariadb-server

Sul sistema Debian, il servizio MariaDB verrà avviato e abilitato automaticamente. Esegui il comando \systemctl\ seguente per controllare e verificare il servizio MariaDB.

Dovresti vedere che il servizio MariaDB è \abilitato\, il che significa che verrà eseguito automaticamente all'avvio del sistema. E lo stato attuale del servizio MariaDB è \in esecuzione\.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

Configurazione del firewall UFW

Si consiglia di utilizzare il firewall tra tutti i server MariaDB. Ciò garantirà che solo gli indirizzi IP o le reti consentite saranno in grado di accedere e raggiungere le porte del servizio MariaDB. E in questa demo utilizzeremo il firewall UFW.

Esegui il comando \apt install\ qui sotto per installare il pacchetto \ufw\. Immettere Y per confermare l'installazione e premere INVIO per continuare.

sudo apt install ufw

Al termine dell'installazione, eseguire il comando \ufw\ riportato di seguito per aggiungere il profilo dell'applicazione \OpenSSH\. Quindi, esegui e abilita il servizio firewall UFW.

Verrà richiesto di confermare e abilitare il firewall UFW, inserire \y\ e premere INVIO. E il firewall UFW è attivo e funzionante.

sudo ufw allow "OpenSSH"
sudo ufw enable

Successivamente, apri alcune porte per la distribuzione della replica master-master di MariaDB. Alcune porte TCP per la distribuzione della replica MariaDB sono \3306\, \4567\, \4568\ e \4444\.

In questo esempio, solo le reti \192.168.5.0/24\ potranno accedere alle porte TCP del server MariaDB.

Per il server \master1\ con indirizzo IP \192.168.5.10\, eseguire i seguenti comandi \ufw\.

sudo ufw allow from 192.168.5.0/24 to 192.168.5.10 port 3306 proto tcp
sudo ufw allow from 192.168.5.0/24 to 192.168.5.10 port 4567 proto tcp
sudo ufw allow from 192.168.5.0/24 to 192.168.5.10 port 4568 proto tcp
sudo ufw allow from 192.168.5.0/24 to 192.168.5.10 port 4444 proto tcp

Per il server \master2\ con indirizzo IP \192.168.5.11\, eseguire i seguenti comandi \ufw\.

sudo ufw allow from 192.168.5.0/24 to 192.168.5.11 port 3306 proto tcp
sudo ufw allow from 192.168.5.0/24 to 192.168.5.11 port 4567 proto tcp
sudo ufw allow from 192.168.5.0/24 to 192.168.5.11 port 4568 proto tcp
sudo ufw allow from 192.168.5.0/24 to 192.168.5.11 port 4444 proto tcp

Infine, controlla e verifica lo stato del firewall UFW con tutte le regole abilitate utilizzando il comando seguente. Dovresti vedere il profilo dell'applicazione \OpenSSH\ con tutte le porte di replica MariaDB \3306\, \4567\, \4568\ e \4444\ disponibili sul firewall UFW.

sudo ufw status

Configurazione del server MariaDB master1

Hai completato la configurazione di base del server Debian per la distribuzione di MariaDB Master-Master Replication. Ora, iniziamo a configurare i server MariaDB.

Innanzitutto, configurerai il server MariaDB sul server \master1\. Accedi alla shell del server \master1\.

Esegui il comando \systemctl\ qui sotto per arrestare il servizio MariaDB. Questo è necessario prima di configurare il server MariaDB.

sudo systemctl stop mariadb

Ora modifica il file di configurazione del server MariaDB \/etc/mysql/mariadb.conf.d/50-server.cnf\ utilizzando il seguente comando.

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Cambia l'\listen-address\ predefinito con l'indirizzo IP interno. In questo esempio, il server \master1\ ha un indirizzo IP \192.168.5.10\. Successivamente, abilita \binary_log\ per il server MariaDB, questo ti consente di impostare la replica sul server MariaDB. Assicurati di inserire la seguente configurazione sotto l'opzione \[mysqld]\.

[mysqld]
bind-address = 192.168.5.10

server-id              = 1
report_host            = master1

log_bin                = /var/log/mysql/mariadb-bin
log_bin_index          = /var/log/mysql/mariadb-bin.index

relay_log              = /var/log/mysql/relay-bin
relay_log_index        = /var/log/mysql/relay-bin.index

Salva e chiudi il file quando hai finito.

Successivamente, esegui il comando \systemctl\ di seguito per avviare il servizio MariaDB e applicare le nuove modifiche. Quindi, controlla e verifica quale indirizzo IP è in esecuzione su MariaDB. Dovresti vedere che il servizio MariaDB è ora in esecuzione sull'indirizzo IP interno \192.168.5.10\.

sudo systemctl start mariadb
ss -plnt

Ora dovrai creare un nuovo utente MariaDB che verrà utilizzato per replicare i dati tra i server MariaDB. Accedi alla shell MariaDB come \root\ utilizzando il comando \mysql\ di seguito.

sudo mysql -u root -p

Esegui le seguenti query per creare un nuovo utente MariaDB e una password \replusr\. Quindi, concedere i privilegi corretti all'utente.

CREATE USER 'replusr'@'%' IDENTIFIED BY 'replusr';
GRANT REPLICATION SLAVE ON *.* TO 'replusr'@'%';
FLUSH PRIVILEGES;

Quindi, esegui la seguente query per controllare il registro binario corrente e la sua posizione esatta. In questo esempio, il file di log binario per il server MariaDB è \mariadb-bin.000001\ con la posizione \773\. Questi output verranno utilizzati nella fase successiva per configurare il server \master2\.

SHOW MASTER STATUS;

Digita \quit\ per uscire dalla shell MariaDB.

Configurazione del server MariaDB master2

Ora passa al server \master2\ e inizia a configurare il server MariaDB. La configurazione per la replica master-master di MariaDB non è particolarmente diversa per tutti i server MariaDB.

Eseguire il seguente comando per arrestare il servizio MariaDB.

sudo systemctl stop mariadb

Modifica il file di configurazione di MariaDB \/etc/mysql/mariadb.conf.d/50-server.cnf\ utilizzando il seguente comando.

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Cambia \bind-address\ con l'indirizzo IP locale del server \master2\. Quindi, abilita il registro binario sul server MariaDB \master2\ per abilitare la replica. Assicurati di aggiungere la seguente configurazione sotto l'opzione \[mysqld]\.

[mysqld]
bind-address = 192.168.5.11

server-id              = 2
report_host            = master2

log_bin                = /var/log/mysql/mariadb-bin
log_bin_index          = /var/log/mysql/mariadb-bin.index

relay_log              = /var/log/mysql/relay-bin
relay_log_index        = /var/log/mysql/relay-bin.index

Salva e chiudi il file quando hai finito.

Successivamente, avvia il servizio MariaDB per applicare le nuove modifiche. Quindi, controlla e verifica l'indirizzo IP corrente di cui è in esecuzione il server MariaDB. Se la tua configurazione è corretta, vedrai che il server MariaDB non è in esecuzione sull'indirizzo IP interno del server \master2\, che è \192.168.5.11\.

sudo systemctl start mariadb
ss -plnt

Dopo che il servizio MariaDB è in esecuzione, eseguire il seguente comando per accedere alla shell MariaDB come utente \root\.

sudo mysql -u root -p

Esegui le seguenti query per creare un nuovo utente MariaDB che verrà utilizzato per replicare i dati tra tutti i server MariaDB. Questo utente deve essere abbinato all'utente che hai appena creato sul server \master1\.

CREATE USER 'replusr'@'%' IDENTIFIED BY 'replusr';
GRANT REPLICATION SLAVE ON *.* TO 'replusr'@'%';
FLUSH PRIVILEGES;

Successivamente, sarà necessario apportare modifiche al server MariaDB \master2\ e definire il nodo \Master\ utilizzando la configurazione dettagliata del server MariaDB \master1\.

Eseguire le seguenti query per arrestare lo slave. Quindi, aggiungi informazioni dettagliate sul server MariaDB \master1\. In questo esempio, il server MariaDB \master1\ utilizza il nome host \master1\, l'utente e la password per la replica dei dati sono \replusr\, e infine il file binlog è \mariadb-bin.000001\ con la posizione \773\.

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='master1', MASTER_USER='replusr', MASTER_PASSWORD='replusr', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=773;

Ora avvia nuovamente lo slave utilizzando la seguente query. Quindi, controlla e verifica lo stato dello slave sul server \master2\. Se ottieni un output come \Slave_IO_Running: Yes\ e \Slave_SQL_Running: Yes\, significa che la replica di MariaDB è attiva e in esecuzione. Inoltre, puoi vedere che il file di registro binario sul server \master2\ è \mariadb-bin.000001\ con la posizione \773 \. che dovrebbe essere lo stesso del server \master1\. Inoltre, puoi vedere che il valore \Master_Host\ di MariaDB è \master1\.

START SLAVE;
SHOW SLAVE STATUS\G

Puoi anche verificare il file di log binario principale e la posizione sul server \master2\ utilizzando la seguente query. E dovresti ottenere lo stesso output del file di log binario \mariadb-bin.000001\ con la posizione \773\ come sul server \master1\.

SHOW MASTER STATUS;

Avvia la replica master-master sul server MariaDB master1

Poiché questa guida serve a configurare la replica master-master di MariaDB, è necessario aggiungere e definire anche la configurazione dettagliata \master2\ al server \master1\.

Torna al server \master1\ e accedi alla shell MariaDB utilizzando il comando \mysql\ di seguito.

sudo mysql -u root -p

Arrestare lo slave utilizzando il seguente comando. Quindi, aggiungi informazioni dettagliate sul server \master2\, che include il nome host del server \master2\, l'utente MariaDB e la password per la replica, il file di registro binario e la posizione.

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='master2', MASTER_USER='replusr', MASTER_PASSWORD='replusr', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=773;

Ora riavvia lo slave usando il comando seguente. Quindi, controlla e verifica lo slave sul server \master1\. E dovresti vedere l'output come \Slave_IO_Running: Yes\ e \Slave_SQL_Running: Yes\, il che significa che la replica di MariaDB è attiva e in esecuzione su\Server MariaDB master1\. Inoltre, puoi vedere che il valore \Master_Host\ è il server \master2\.

START SLAVE;
SHOW SLAVE STATUS\G

Testare la replica del database

Per verificare la replica master-master di MariaDB, crea un nuovo database sul server \master1\ e inserisci alcuni dati al suo interno. Quindi, accedi a \master2\ e verifica il database e inserisci altri dati in esso.

Passare al server \master1\ e accedere alla shell MariaDB come utente root utilizzando il seguente comando.

sudo mysql -u root -p

Crea un nuovo database \testdb\ utilizzando la seguente query.

CREATE DATABASE testdb;
USE testdb;

Ora crea alcune tabelle nel database \testdb\ usando la seguente query.

CREATE TABLE users (id INT AUTO_INCREMENT,
firstname VARCHAR(30),
lastname VARCHAR(30),
date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(id));

Successivamente, inserisci alcuni dati nel \testdb\ utilizzando la query MariaDB di seguito.

INSERT INTO users(firstname,lastname) VALUES ('Alice','Wonders');

Per controllare i tuoi dati sul server MariaDB, utilizza la query \SELECT\ come di seguito. E dovresti vedere i dati che hai appena inserito.

SELECT * FROM users;

Successivamente, passa al server \master2\ e accedi alla shell MariaDB utilizzando il comando \mysql\ di seguito.

sudo mysql -u root -p

Controlla e verifica l'elenco dei database sul server \master2\ utilizzando la seguente query. E dovresti ottenere il database \testdb\ che hai appena creato.

SHOW DATABASES;
USE testdb;

Successivamente, inserisci alcuni altri dati nel database \testdb\ dal server \master2\. Quindi, controlla e verifica i dati utilizzando la query \SELECT\. E dovresti ottenere i nuovi dati inseriti dal server \master2\.

INSERT INTO users(firstname,lastname) VALUES ('Bob','Burgers');
SELECT * FROM users;

Ora torna al \master1\ per controllare e verificare i nuovi dati che hai appena inserito dal server \master2\. Eseguire la query seguente per controllare i nuovi dati dal server \master1\. E dovresti vedere che i nuovi dati che hai appena inserito dal server \master2\ sono replicati sul server \master1\.

select @@hostname;
SELECT * FROM users;

Conclusione

Congratulazioni! Ora hai distribuito con successo la replica master-master di MariaDB sui server Debian 11. Hai anche configurato la sincronizzazione dell'ora sui server MariaDB utilizzando il servizio Chrony. Inoltre, hai anche protetto la distribuzione del server MariaDB utilizzando il firewall UFW. Alla fine, hai un server MariaDB con replica automatica tra due server MariaDB, puoi scrivere su tutti quei server MariaDB e tutti i dati verranno replicati automaticamente.