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