Lecabanon.Org
Accueil > Informatique > Prog > Fonctions avancées de MySQL

Fonctions avancées de MySQL

jeudi 26 mai 2005, par Webmaster

Dans les fonctions avancées de MySQL on trouve la
réplication.

Je vais vous en parler car j’ai utilisé cette fonction.
Et j’ai trouvé cela très pratique.

Actuellement, les données sont stockées dans une seule base de données
présente sur un seul serveur.

La réplication est la possibilité de distribuer une base de données sur plusieurs serveurs en même temps. Bien que le problème soit que chaque serveur doit être le plus récent possible. La réplication est donc le mécanisme qui va permettre de mettre à jour l’information présente sur chaque serveur de façon automatique. Pour cela, les serveurs devront échanger des informations entre eux, afin de mettre à jour correctement le contenu de ou des bases.

Dans cet article, je vais traiter la mise en place d’un serveur maître en lecture et écriture et un serveur esclave en lecture ; car dans la
réplication, on peut trouver une multitude de façons de mettre en
réplication des serveurs de base de données.

Avec un système de réplication, on obtient trois grands points :

- Performance
- Tolérance de panne
- Protection des données

MySQL gère la réplication de la façon suivante : vous devez avoir un
serveur "maître" et un ou plusieurs serveurs "esclaves". Chaque serveur esclave va récupérer à intervalles réguliers les informations de mise à jour sur le serveur maître. Dans cette solution, vous pouvez diriger vos requêtes de mise à jour et d’insertion sur le serveur maître, et on peut diriger les requêtes de type lecture
SELECT sur les serveurs esclaves.

MySQL stocke sur le serveur maître toutes les demandes de mise à jour dans un fichier binaire : le binary update log. Les serveurs esclaves téléchargent à intervalles réguliers la partie du binary log dont ils ont besoin, puis ils exécutent les requêtes téléchargées pour mettre à jour leurs données. Ce qui implique que les serveurs esclaves n’ont pas le même degré
de mise à jour.

Le serveur maître ne sait pas combien il y a de serveurs esclaves.

La situation que MySQL gère le mieux et sans problème est :

- La sauvegarde
- La diffusion d’informations

Par exemple, un site sur un site 1 avec le serveur maître et un serveur esclave sur un site 2 en lecture.

La pratique

Il faut un utilisateur sur le serveur maître qui a les privilèges d’accès aux fichiers (FILE PRIVILEGES).

Il faut arrêter le serveur maître pour faire une sauvegarde des bases au repliquer.
service mysql stop

Sauvegarder les bases avec cette commande :
tar -cvf /tmp/copie.tar
/chemin/devos/donnees

Modifier le fichier de configuration my.cnf du serveur maître, il doit ressembler à cela :

[mysqld]
log-bin
server-id=1
binlog-do-db=votre_base

Redémarrer le serveur maître avec serveur mysql start

Il faut arrêter le serveur esclave pour modifier le my.cnf.

service mysql stop

Modifier le fichier my.cnf du serveur esclave :

[mysqld]
server-id=2
master-host=ip_du_maître
master-user=replique
master-password=*****
master-port=3306

Copier les données de la sauvegarde sur le serveur esclave et assurez-vous d’avoir le même système de gestion des droits d’accès sur les deux serveurs.

Redémarrez le serveur esclave.

Pour vérifier que tout fonctionne, tapez cette commande : mysqladmin processlist -p
dans une shell sur le serveur maître puis sur le serveur esclave.

SPIP | Plan du site | Suivre la vie du site RSS 2.0 |

0 visiteurs en ce moment