Mysql replication

De SME Server Wiki

voici le how to pour réaliser une replication d'une base Mysql d'un SME sur un autre.

Nous allons considerer : SME7-1 : le SME maitre SME7-2 : le SME esclave

Configuration du SME7-1 maitre

mkdir -p /etc/e-smith/templates-custom/etc/my.cnf/
echo "server-id = 1" > /etc/e-smith/templates-custom/etc/my.cnf/0061MSTR_REPLIC
echo "show-slave-auth-info" >> /etc/e-smith/templates-custom/etc/my.cnf/0061MSTR_REPLIC 
echo "slave_compressed_protocol" >> /etc/e-smith/templates-custom/etc/my.cnf/0061MSTR_REPLIC
echo "log-bin=mysql-bin" >> /etc/e-smith/templates-custom/etc/my.cnf/0061MSTR_REPLIC
config setprop mysqld LocalNetworkingOnly no

ouverture des ports mysql vers l'extérieur si jamais l'esclave est sur le net:

db configuration setprop mysqld TCPPort 3306
db configuration setprop mysqld access public

prise en compte des modifs:

expand-template /etc/my.cnf
service mysqld restart
signal-event remoteaccess-update


création d'un utilisateur Mysql pour l'utilisateur qui servira à faire les mise à jour

mysql
mysql> GRANT REPLICATION SLAVE ON *.*
    -> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
mysql> FLUSH PRIVILEGES;
mysql> exit;

petite explication:

  1. remplacez "*.*" par "BASE.*" si vous voulez repliquer une seule base, par "BASE.table" pour une seule table, ou par "BASE.table1, BASE.table2" pour 2 tables precises
  2. remplacez "repl" par votre nom d'utilisateur voulu
  3. remplacez "%.mydomain.com" par l'adresse de l'hote ou est hebergé le serveur mysql esclave
  4. remplacez "slavepass" par le mot de passe de votre choix

Configuration du SME7-2 esclave

mkdir -p /etc/e-smith/templates-custom/etc/my.cnf/
echo "server-id =2" > /etc/e-smith/templates-custom/etc/my.cnf/0061SLV_REPLIC
echo "master-host = www.DOMAINE.com" >> /etc/e-smith/templates-custom/etc/my.cnf/0061SLV_REPLIC 
echo "master-user = repl" >> /etc/e-smith/templates-custom/etc/my.cnf/0061SLV_REPLIC
echo "master-password = slavepass" >> /etc/e-smith/templates-custom/etc/my.cnf/0061SLV_REPLIC
echo "master-port = 3306" >> /etc/e-smith/templates-custom/etc/my.cnf/0061SLV_REPLIC
echo "replicate-do-db= bdd_blog" >> /etc/e-smith/templates-custom/etc/my.cnf/0061SLV_REPLIC
echo "replicate-do-db= bdd_phpwebgallery" >> /etc/e-smith/templates-custom/etc/my.cnf/0061SLV_REPLIC 
echo "replicate-do-table= bdd_faq.table" >> /etc/e-smith/templates-custom/etc/my.cnf/0061SLV_REPLIC 
echo "show-slave-auth-info" >> /etc/e-smith/templates-custom/etc/my.cnf/0061SLV_REPLIC 
echo "slave_compressed_protocol" >> /etc/e-smith/templates-custom/etc/my.cnf/0061SLV_REPLIC
expand-template /etc/my.cnf
service mysqld restart

petite explication:

  1. remplacez "www.DOMAINE.com" par le domaine de votre base mysql maitre,
  2. remplacez "repl" par votre nom d'utilisateur voulu
  3. remplacez "slavepass" par le mot de passe de votre choix
  4. remplacez 3306 par un autre port si necessaire
  5. remplacez ce qui est en face de "replicate-do-db" et "replicate-do-table" par les base et tables vous interessant

A ce sujet, ne jamais répliquer la base nommé mysql ! Il n'est pas recommandé non plus de répliquer les bases nommées test et phpmyadmin (si celle-ci existe)

Création des bases de données sur le serveur esclave

Attention ! Ne pas oublier le point-virgule en fin de ligne qui sert à valider votre commande ... En cas d'oubli vous pouvez le taper directement sur la ligne suivante.

mysql
mysql> CREATE DATABASE bdd_blog;
    -> CREATE DATABASE bdd_phpbb;
    -> CREATE DATABASE bdd_phpwebgallery;
    -> CREATE DATABASE bdd_faq;
    -> CREATE DATABASE t_nardoux;
#on charge les données
mysql> LOAD DATA FROM MASTER;
# on lance le procesus de mise à jour
mysql> START SLAVE;
# on verifie que cela fonctionne en verifiant les "logs"
mysql> SHOW SLAVE STATUS;
mysql> exit;

remerciement

Grand-Pa [1]

Thierry Nardoux [2]

l'equipe Mysql [3]

Antitaniom