Réplication MySql avec PhpMyAdmin en multi_instances sur le même serveur

I►Nous allons voir dans cet article comment configurer deux instances de MySql sur le même serveur et les lier en réplication Master vers Esclave …

Pré-requis : MySql et Apache doivent être correctement installés et bien configurés. Les paquets PHP5 et PHP-MySQL sont requis

Installation de PhpMyAdmin :

  1. Récupérer l’archive sur le site de www.phpmyadmin.net 
  2. Dés-archivez là plusieurs fois (autant de fois qu’il y a d’instances de MySql installées)
    exemple :
    [root@/var/www] ls
    total 16K
    -rw-r–r– 1 root root 276 4 févr. 13:31 index.html
    drwxr-xr-x 8 tux linux 4,0K 4 févr. 12:50 phpmyadmin
    drwxr-xr-x 8 tux linux 4,0K 4 févr. 13:55 phpmyadmin1
    drwxr-xr-x 8 tux linux 4,0K 4 févr. 14:17 phpmyadmin2
  3. Modifier les fichiers de conf. de phpmyadmin config.inc.php en ajoutant ces infos :
    $cfg[‘PmaAbsoluteUri’] = ‘http://localhost/phpmyadmin1/’;
    $cfg[‘Servers’][$i][‘port’] = ‘3307’;
    $cfg[‘Servers’][$i][‘socket’] = ‘/tmp/mysql.sock1’;
    $cfg[‘Servers’][$i][‘connect_type’] = ‘socket’;
    $cfg[‘Servers’][$i][‘auth_type’] = ‘http’;Les Sockets, ports et dataDir correpondent aux infos précisées dans /etc/mysql/multi_my.cnf.replicantLes tests se font avec le navigateur en localhost :http://localhost/phpmyadmin1 ou http://localhost/phpmyadmin2 (après avoir stoppé le serveur mysql principal)

Conf de /etc/mysql/multi_my.cnf.replicant

[root@/etc/mysql] cat multi_my.cnf.replicant

[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user = root
password = debian

#————–Serveur Maître ———————
[mysqld1]
socket = /tmp/mysql.sock1
port = 3307
pid-file = /var/lib/mysql1/hostname.pid1
datadir = /var/lib/mysql1
language = /usr/share/mysql/french
user = mysql

#————replication maître—————————–

server-id=1
log-bin = /var/log/mysql/mysql_master_bin.log
binlog_do_db=centrale

# log-bin et binlog-do-db servent respectivement à indiquer qu’un fichier journal binaire des requêtes SQL
# doit être créé sur le serveur maître (il sera utilisé par l’esclave pour rejouer les requêtes)
# Et à indiquer que ce fichier journal doit être utilisé par les bases de données centrale etc …

auto_increment_increment = 10
auto_increment_offset = 1
#pour éviter les conflits de clé unique

#—————Logs——————————–
log_error = /var/log/mysql/master_error.log
expire_logs_days = 20
max_binlog_size = 200M

#————–Serveur Esclave———————-
[mysqld2]
socket = /tmp/mysql.sock2
port = 3308
pid-file = /var/lib/mysql2/hostname.pid2
datadir = /var/lib/mysql2
language = /usr/share/mysql/french
user = mysql

#————–réplication esclave——————
server-id=2
master-host = 127.0.0.1
master-port = 3307
master-user = replicant
master-password = replicator
report-host=localhost
master-connect-retry=60
#indique combien de tentatives successives de connexion pour la réplication seront effectuées
replicate-do-db=centrale
#nom de la base à répliquer
#—————logs—————————–
log_error = /var/log/mysql/slave_error.log

#—————Fichiers relay——————-
relay-log = /var/log/mysql/slave.relay_log
#relay-log-index = /var/log/mysql/slave.relay_log_index
expire_logs_days = 20

# Le serveur esclave, devra aller lire le fichier journal binaire du maître pour créé pour ces bases.
# Il les copiera automatiquement dans un fichier tampon, ou fichier «?relais?» (relay)
# en terminologie MySQL, et il en jouera les requêtes.

auto_increment_increment = 10
auto_increment_offset = 2

Démarrage des instances mySql

mysqld_multi –defaults-file=/etc/mysql/multi_my.cnf.replicant start 1,2

mysqld_multi –defaults-file=/etc/mysql/multi_my.cnf.replicant report

Visualisation dans PhpMyAdmin

Si la config est bonne, on obtient ceci …

Sur l’esclave :

Capture2 Capture1

sur le maître.

Pour charger la 1ère fois du maître vers l’esclave et synchroniser le tout, utilisez 

Ensuite les MAJ se feront automatiquement dans le sens M–>E

Capture3

 

 

 

 

 

————————————————————————————————————————

Méthode avec WINDOWS

————————————————————————————————————————

Voici la configuration de my.ini de la 1ère instance de MySQL en maître :

Les options master-host master-user master-password sont devenus obsolètes avec les versions de mysql5.5, il faut créer le user replicant sue le serveur maître et à la connection du maître/esclave , un fichier master.info sera créé…

 

master

 

Voici la conf de l’esclave :

slave

 

NB : s’il y a des erreurs de I/O, supprimmer le auto.cnf qui contient l’UUID des serveurs et empechent de synchroniser les données.

 

Michel BOCCIOLESI