La réplication multi-maîtres MySQL est une excellente fonctionnalité dans MySQL. Cependant, il n'y a qu'un seul problème; la réplication multi-maître standard ne semble jamais être aussi stable que quelque chose comme la réplication maître-esclave. Il a toujours besoin d'attention. C'est là que Percona entre en jeu. L'équipe Percona a développé un produit étonnant baptisé cluster Percona XtraDB. XtraDB propose une réplication multimaître de classe mondiale propulsée par Galera. Alors qu'attendons-nous? Commençons.
Conditions préalables
- Une distribution Linux de votre choix. Dans ce guide, nous utiliserons Debian 7. Vous pouvez utiliser une distribution différente si vous le souhaitez. ( Notez que vous devrez peut-être adapter ce guide pour travailler avec la distribution de votre choix )
- Deux nœuds exécutant le même système d'exploitation.
- Connaissance de base de la ligne de commande et de SSH.
Commencer
SSH dans vos machines virtuelles.
VM 1:
ssh [email protected]
VM 2:
ssh [email protected]
Ajoutez les référentiels de Percona.
Sur les deux nœuds, exécutez la commande suivante:
echo -e "deb http://repo.percona.com/apt wheezy main\ndeb-src http://repo.percona.com/apt wheezy main" >> /etc/apt/sources.list.d/percona.list && apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
Maintenant, nous devons mettre à jour les sources:
apt-get update
Installez le cluster Percona-XtraDB.
L'installation est simple:
apt-get install percona-xtradb-cluster-56
Si vous connaissez MySQL, cet écran suivant devrait vous sembler familier. Suivez simplement les instructions à l'écran pour saisir un mot de passe.
Configurez le premier nœud.
La configuration est assez simple. Il vous suffit d'ajouter quelques lignes au fichier de configuration MySQL. Dans ce cas, je vais utiliser Nano, mais vous pouvez utiliser l'éditeur de texte de votre choix.
Utilisez ceci pour ouvrir le fichier sur les deux machines:
nano /etc/mysql/my.cnf
Descendez bind-address = 127.0.0.1et ajoutez un # avant. Ajoutez les lignes suivantes immédiatement après la ligne (mise en commentaire) bind-address:
### Galera library.
wsrep_provider=/usr/lib/libgalera_smm.so
### IP addresses of your two nodes.
wsrep_cluster_address=gcomm://xxx.xxx.xxx.xx,yyy.yyy.yyy.yyy
### This will not work unless binlog is formatted to ROW.
binlog_format=ROW
### This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
### Node #1 address (The node you are ssh`d into now.)
wsrep_node_address=xxx.xxx.xxx.xx
### SST Method
wsrep_sst_method=xtrabackup-v2
### Cluster name
wsrep_cluster_name=xtradb
### Node Name, in this case we will just call it xtradb1
wsrep_node_name=xtradb1
### Authentication, REMEMBER THIS.
wsrep_sst_auth="sstuser:yoursecretpass"
Enregistrez et quittez le fichier (Ctrl + X).
Maintenant, amorçons le nœud:
/etc/init.d/mysql bootstrap-pxc
Ensuite, nous devons créer l'utilisateur et lui donner des privilèges, c'est pourquoi vous devez vous souvenir de ce mot de passe. Vous devrez vous connecter au shell MySQL ( mysql -u root -p) et saisir ce qui suit (ne pas inclure le mysql>):
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'yoursecretpass';
mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql> FLUSH PRIVILEGES;
Configurez le deuxième nœud.
La configuration du deuxième nœud est identique au premier, à l'exception de deux valeurs. Encore une fois, commentez bind-address = 127.0.0.1et collez ce qui suit immédiatement après. N'oubliez pas de modifier les valeurs en conséquence.
### Galera library.
wsrep_provider=/usr/lib/libgalera_smm.so
### IP addresses of your two nodes.
wsrep_cluster_address=gcomm://xxx.xxx.xxx.xx,yyy.yyy.yyy.yyy
### This will not work unless binlog is formatted to ROW.
binlog_format=ROW
### This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
### Node #2 address (The node you are ssh`d into now.)
wsrep_node_address=yyy.yyy.yyy.yyy
### SST Method
wsrep_sst_method=xtrabackup-v2
### Cluster name
wsrep_cluster_name=xtradb
### Node Name, in this case we will just call it xtradb1
wsrep_node_name=xtradb1
### Authentication, REMEMBER THIS.
wsrep_sst_auth="sstuser:yoursecretpass"
Ensuite, tapez /etc/init.d/mysql start. Vous verrez la sortie suivante:
[....] Starting MySQL (Percona XtraDB Cluster) database server: mysqld . .
[....] State transfer in progress [ok]
C'est ça! Vous avez configuré un cluster XtraDB multi-maître! Il s'agit d'un cluster XtraDB sans souci avec de grandes performances.
Test du cluster.
Sur le nœud 1, saisissez mysql -u root -pensuite create database demo;. Sur le nœud opposé, connectez-vous à MySQL avec root et tapez show databases;. Si tout fonctionnait correctement, alors vous verrez la base de données que vous avez créée sur le nœud opposé!