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

Documents pareils