MariaDB Galera Cluster Master-Master su CentOS 7

By | luglio 8, 2017

In questa guida vedremo come creare un  MariaDB Galera Cluster dove tutti i nodi appartenenti al cluster sono Master. La soluzione di un Cluster Master-Master fa si che tutti i nodi siano replicati costantemente e accessibili in lettura e scrittura contemporaneamente. Molto spesso si utilizza per poter poi bilanciare le richieste MySQL ottimizzando così le performance dei singoli nodi, ridurre i downtime e distribuire il carico delle richieste. Vediamo dunque come realizzare tutto ciò su CentOS 7.

Supponiamo di avere la necessità di creare un cluster su 2 nodi:

  • nodo 1: 192.168.0.111 dbnode1.mydomain.local
  • nodo 2: 192.168.0.112 dbnode2.mydomain.local

In entrambi i nodi, dbnode1 e dbnode2, aggiungiamo i repository di MariaDB creando il file mariadb.repo nella directory /etc/yum.repos.d:

# touch /etc/yum.repos.d/mariadb.repo

aggiungiamo le seguenti righe:

# MariaDB 10.0 CentOS repository list
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
enabled=0

Salviamo il file e lanciamo il comando:

# yum --enablerepo=mariadb -y install MariaDB-Galera-server

Completata l’installazione dei pacchetti editiamo il file di configurazione server.conf nella directory /etc/my.cnf.d con il nostro editor preferito facendo prima una copia di backup del file di default:

# cp /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.orig
# vi /etc/my.cnf.d/server.cnf

Modifichiamo la configurazione rendola identica o simile a questa:

# this is only for the mysqld standalone daemon
[mysqld]
   max_allowed_packet=128M
   # /var/lib/mysql/queries.log
   general-log
   general-log-file=queries.log
   log-output=file

# * Galera-related settings
[galera]
   # Mandatory settings
   wsrep_provider=/usr/lib64/galera/libgalera_smm.so
   wsrep_cluster_address="gcomm://192.168.0.111,192.168.0.112"
   binlog_format=row
   default_storage_engine=InnoDB
   innodb_autoinc_lock_mode=2
   bind-address=0.0.0.0
   wsrep_cluster_name="MariaDB_Cluster"
   # change node IP
   wsrep_node_address="192.168.0.111"
   wsrep_sst_method=rsync

Sosituendo ovviamente la direttiva  wsrep_node_address con l’IP del nodo.

Una volta modificati i file di configurazione in entrambi i nodi, lanciamo i rispettivi comandi sui singoli nodi:

Sul nodo1 startiamo il servizio inizializando il Cluster con il comando:

# /etc/rc.d/init.d/mysql bootstrap

ed effettuiamo la prima configurazione con il comando:

# mysql_secure_installation

Rechiamoci sul nodo2 e startiamo il servizio con il ocmando:

# /etc/rc.d/init.d/mysql start

o

# systemctl start mysql

Se tutto andato bene il nodo2 iniziaerà a sincornizzarsi.

Per verificare che la confiurazione funzioni lanciamo su entrambi i nodi, nella console mysql, il comando:

# mysql -u root -p
MariaDB [(none)]> show status like 'wsrep_%';

e dovremmo avere questo output:

Per testare la replica possiamo benissimo fare dei test molto semplici, come ad esempio provare a creare database, eliminarli e verificare che in entrambi i nodi la situazione sia identica.

Alla prossima

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *