MariaDB - Grappe de serveurs avec Galera
Suite a plusieurs tests, cette solution n'est pas adaptée pour faire du cluster via VPN. Cette outils ne fonctionne que dans un réseau interne. Nous somme partie sur une solution de réplication MySQL Master-Master.
Tous les manipulations sont à faire sur tous les serveur (sauf contraction).
Ajout des dépôts MariaDB
Sur Debian 8 "Jessie", les paquets de Galera ne sont pas dans les dépôts de Debian contrairement à Debian 9 "Stretch".
- Ajouter la clef du dépôt de MariaDB:
$ apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
- Ajouter dans le fichier /etc/apt/sources.list :
[...] deb [arch=amd64,i386] http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.1/debian jessie main
- Faire un update:
$ apt update
Installer MariaDB et Galera
- Installer MariaDB et Galera:
$ apt install -y rsync mariadb-client mariadb-galera-server galera
Configurer le cluster
- Créer le fichier /etc/mysql/conf.d/galera.cnf sur tous les serveurs et ajouter:
[mysqld] #mysql settings binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 innodb_doublewrite=1 query_cache_size=0 query_cache_type=0 bind-address=0.0.0.0 #galera settings wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so wsrep_cluster_name="test_cluster" wsrep_cluster_address=gcomm://cluster01,cluster02,cluster03 wsrep_sst_method=rsync
Modifier cluster01,cluster02,cluster03 par les IP de tous vos serveurs en cluster. ex: gcomm://10.0.99.31,10.0.99.32,10.0.99.33.
Modifier test_cluster par le nom du cluster de votre choix.
- Stopper MariaDB sur tous les machines du cluster:
$ service mysql stop
- Sur l'un des serveur du cluster que l'on va appeler cluster01 dans ce tuto, exécuter:
$ galera_new_cluster
- Toujours sur cluster01, exécuter la commende suivant:
$ mysql -u root -p -e 'SELECT VARIABLE_VALUE as "cluster size" FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size"'
Résultat:
+--------------+ | cluster size | +--------------+ | 1 | +--------------+
Le 1 correspond au nombre de serveur connecté au cluster.
- Sur les autres serveurs du cluster, il suffit de démarrer MariaDB:
$ service mysql start
- Sur cluster01, si vous exécutez:
$ mysql -u root -p -e 'SELECT VARIABLE_VALUE as "cluster size" FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size"'
Résultat:
+--------------+ | cluster size | +--------------+ | 2 | +--------------+
Vous voyez le chiffre augmenté suivant le nombre de serveur connecté dans le cluster.
Sources
- Dépôt de MariaDB : https://downloads.mariadb.org/mariadb/repositories/#mirror=cnrs&version=10.1&distro_release=jessie--jessie&distro=Debian
- Utilisation de Galera : https://blog.sprinternet.at/2016/03/mariadb-10-1-galera-cluster-on-debian-8-jessie/
- Pour la configuration de Galera : http://galeracluster.com/documentation-webpages/configuration.html