Mysql replication : Différence entre versions

De SME Server Wiki
(Configuration du SME7-1 maitre)
(Aucune différence)

Version du 12 mai 2008 à 02:38

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
expand-template /etc/my.cnf
service mysqld restart

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]