Maison > base de données > tutoriel mysql > Introduction détaillée sur la façon d'utiliser Docker pour créer rapidement un environnement de réplication maître-esclave MySQL

Introduction détaillée sur la façon d'utiliser Docker pour créer rapidement un environnement de réplication maître-esclave MySQL

黄舟
Libérer: 2017-03-04 14:51:58
original
1222 Les gens l'ont consulté

Dans le processus d'apprentissage de MySQL, les effets de divers paramètres sont souvent testés. À l’heure actuelle, vous devez créer rapidement une instance MySQL, même une instance maître-esclave.

Considérez le scénario suivant :

Par exemple, je souhaite tester l'impact de mysqldump sur la table myisam lorsque le paramètre --single-transaction est spécifié.

À l'origine, je voulais le réaliser dans un environnement de test prêt à l'emploi, mais il y a une grande quantité de données dans l'environnement de test. Exécutez mysqldump pour préparer complètement le fichier SQL généré, sur lequel il est difficile de rechercher. le tableau.

En ce moment, je suis particulièrement désireux d'avoir un ensemble d'exemples propres à tester.


En ce moment, il est particulièrement nécessaire de développer rapidement des capacités. De nombreux enfants peuvent se demander : cela ne peut-il pas être réalisé grâce à des scripts ? Pourquoi utiliser Docker ?

Sentiment personnel : le script est trop lourd et implique beaucoup de travail supplémentaire, comme la création d'utilisateurs, un processus d'initialisation de la base de données relativement long et le processus de démarrage de MySQL. Ce dont j'ai besoin, c'est de la capacité de construire rapidement et. détruire rapidement.

Et c’est la force de Docker.

Ce qui suit est le temps nécessaire pour démarrer une instance à l'aide de Docker, qui est inférieur à 1 seconde. Si vous utilisez un script pour le faire, ce ne sera jamais aussi rapide.


# time  docker run --name slave -v /etc/slave.cnf:/etc/mysql/my.cnf -v //lib/mysql/slave://lib/mysql -p3307:-e MYSQL_ROOT_PASSWORD= -d mysql:
Copier après la connexion


J'ai donc écrit un script basé sur Docker, qui peut créer un nouvel environnement de réplication maître-esclave MySQL en 30 environ secondes

#!/bin/=/var/lib/mysql/=/var/lib/mysql/ - - - ---name master -v /etc/master.cnf:/etc/mysql/my.cnf -v $MASTER_DIR:/var/lib/mysql  
--net=host -e MYSQL_ROOT_PASSWORD= -d mysql:.--name slave -v /etc/slave.cnf:/etc/mysql/my.cnf -v $SLAVE_DIR:/var/lib/mysql --net=host -e 
MYSQL_ROOT_PASSWORD= -. -it master mysql -S /var/lib/mysql/mysql.sock -e LAVE ON *.* TO @;=`docker exec -it master mysql 
-S /var/lib/mysql/mysql.sock -e =`  |   =`  |  =-it slave mysql -S /var/lib/mysql/mysql.sock -e eplrepldocker exec -it slave mysql 
-S /var/lib/mysql/mysql.sock -e   /etc/ [ $? -eq  ];
      >> /etc/  >> /etc/  >> /etc//etc/
Copier après la connexion

Le script lui-même n'a pas grand chose à expliquer. Une fois le conteneur maître-esclave démarré, il suit toujours le processus commun d'établissement de la réplication maître-esclave.

Parlez principalement des options impliquées dans la création d'un conteneur.

docker run --name master -v /etc/master.cnf:/etc/mysql/my.cnf -v $MASTER_DIR:/var/lib/mysql  
--net=host -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6.34
Copier après la connexion


-v /etc/master.cnf:/etc/mysql/my.cnf : mappez le fichier de configuration local au fichier de configuration du conteneur, donc, le L'effet de modification du fichier de configuration du conteneur peut être obtenu en modifiant le fichier de configuration local.

-v $MASTER_DIR:/var/lib/mysql : Mappez le répertoire local au répertoire de données du conteneur. Cela facilite la visualisation du contenu du répertoire de données. Sinon, il sera enregistré dans /var. /lib/docker par défaut. Répertoire /volumes, il est vraiment peu pratique à afficher.

--net=host : Le partage du réseau de l'hôte réduit considérablement la complexité de la communication entre les conteneurs.

Remarque

Lorsque le script démarre pour la première fois, le conteneur précédent sera supprimé. Cela implique deux étapes : 1. Supprimez le conteneur via la commande docker

2. Supprimez le répertoire de données du conteneur précédent via la commande du système d'exploitation.

Si vous ne le supprimez pas, lorsque vous créerez à nouveau le conteneur via la commande suivante, le répertoire de données précédent ne sera pas effacé, mais sera chargé directement, ce qui équivaut à démarrer une nouvelle instance avant le mysqld le processus a été lancé.


Cela nous donne également une idée. Si vous souhaitez simplement tester le fonctionnement des paramètres et ne souhaitez pas créer une nouvelle instance, il vous suffit de le faire. supprimez le conteneur via la commande docker et modifiez le fichier de configuration, créez simplement le conteneur via la commande ci-dessus.
docker run --name master -v /etc/master.cnf:/etc/mysql/my.cnf -v $MASTER_DIR:/var/lib/mysql  
--net=host -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6.34
Copier après la connexion

Après avoir démarré l'instance, nous avons effectué une opération pour redémarrer l'instance, car lors du test, nous avons constaté que si nous effectuons des opérations telles que docker exec -it master bash, cela entraînera la panne du conteneur ( la raison spécifique de l'arrêt n'est pas encore analysée), mais il n'y aura aucun problème après le redémarrage de l'instance.

docker stop master slave
docker start master slave

sleep 3
Copier après la connexion


Définir les touches de raccourcimysql : client mysql, vous pouvez utiliser ce client Connect aux serveurs MySQL sur d'autres hôtes.

master : exécutez master pour vous connecter à l'instance principale locale, éliminant ainsi le besoin de spécifier le nom d'hôte et le port.

salve : Exécutez slave pour vous connecter à l'instance esclave locale.

Ce qui précède est une introduction détaillée sur la façon d'utiliser Docker pour créer rapidement un environnement de réplication maître-esclave MySQL. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal