net
Rplication Mysql ou comment sauvegarder
ses bases de donnes
jeudi 30 juillet 2009, par km
Cet article a juste pour objectif de donner une procdure pour sauvegarder
lintgralit dun serveur MySQL [http://fr.wikipedia.org/wiki/MySQL] et
maintenir automatiquement les mises jours.
Je ninvente rien tout se trouve sur le net principalement sur le site MySQL
[http://dev.mysql.com/doc/refman/5.0/fr/replication-howto.html]
Pr requis
Avant de poursuivre la lecture de cet article, nous devons avoir :
2 serveurs MySQL
Un compte root MySQL pour chacun
Des comptes *nix avec accs ssh et les bons droits
lip [http://fr.wikipedia.org/wiki/ip] ou nom dhte du maitre MySQL
Pour les dnominations, je parlerais de Maitre pour le serveur sauvegarder, dEsclave pour le
serveur de sauvegarde.
Prparer le Maitre
Il faut :
crer un compte de rplication, qui sera autoris se connecter pour obtenir les mises
jours
configurer le serveur
faire une sauvegarde complte des donnes un instant T connu.
sauvegarder le fichier de configuration debian.cnf
Crer le compte de rplication
Configurer
Si la configuration initialee ne la pas fait, dans le fichier maitre:~# /etc/mysql/my.cnf,
nous devons saisir :
[mysqld]
log-bin
server-id=master_id
Tlcharger
Configurer lesclave
Nous devrons :
importer les donnes du maitre
mettre jour debian.cnf
indiquer ladresse du maitre
lancer la synchronisation
Importer
Limportation se fait en ligne de commande grce esclave:~# mysql -u root -p
< dump.sql
Debian.cnf
Comme nous venons dcraser lintgralit des bases de donnes, nous devons aussi remplacer
les paramtres de connexion mysql.
Nous crasons simplement le fichierdebian.cnf par celui du maitre.
Pour charger les modifications, nous relanons le serveur
esclave:~#
/etc/init.d/mysql stop ; /etc/init.d/mysql start
Tlcharger
Configurer
Nous avons 2 choses faire :
donner un identifiant serveur diffrent du master dans /etc/mysql/my.cnf
indiquer la localisation du maitre.
esclave:~# /etc/mysql/my.cnf
[mysqld]
server-id=slave_id
Tlcharger
slave_id est un entier compris entre 1 et 2^32 1 et diffrent de master_id.
Depuis une commande mysql (esclave:~# mysql -u root -p ), nous indiquons les
paramtres de connexion.
CHANGE MASTER TO
MASTER_HOST='nom d'hte du maitre ou IP',
MASTER_USER='compte esclave',
MASTER_PASSWORD='mot de passe'
Tlcharger
Synchroniser
Maintenant nous avons un maitre qui est prt transmettre ses mises jours depuis la
cration du fichier dump.sql et un esclave lidentique du maitre cet instant configur pour
chercher les dernires modifications.
La synchronisation se fait laide START SLAVE;. Nous controlons le bon comportement via
le fichier de log systme.(esclave:~# tail -f -n 50 /var/log/syslog)
Jul 29 17:14:50 esclave mysqld[3600]: 090729 17:14:50 [Note] Slave
SQL thread initialized, starting replication in log 'mysqlbin.000792' at position 401029, relay log './mysqld-relay-bin.000001'
position: 4
Jul 29 17:14:50 esclave mysqld[3600]: 090729 17:14:50 [Note] Slave
I/O thread: connected to master 'esclave@hote.master.com:3306',
replication started in log 'mysql-bin.000792' at position 401029
Tlcharger
Si vous navez pas un log similaire, vous tes bon pour lire la vraie documentation
[http://dev.mysql.com/doc/refman/5.0/fr/replication-howto.html].
http://www.howtoforge.com/mysql_database_replication
[http://www.howtoforge.com/mysql_database_replication]
http://dev.mysql.com/doc/refman/5.0/fr/replication-howto.html
[http://dev.mysql.com/doc/refman/5.0/fr/replication-howto.html]
http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html#option_mysqldump_alldatabases
[http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html#option_mysqldump_alldatabases]
http://www.webexpertys.com/replication-maitre-esclave-mysql-5
[http://www.webexpertys.com/replication-maitre-esclave-mysql-5]
Messages
Un message, un commentaire ?