Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
données
SGBD
I. Introduction
Dans le cadre du cours de SGBD (système de gestion de base de données), il nous a été demandé de
mettre en place un cluster de base de données.
Nous avons choisi d’utiliser MariaDB car c’est l’un des systèmes de gestion de base de données les
plus utilisés dans la plupart des tutoriaux que nous avons pu trouver. De plus, il se rapproche
énormément du MySQL, que nous avons pu étudier en cours.
C. La solution de cluster
L’un des solutions les plus connues de cluster qui supporte MariaDB est Galera. Il est disponible
uniquement sous Linux. Cette solution permet de mettre en place avec un minimum de trois serveurs
un cluster de base de données auto-répliquant et hautement disponible.
Nous ajouterons aussi une VM Débian en tant que reverse proxy. Il utilisera ainsi HAProxy.
Nous allons commencer par configurer un hostname et un nom de domaine pour chaque VM. Nous
allons aussi mettre une IP fixe sur la carte Réseau privé hôte, en laissant la carte NAT en DHCP. Nous
la supprimerons plus tard quand nous créerons notre reverse proxy, mais pour l’instant nous la
garderons pour les mises à jour et pour vérifier si ce que nous faisons est effectif.
Nous faisons ensuite un apt-get update et apt-get upgrade afin de nous assurer que nos VMs sont à
jour.
MariaDB et Galera n’étant pas présent sur les dépôts de nos Debian, nous allons être d’aller les
chercher sur un autre dépôt en tapant les commandes :
apt-get install software-properties-common
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
add-apt-repository 'deb [arch=amd64,i386,ppc64el]
http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.0/debian jessie main'
apt-get update
apt-get install mariadb-galera-server galera rsync
3. Configuration de Galera
[mysqld]
#mysql settings
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
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://192.168.56.10,192.168.56.20,192.168.56.30"
wsrep_sst_method=rsync
wsrep_node_name="DB1.domaine.com"
wsrep_node_address="192.168.56.10"
La partie #mysql settings donne la configuration pour MariaDB et la partie #galera settings donne la
configuration pour Galera. Les deux dernières lignes vont être différents selon les serveurs, car ils
désignent le nom du nœud et son adresse IP, et sont donc spécifiques à chaque serveur.
Nous sauvons et éditons le fichier.
Nous allons ensuite arrêter le serveur MariaDB sur tous les serveurs par la commande systemctl stop
mysql ou /etc/init.d/mysql stop.
Nous allons alors redémarrer le serveur MariaDB sur notre premier nœud, ce qui initialisera notre
cluster. Nous allons donc taper la commande /etc/init.d/mysql start --wsrep-new-cluster.
Si l’on veut confirmer que notre cluster a bien été créé et que cela fonctionne, nous pouvons taper la
commande :
mysql -u root -p -e 'SELECT VARIABLE_VALUE as "cluster size" FROM
INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size"'
qui doit nous retourner :
+-----------------+
| cluster size |
+-----------------+
|1 |
+-----------------+
Nous pouvons alors redémarrer le serveur MariaDB sur les autres serveurs avec la commande
/etc/init.d/mysql start et confirmer que nos serveurs sont bien rentrés dans le cluster avec la même
commande que précédemment :
mysql -u root -p -e 'SELECT VARIABLE_VALUE as "cluster size" FROM
INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size"'
qui doit retourner :
+-----------------+
| cluster size |
+-----------------+
|3 |
+-----------------+
5. Test avec création d’une base de données et voir si réplication se fait sur tous les
serveurs
On crée une base de données sur DB2 en s’identifiant sur mysql par mysql –u root –p et en exécutant
la commande create database testreplication. En exécutant la commande show databases on peut
voir que notre base de données a bien été créée.
Pour savoir si la réplication s’est bien faite sur les autres serveurs, on s’identifie sur mysql par mysql –
u root –p et on exécute la commande show databases. On voit bien que notre base de données
testreplication s’est bien répliqué sur les deux autres serveurs.
cat /var/lib/mysql/grastate.dat