Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Wo wird die Datenbank in Docker-Microservices platziert?

Wo wird die Datenbank in Docker-Microservices platziert?

PHPz
PHPzOriginal
2023-04-18 10:25:40943Durchsuche

Mit der weit verbreiteten Anwendung der Microservice-Architektur ist Docker zu einer sehr beliebten Wahl für die Bereitstellung geworden. Für diejenigen, die Docker noch nicht für die Bereitstellung von Mikrodiensten verwenden und sich noch in der Lernphase befinden, kann die Frage, wo die Datenbank abgelegt werden soll, jedoch eine verwirrende Frage sein. In diesem Artikel wird untersucht, wo Datenbanken in Docker-Microservices platziert werden und wie mit der dauerhaften Speicherung und Sicherung von Datenbanken umgegangen wird.

Lassen Sie uns zunächst einige Grundlagen von Microservices und Docker besprechen.

Was sind Microservices?

Microservices ist eine Softwarearchitektur, die auf kleinen, autonomen Diensten basiert. Jeder Dienst kann unabhängig bereitgestellt, aktualisiert, erweitert und gewartet werden. Verschiedene Dienste können unterschiedliche Technologie-Stacks nutzen, um die Flexibilität und Skalierbarkeit zu maximieren.

Was ist Docker?

Docker ist eine Anwendung, die auf dem Linux-Betriebssystem läuft und eine Containerisierungstechnologie ist, die zum Verpacken und Ausführen von Anwendungen verwendet werden kann. Docker-Container sind eigenständige, ausführbare und leicht portierbare Paketformate, die eine Anwendung und alle dafür erforderlichen Abhängigkeiten (z. B. Laufzeit, Bibliotheken, Umgebungsvariablen usw.) enthalten können.

Kehren wir nun zum Thema der Datenbankplatzierung in Docker-Microservices zurück.

In Docker-Microservices werden Datenbanken normalerweise in zwei Typen unterteilt: relationale Datenbanken und nicht relationale Datenbanken. Beispielsweise sind MySQL, PostgreSQL und Oracle relationale Datenbanken, während MongoDB, Cassandra und Redis nicht relationale Datenbanken sind. Hier konzentrieren wir uns auf relationale Datenbanken.

  1. Die Datenbank als Container ausführen

Die Datenbank als Container ausführen ist die gängigste Praxis bei Docker-Microservices. Für relationale Datenbanken wie MySQL können wir das offizielle MySQL-Image verwenden. Auf diese Weise können wir die Datenbank einfach bereitstellen und starten, und der Datenbankcontainer kann zusammen mit anderen Containern bereitgestellt und bereitgestellt werden.

Ein Nachteil dieser Methode besteht jedoch darin, dass Docker-Container kurzlebig sind und die Daten im Container nicht gespeichert werden, nachdem der Container gestoppt wurde. Das heißt, wenn der Container abstürzt oder neu gestartet werden muss, gehen alle Daten in der Datenbank verloren. Daher müssen wir eine dauerhafte Speichermethode verwenden, um diese Situation zu vermeiden.

  1. Verwenden Sie Volumes, um Daten beizubehalten.

Eine der häufigsten Methoden, um Daten beizubehalten, ist die Verwendung von Docker-Volumes. Ein Docker-Volume ist ein unabhängiges persistentes Speichergerät in Docker, das mit Containern verwendet werden kann. Durch das Mounten des Volumes in den Datenbankcontainer können wir die Daten auf der Festplatte statt im Container behalten. Auf diese Weise bleiben die Daten auch dann im Volume erhalten, wenn der Container gelöscht oder neu erstellt wird.

Bei der Verwendung von Docker-Volumes müssen wir einige Punkte beachten:

  • Stellen Sie sicher, dass die Berechtigungen des Volumes mit den Berechtigungen des Datenbankcontainers übereinstimmen.
  • Sichern Sie die Daten im Volume regelmäßig, um die Datensicherheit zu gewährleisten.

Für eine MySQL-Datenbank können Sie die folgenden Schritte verwenden, um das Volume in den Docker-Container zu mounten:

  1. Erstellen Sie das Volume
$ docker volume create mysql-data
  1. Starten Sie den MySQL-Container
$ docker run --name mysql-server -e MYSQL_ROOT_PASSWORD=my-secret-pw -v mysql-data:/var/lib/mysql -d mysql:latest

Mit dem obigen Befehl haben wir das Volume gemountet in das Containerverzeichnis /var/lib/mysql, das das Standarddatenbankverzeichnis für MySQL ist.

  1. Sichern Sie die Daten im Volume

Wenn Sie bei Verwendung von Docker-Volumes die Daten im Volume sehr wichtig sind, sollten Sie die Daten regelmäßig sichern. Es gibt viele Tools in Docker, die Daten in Volumes automatisch sichern können. Bei MySQL-Datenbanken können wir den Befehl mysqldump verwenden, um die Datenbank auf einer lokalen Festplatte oder anderswo zu sichern.

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

Mit dem obigen Befehl haben wir die Datenbank im Verzeichnis /my/backup/folder gesichert.

  1. Platzieren Sie die Datenbank auf dem Host.

Eine andere gängige Möglichkeit, eine Datenbank zu platzieren, besteht darin, die Datenbank auf dem Host zu installieren, anstatt die Datenbank als Container auszuführen. Der Vorteil dieser Methode besteht darin, dass die Datenbankdaten dauerhaft auf dem Hostcomputer gespeichert werden können, ohne dass Volumes zum Speichern der Daten verwendet werden müssen. Wenn wir jedoch auf mehreren Hosts bereitstellen müssen, ist es nicht praktisch, die Datenbank auf jedem Host zu platzieren. Zu diesem Zeitpunkt müssen wir andere Datenbank-Clustering-Technologien verwenden, um die Datensynchronisierung zwischen mehreren Hosts sicherzustellen.

Zusammenfassung

Bei Docker-Mikrodiensten ist die Datenbankplatzierung ein sehr komplexes Thema, und die kurzlebige Natur des Containers und die dauerhafte Speicherung von Daten müssen berücksichtigt werden. Indem wir die Datenbank als Container ausführen und Volumes zum Speichern von Daten verwenden, können wir unsere Datenbank einfach bereitstellen und verwalten. Allerdings müssen wir auch auf den Schutz der Daten im Volume achten und die Daten regelmäßig sichern. Wenn Sie die Bereitstellung auf mehreren Hosts durchführen müssen, müssen Sie andere Datenbank-Clustering-Technologien in Betracht ziehen.

Das obige ist der detaillierte Inhalt vonWo wird die Datenbank in Docker-Microservices platziert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn