Imprimer au format PDF
Transcription
Imprimer au format PDF
Simplereplicationmysql MISE EN PLACE D'UNE REPLICATION ENTRE DEUX SERVEURS MYSQL MASTER / SLAVE REPLICATION CONTINUE Préambule Version mysql-server: 5.1.43 Serveur A : 192.168.0.1 --> Serveur Maître Serveur B : 192.168.0.2 --> Serveur Esclave Masque sous réseau /24 Port par défaut MySQL: 3306 Édition des fichiers my.cnf - Arrêtez le service mysql sur les serveurs A et B avant de débuter - Ajoutez les directives suivantes: # replication log-bin = mysql-bin.log server-id =1 innodb_flush_log_at_trx_commit = 1 sync_binlog = 1 Sur le deuxième serveur (Éditez toujours le fichier /etc/mysql/my.cnf): server-id = 2 # Sans cette directive, un changement de nom d'hôte empêcherait #la réplication de fonctionner correctement relay-log = mysqld-relay-bin Édition des fichiers my.cnf 1 Simplereplicationmysql - Démarrez les services MySQL sur les serveurs A et B Création de la réplication - Connectez-vous au serveur MySQL A : mysql -h192.168.0.1 --port=3306 -uroot -p Création de l?utilisateur de réplication - Créez un utilisateur dédié à la réplication : CREATE USER 'replication'@'localhost' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* to 'replication'@'localhost'; FLUSH PRIVILEGES; - Obtenez le nom et la position du binlog : Bloquez les opérations d'écriture au préalable FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; Exemple de sortie de la commande SHOW MASTER STATUS : +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000019 | 4890520 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.08 sec) Création de la réplication 2 Simplereplicationmysql Extraction des données - Ouvrez une autre session shell (la session MySQL ayant posé le verrou ne doit pas être fermée) Extraire les données : mysqldump --all-databases --master-data > master.dump.sql - Copiez le fichier master.dump.sql sur le serveur esclave Définition du serveur Maître - Se connecter au serveur MySQL B : mysql -h192.168.0.2 --port=3306 -uroot -p Désignez le serveur maître responsable dont les bases vont être répliquées CHANGE MASTER TO MASTER_HOST='localhost', -- 192.168.0.1 MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_PORT=3306, MASTER_LOG_FILE='<nom du binlog>', -- mysql-bin.000019 MASTER_LOG_POS=<position du binlog>;-- 4890520 quittez la session mysql exit; Importation des données - Importez les données du serveur maître sur le serveur B: mysql -uroot -p < master.dump.sql Lancement de la réplication - Démarrez la réplication : Extraction des données 3 Simplereplicationmysql mysql -uroot -p -e 'START SLAVE;' Les opérations effectuées sur le serveur Serveur A sont maintenant répliquées en continu sur le serveur B Quelques commandes utiles SHOW MASTER STATUS exécutée sur un serveur maître, cette commande permet de connaître les coordonnées du log binaire ; SHOW SLAVE STATUS exécutée sur un serveur esclave, cette commande permet de connaître l'état de la liaison entre le serveur esclave et le serveur maître ; SHOW PROCESSLIST exécutée sur n'importe quel serveur, cette commande permet de connaître l'activité des esclaves liés au serveur. Outils intéressants - Maatkit Les outils proposés par la suite logicielle (gratuite et libre) Maatkit (http://www.maatkit.org) peuvent se révéler extrêmement intéressants pour exploiter une architecture de réplication MySQL. Une présentation de ces outils est disponible à l'adresse : http://www.slideshare.net/MySQLConference/make-your-life-easier-withmaatkit - mytop Cet utilitaire permet de surveiller le fonctionnement d'une base de données MySQL à la manière de l'outil GNU/Linux top : http://jeremy.zawodny.com/mysql/mytop/ Supervision de la réplication (NAGIOS) A l'époque j?utilisais la version 3.2.0 Nagios est l?outil de monitoring par excellence du monde libre. Supervision de la réplication (NAGIOS) 4 Simplereplicationmysql Script de monitoring de réplication Il existe des scripts de surveillance de réplication sur internet. Il est possible de se rendre sur le site de nagios plugins. http://exchange.nagios.org/directory/Plugins/Databases/MySQL/MySQL-Replication-Lag-Time/details - Déposez le script dans le répertoire où se trouve les plugins. /usr/local/nagios/libexec - Ajoutez le mode d?exécution chmod 755 sur le script. Définition du service define service{ use generic-service host_name 192.168.0.2 service_description MySQL Replication Status check_command check_mysql_slavestatus!3306!user!password } Définition de la commande de réplication 1. 'check_mysql_slavestatus' command definition define command{ command_name check_mysql_slavestatus Script de monitoring de réplication 5 Simplereplicationmysql command_line $USER1$/check_mysql_slavestatus.sh -H 192.168.0.2 -P $ARG1$ -u $ARG2$ -p $ARG3$ } Exemple : Bibliographie Les sites et ouvrages suivants se sont révélés utiles à la mise en place de l'architecture décrite dans ce document : http://dev.mysql.com/doc/refman/5.1/en/replication-howto.html http://dev.mysql.com/doc/refman/5.1/en/replication-features.html http://dev.mysql.com/doc/refman/5.1/en/replication-solutions-diffengines.html http://dev.mysql.com/doc/refman/5.1/en/replication-implementationdetails. http://www.mysqlperformanceblog.com/2008/04/28/mysql-replication-vs-drbdbattles/ http://www.xaprb.com/blog/2007/01/20/how-to-make-mysql-replicationreliable/ http://serverfault.com/questions/42884/why-exactly-is-skip-slave-startrecommended-with-mysql-start-slave-until http://oreilly.com/catalog/9780596101718 Bibliographie 6