Maison >Opération et maintenance >Docker >Où est placée la base de données dans les microservices Docker ?

Où est placée la base de données dans les microservices Docker ?

PHPz
PHPzoriginal
2023-04-18 10:25:401007parcourir

Avec l'application généralisée de l'architecture des microservices, Docker est devenu un choix de déploiement très populaire. Cependant, pour ceux qui débutent dans l’utilisation de Docker pour le déploiement de microservices et qui sont encore en phase d’apprentissage, la question de savoir où placer la base de données peut être une question déroutante. Cet article explorera où placer les bases de données dans les microservices Docker et comment gérer le stockage persistant et la sauvegarde des bases de données.

Tout d’abord, passons en revue quelques bases des microservices et de Docker.

Que sont les microservices ?

Les microservices sont une architecture logicielle basée sur de petits services autonomes. Ces services sont conçus autour de fonctions métiers. Chaque service peut être déployé, mis à niveau, étendu et maintenu indépendamment. Différents services peuvent utiliser différentes piles technologiques pour maximiser la flexibilité et l’évolutivité.

Qu'est-ce que Docker ?

Docker est une application qui s'exécute sur le système d'exploitation Linux et est une technologie de conteneurisation qui peut être utilisée pour empaqueter et exécuter des applications. Les conteneurs Docker sont des formats de packaging autonomes, exécutables et facilement portables qui peuvent contenir une application et toutes les dépendances dont elle a besoin (par exemple, le runtime, les bibliothèques, les variables d'environnement, etc.).

Maintenant, revenons à la question du placement des bases de données dans les microservices Docker.

Dans les microservices Docker, les bases de données sont généralement divisées en deux types : les bases de données relationnelles et les bases de données non relationnelles. Par exemple, MySQL, PostgreSQL et Oracle sont des bases de données relationnelles, tandis que MongoDB, Cassandra et Redis sont des bases de données non relationnelles. Ici, nous nous concentrerons sur les bases de données relationnelles.

  1. Exécuter la base de données en tant que conteneur

Exécuter la base de données en tant que conteneur est la pratique la plus courante dans les microservices Docker. Pour les bases de données relationnelles telles que MySQL, nous pouvons utiliser l'image MySQL officielle. De cette façon, nous pouvons facilement déployer et démarrer la base de données, et le conteneur de base de données peut être livré et déployé avec d'autres conteneurs.

Cependant, un inconvénient de cette méthode est que les conteneurs Docker sont éphémères et que les données contenues dans le conteneur ne seront pas enregistrées une fois le conteneur arrêté. Cela signifie que si le conteneur plante ou doit être redémarré, toutes les données de la base de données seront perdues. Par conséquent, nous devons utiliser une méthode de stockage persistante pour éviter cette situation.

  1. Utiliser des volumes pour conserver les données

L'un des moyens les plus courants de conserver des données consiste à utiliser des volumes Docker. Un volume Docker est un périphérique de stockage persistant indépendant dans Docker qui peut être utilisé avec des conteneurs. En montant le volume dans le conteneur de base de données, nous pouvons conserver les données sur le disque plutôt que dans le conteneur. De cette façon, les données restent dans le volume même si le conteneur est supprimé ou recréé.

Lors de l'utilisation de volumes Docker, nous devons prêter attention à quelques points :

  • Assurez-vous que les autorisations du volume correspondent aux autorisations du conteneur de base de données.
  • Sauvegardez régulièrement les données du volume pour garantir la sécurité des données.

Pour la base de données MySQL, vous pouvez suivre les étapes suivantes pour monter le volume dans le conteneur Docker :

  1. Créer le volume
$ docker volume create mysql-data
  1. Démarrer le conteneur MySQL
$ docker run --name mysql-server -e MYSQL_ROOT_PASSWORD=my-secret-pw -v mysql-data:/var/lib/mysql -d mysql:latest

Dans la commande ci-dessus, nous avons monté le volume dans le répertoire conteneur /var/lib/mysql, qui est le répertoire de base de données par défaut pour MySQL.

  1. Sauvegarder les données du volume

Lors de l'utilisation de volumes Docker, si les données du volume sont très importantes, vous devez les sauvegarder régulièrement. Il existe de nombreux outils dans Docker qui peuvent sauvegarder automatiquement les données en volumes. Pour les bases de données MySQL, nous pouvons utiliser la commande mysqldump pour sauvegarder la base de données sur un disque local ou ailleurs.

$ docker exec mysql-server sh -c 'exec mysqldump --all-databases -u root -p"$MYSQL_ROOT_PASSWORD"' > /my/backup/folder/all-databases.sql

Dans la commande ci-dessus, nous avons sauvegardé la base de données dans le répertoire /my/backup/folder.

  1. Placer la base de données sur l'hôte

Une autre façon courante de placer une base de données consiste à installer la base de données sur l'hôte au lieu d'exécuter la base de données en tant que conteneur. L'avantage de cette méthode est que les données de la base de données peuvent être stockées de manière persistante sur la machine hôte sans utiliser de volumes pour stocker les données. Cependant, si nous devons déployer sur plusieurs hôtes, il n’est pas pratique de placer la base de données sur chaque hôte. À l'heure actuelle, nous devons utiliser d'autres technologies de clustering de bases de données pour assurer la synchronisation des données entre plusieurs hôtes.

Résumé

Dans les microservices Docker, le placement des bases de données est une question très complexe, et la nature éphémère du conteneur et le stockage persistant des données doivent être pris en compte. En exécutant la base de données en tant que conteneur et en utilisant des volumes pour conserver les données, nous pouvons facilement déployer et gérer notre base de données. Cependant, nous devons également veiller à protéger les données du volume et les sauvegarder régulièrement. Si vous devez déployer sur plusieurs hôtes, vous devez envisager d'autres technologies de clustering de bases de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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