Mysql replication : Différence entre versions

De SME Server Wiki
(Configuration du SME7-2 esclave)
(remerciement)
 
(7 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 7 : Ligne 7 :
 
== Configuration du SME7-1 maitre ==
 
== Configuration du SME7-1 maitre ==
  
  mkdir - /etc/e-smith/templates-custom/etc/my.cnf/
+
  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 "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 "show-slave-auth-info" >> /etc/e-smith/templates-custom/etc/my.cnf/0061MSTR_REPLIC  
Ligne 13 : Ligne 13 :
 
  echo "log-bin=mysql-bin" >> /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
 
  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
 
  expand-template /etc/my.cnf
 
  service mysqld restart
 
  service mysqld restart
 +
signal-event remoteaccess-update
 +
  
 
création d'un utilisateur Mysql pour l'utilisateur qui servira à faire les mise à jour
 
création d'un utilisateur Mysql pour l'utilisateur qui servira à faire les mise à jour
Ligne 26 : Ligne 35 :
 
petite explication:  
 
petite explication:  
  
# remplacez "*.*" par "BASE.*" si vous voulez repliquer une seule base, par "BASE.table" pour une seule table, ou par "BASE.table1,  
+
# 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
BASE.table2" pour 2 tables precises
+
 
# remplacez "repl" par votre nom d'utilisateur voulu
 
# remplacez "repl" par votre nom d'utilisateur voulu
 
# remplacez "%.mydomain.com" par l'adresse de l'hote ou est hebergé le serveur mysql esclave
 
# remplacez "%.mydomain.com" par l'adresse de l'hote ou est hebergé le serveur mysql esclave
Ligne 33 : Ligne 41 :
  
 
== Configuration du SME7-2 esclave ==
 
== Configuration du SME7-2 esclave ==
  mkdir - /etc/e-smith/templates-custom/etc/my.cnf/
+
  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 "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-host = www.DOMAINE.com" >> /etc/e-smith/templates-custom/etc/my.cnf/0061SLV_REPLIC  
Ligne 56 : Ligne 64 :
  
 
'''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)'''
 
'''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 ==
 
== Création des bases de données sur le serveur esclave ==
Ligne 74 : Ligne 81 :
 
  mysql> SHOW SLAVE STATUS;
 
  mysql> SHOW SLAVE STATUS;
 
  mysql> exit;
 
  mysql> exit;
 +
 +
== remerciement ==
 +
Grand-Pa [http://smeserver.fr]
 +
 +
Thierry Nardoux [http://blog.thierrynardoux.com/index.php?2005/08/27/244-synchronisation-de-deux-serveurs-mysql]
 +
 +
l'equipe Mysql [http://dev.mysql.com/doc/refman/4.1/en/replication-howto.html]
 +
 +
Antitaniom

Version actuelle en date du 12 janvier 2009 à 16:01

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