Lösen Sie das Problem des MySQL-Datenverlusts, wenn Docker Redis neu startet

Lösen Sie das Problem des MySQL-Datenverlusts, wenn Docker Redis neu startet

Amtliche Dokumentation:

Daher sollte MySQL wie folgt gestartet werden:

docker run -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=Passwort -v /Windows-Laufwerk/angegebener Ordnerpfad:/var/lib/mysql mysql:5.7

Redis:

docker run -p 6379:6379 -d -v /Windows-Laufwerk/angegebener Ordnerpfad:/Daten redis:5.0 redis-server --appendonly yes

Lesen Sie weitere offizielle Dokumente, die detaillierte Anweisungen enthalten

Zusatzwissen: Docker mountet Dateien in den Container und ändert sich nach der Änderung nicht, daher muss es neu gestartet werden

Heute habe ich ein sehr seltsames Phänomen festgestellt. Nachdem ich die Datei auf dem Host in Docker gemountet hatte, löschte ich die Datei auf dem Host und lud die Datei mit demselben Namen erneut hoch, aber die Datei im Container wurde nicht synchronisiert.

Lassen Sie uns zuerst über Linux sprechen. Der Linux-Speicher ist in iNode und Block unterteilt. iNode speichert die Attributinformationen der Datei, z. B. Größe und Speicherort auf der Festplatte. Block ist ein 4-Kilobyte-Block, der die tatsächlichen Informationen der Datei speichert. Dateien mit einer Größe von weniger als 4 KB belegen auch 4 KB Speicherplatz.

Nachdem wir das oben Gesagte verstanden haben, sprechen wir über Docker. Die in Docker gemountete Datei ist eigentlich ein von Docker gespeicherter iNode. Über diesen iNode kann er den Block finden, also die eigentlichen Dateiinformationen. Wenn Sie > verwenden, um eine Umleitung zum Schreiben der Datei anzuhängen, kann sie mit Docker synchronisiert werden. Wenn Sie sie jedoch mit rm umbenennen, ändert sich der iNode der Datei, aber der iNode in Docker zeigt immer noch auf den vorherigen Speicherort auf der Festplatte, sodass sich die Datei nicht geändert hat.

rm-Prinzip: rm löscht nur den iNode. Ohne den iNode kann der Block auf der Festplatte nicht auf normale Weise gefunden werden. Es sieht so aus, als wäre er gelöscht worden, aber die Dateiinformationen sind immer noch da. Die Dateiinformationen werden beim nächsten Schreiben hier überschrieben. Daher gibt es eine Möglichkeit, die gelöschten Daten wiederherzustellen. Wenn die Datei jedoch beim Löschen geöffnet ist, wird die Datei nicht gelöscht.

Dasselbe gilt für vim. Wenn Sie eine vim-Datei erstellen, kopiert sie die vorhandene Datei. Es wird eine Datei im Verzeichnis derselben Ebene geben, die mit . beginnt und mit swp endet. Wenn Sie speichern und beenden, löscht vim die Quelldatei und benennt diese Datei in den Namen der Quelldatei um, und der iNode ändert sich natürlich.

Der obige Artikel zur Lösung des Problems des MySQL-Datenverlusts beim Neustart von Redis in Docker ist der gesamte Inhalt, den der Herausgeber mit Ihnen teilt. Ich hoffe, er kann Ihnen als Referenz dienen, und ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen.

Das könnte Sie auch interessieren:
  • Spring Boot löst das Problem des Redis-Cache + MySQL-Batch-Speichers für die hochparallele Datenspeicherung
  • So stellen Sie die Datenkonsistenz zwischen MySQL und Redis sicher
  • Python extrahiert regelmäßig Daten aus Mysql und speichert sie in Redis
  • Detaillierte Erläuterung des Anwendungsfalls des Hot- und Cold-Datenaustauschs durch die Kombination von PHP mit Redis + MySQL
  • PHPs Laravel-Framework kombiniert mit MySQL- und Redis-Datenbankbereitstellung
  • So migrieren Sie eine Datenbank von MySQL zu Redis
  • So verbinden Sie Python mit MySQL, MongoDB, Redis, Memcache und anderen Datenbanken
  • Datenkonsistenzprobleme zwischen MySQL und Redis

<<:  Informationen zum Konfigurationsproblem bei der Verbindung von MyBatis mit der MySql8.0-Version

>>:  XHTML 1.0-Referenz

Artikel empfehlen

So konfigurieren Sie den Nginx-Lastausgleich

Inhaltsverzeichnis Nginx-Lastausgleichskonfigurat...

Welche Arten von MySQL-Verbindungsabfragen kennen Sie?

Vorwort Wenn die Abfrageinformationen aus mehrere...

Detaillierte Schritte zur Installation von Docker in 5 Minuten

Für die Installation von Docker auf CentOS muss d...

MySQL Order By-Codebeispiel für Sortierregeln für mehrere Felder

Sag es im Voraus Aus einer Laune heraus möchte ic...

CentOS 7.9 Installations- und Konfigurationsprozess von zabbix5.0.14

Inhaltsverzeichnis 1. Grundlegende Umgebungskonfi...

Lösen Sie das Problem des Ablaufs des TLS-Zertifikats (SSL) von Docker

Problemphänomen: [root@localhost ~]# Docker-Image...

Detaillierte Erklärung des JavaScript-Prototyps und Beispiele

Inhaltsverzeichnis Die Beziehung zwischen der Kon...

Vorschläge zur Optimierung der Webseiten-Kopfzeile

Logo-Optimierung: 1. Das Logobild sollte so klein...