Beispiel für die Bereitstellung von MySQL 8.0 mit Docker

Beispiel für die Bereitstellung von MySQL 8.0 mit Docker

1. Informationen zur Installation von Docker finden Sie auf der offiziellen Website

2. Ziehen Sie das MySQL-Image (ziehen Sie standardmäßig das neueste Image) 8.0.11

Docker-Pull MySQL

3. Erstellen Sie persistente MySQL-Daten und mysql.cnf auf dem Host

mkdir /usr/local/mysqlData/test/cnf
mkdir /usr/local/mysqlData/test/data
vi /usr/loal/mysqlData/test/cnf/mysql.cnf

So richten Sie die lokale Dateifreigabe ein:

Docker -> Einstellungen... -> Dateifreigabe


4. Betriebsberechtigungen hinzufügen

chmod 777 /usr/local/mysqlData/test/data Hinweis: Berechtigungsüberprüfung beim Mounten (Betriebsberechtigungen)

5. Führen Sie das Image aus, legen Sie das Startkennwort fest, ordnen Sie den lokalen Port dem Docker-Port zu und mounten Sie die lokale Datenfestplatte ( starten Sie den msyql-Dienst ).

docker run -itd -p 3307:3306 --name test_mysql -v /usr/local/mysqlData/test/conf:/etc/mysql
 -v /usr/local/mysqlData/test/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql

Laufergebnisse:


6. Geben Sie den test_mysql-Container ein

Docker exec -it test_mysql bash

Wie in der Abbildung gezeigt:

7. Melden Sie sich im Container bei MySQL an


8. Benutzerinformationen anzeigen

mysql> wähle Benutzer, Host, Authentifizierungszeichenfolge aus mysql.user;

+------------------+----------+----------------------------------------------------------+

| Benutzer | Host | Authentifizierungszeichenfolge |

+------------------+----------+----------------------------------------------------------+

| Wurzel | % | $A$005$7o{'|'AomAw(QvF#.p5wLtCnrG6yX6XQdDVQivGr96POVL.gKnhIAhUhl3. |

| mysql.infoschema | localhost | *DIES IST KEIN GÜLTIGES PASSWORT, DAS HIER VERWENDET WERDEN KANN |

| mysql.session | localhost | *DIES IST KEIN GÜLTIGES PASSWORT, DAS HIER VERWENDET WERDEN KANN |

| mysql.sys | localhost | *DIES IST KEIN GÜLTIGES PASSWORT, DAS HIER VERWENDET WERDEN KANN |

| root | lokaler Host | $A$005$0%)i)H{uYi@zFo7uYF82fYw7DsA93vYLr4uZv6I1tSKao0sbzzcDap3 |

+------------------+----------+----------------------------------------------------------+

5 Zeilen im Satz (0,00 Sek.)

9. Berechtigungen festlegen (Root-Berechtigungen zuweisen, damit Sie eine Remoteverbindung herstellen können)

mysql> gewähre root@'%' mit GRANT OPTION alle PRIVILEGIEN für *.*;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

10. Da der Kennwortalgorithmus in MySQL 5.6 und höher geändert wurde, muss der Kennwortalgorithmus hier aktualisiert werden, um die Verwendung der Navicat-Verbindung zu erleichtern

mysql> gewähre root@'%' mit GRANT OPTION alle PRIVILEGIEN für *.*;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

mysql> ALTER-Benutzer 'root'@'%' IDENTIFIZIERT DURCH '123456'. PASSWORT LÄUFT NIE AB;
Abfrage OK, 0 Zeilen betroffen (0,11 Sek.)

mysql> ALTER-Benutzer „root“@„%“ IDENTIFIZIERT MIT mysql_native_password DURCH „123456“;
Abfrage OK, 0 Zeilen betroffen (0,11 Sek.)

mysql> FLUSH-PRIVILEGIEN;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

11. Verwenden Sie Navicat, um eine Verbindung zu MySQL herzustellen, wie in der Abbildung gezeigt:



12. Erstellen Sie eine Datenbank, eine Tabelle und fügen Sie Daten hinzu




Zeigen Sie den Inhalt der bereitgestellten lokalen Datenfestplatte an:


13. Testen Sie, ob die Daten nach dem Entfernen des Containers noch vorhanden sind

docker rm -f test_msyql 


Der Container wurde entfernt. Stellen Sie test_mysql erneut bereit, beziehen Sie sich auf Schritt 5, geben Sie den neuen Container ein und greifen Sie auf die Datenbank zu:

xushijiandeiMac:Daten xushijian$ docker run -itd -p 3307:3306 --name test_mysql -v /usr/local/mysqlData/test/conf:/etc/mysql -v /usr/local/mysqlData/test/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
65b7a60050aaef5765ed055acfd071c7c76f60e85dc25d0e73e0d56eae14aed1
xushijiandeiMac:Daten xushijian$ docker exec -it test_mysql bash
root@65b7a60050aa:/#mysql -uroot -p
Passwort eingeben: 
Willkommen beim MySQL-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MySQL-Verbindungs-ID ist 8
Serverversion: 8.0.11 MySQL Community Server – GPL

Copyright (c) 2000, 2018, Oracle und/oder seine Tochtergesellschaften. Alle Rechte vorbehalten.

Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer
Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen
Eigentümer.

Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.

mysql> Datenbanken anzeigen;
+--------------------+
| Datenbank |
+--------------------+
| Informationsschema |
|mysql |
| Leistungsschema |
|System|
| Prüfung |
+--------------------+
5 Zeilen im Satz (0,01 Sek.)

mysql> Test verwenden;
Einlesen von Tabelleninformationen zur Vervollständigung von Tabellen- und Spaltennamen
Sie können diese Funktion deaktivieren, um einen schnelleren Start mit -A zu erhalten

Datenbank geändert
mysql> wähle * von Benutzer_Benutzer;
+---------+-----------+-------------+--------+
| Benutzer-ID | Benutzername | Telefon | Notiz |
+---------+-----------+-------------+--------+
| 1 | Nicht gerade | 13980000000 | Test |
+---------+-----------+-------------+--------+
1 Zeile im Satz (0,06 Sek.)

Es zeigt sich, dass die Daten auch ohne zusätzliche Konfiguration weiterhin genutzt werden können, wodurch eine Datenpersistenz erreicht wird.

MySQL in Docker auf Alibaba Cloud bereitstellen (Bereitstellung über Orchestrierungsvorlage)

<1. Die Konfiguration ist ähnlich wie in Schritt 3 (nur das Verzeichnis ändert sich)

Master:
 Bild: „mysql:latest“
 Umfeld:
  -MYSQL_ROOT_PASSWORD=123456
 Häfen:
  - „3307:3306/tcp“
 Bände:
  - '/usr/local/mysqlData/master/conf:/etc/mysql:rw'
  - „/usr/local/mysqlData/master/data:/var/lib/mysql:rw“
 Beschriftungen:
  aliyun.scale: "1"

<2. Wie unten gezeigt, ist die Bereitstellung abgeschlossen

[root@c13a6d832fd0a49398c62002361d75c60-node1 ~]# löschen
[root@c13a6d832fd0a49398c62002361d75c60-node1 ~]# Docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN


8597b7539a3a mysql:latest "docker-entrypoint..." vor 3 Minuten Vor 3 Minuten 0.0.0.0:3307->3306/tcp mysql_master_1


<3. Geben Sie den Container ein und legen Sie die Berechtigungen fest. Der nachfolgende Prozess bezieht sich auf den lokalen Computer

[root@c13a6d832fd0a49398c62002361d75c60-node1 /]# docker exec -it mysql_master_1 bash
root@2fc0bbf48941-mysql-master-1:/# mysql -uroot -p
Passwort eingeben: 
Willkommen beim MySQL-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MySQL-Verbindungs-ID ist 8
Serverversion: 8.0.11 MySQL Community Server – GPL

Copyright (c) 2000, 2018, Oracle und/oder seine Tochtergesellschaften. Alle Rechte vorbehalten.

Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer
Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen
Eigentümer.

Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.

MySQL>

<4. Öffnen Sie Port 3307, damit er vom externen Netzwerk aus erreicht werden kann

Cloud Server ECS -> Sicherheitsgruppe -> Region auswählen -> Regeln konfigurieren -> Sicherheitsgruppe hinzufügen


Fügen Sie eine Sicherheitsgruppe hinzu, wie in der Abbildung gezeigt:


5. Externer Netzwerkzugriff, wie unten gezeigt


Verbindung erfolgreich hergestellt.

Aufbau einer Master-Slave-Umgebung:

Hauptbibliothek:

[root@c13a6d832fd0a49398c62002361d75c60-node1 ~]# docker exec -it mysql_master_1 bash
root@2fc0bbf48941-mysql-master-1:/# mysql -uroot -p
Passwort eingeben: 
Willkommen beim MySQL-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MySQL-Verbindungs-ID ist 9
Serverversion: 8.0.11 MySQL Community Server – GPL

Copyright (c) 2000, 2018, Oracle und/oder seine Tochtergesellschaften. Alle Rechte vorbehalten.

Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer
Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen
Eigentümer.

Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.

mysql> Datenbanken anzeigen;
+--------------------+
| Datenbank |
+--------------------+
| Informationsschema |
|mysql |
| Leistungsschema |
|System|
+--------------------+
4 Reihen im Satz (0,30 Sek.)

mysql> Datenbanktest erstellen;
Abfrage OK, 1 Zeile betroffen (0,12 Sek.)

mysql> Datenbank anzeigen;
FEHLER 1064 (42000): Ihre SQL-Syntax weist einen Fehler auf. Überprüfen Sie im Handbuch zu Ihrer MySQL-Serverversion die richtige Syntax in der Nähe von „Datenbank“ in Zeile 1.
mysql> Datenbanken anzeigen;
+--------------------+
| Datenbank |
+--------------------+
| Informationsschema |
|mysql |
| Leistungsschema |
|System|
| Prüfung |
+--------------------+
5 Zeilen im Satz (0,00 Sek.)

Aus der Bibliothek:

[root@c13a6d832fd0a49398c62002361d75c60-node1 ~]# docker exec -it mysql-slave_slave_1 bash
root@c8661e16e3fd-mysql-slave-slave-1:/# mysql -uroot -p
Passwort eingeben: 
Willkommen beim MySQL-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MySQL-Verbindungs-ID ist 10
Serverversion: 8.0.11 MySQL Community Server – GPL

Copyright (c) 2000, 2018, Oracle und/oder seine Tochtergesellschaften. Alle Rechte vorbehalten.

Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer
Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen
Eigentümer.

Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.

mysql> Datenbanken anzeigen;
+--------------------+
| Datenbank |
+--------------------+
| Informationsschema |
|mysql |
| Leistungsschema |
|System|
+--------------------+
4 Reihen im Satz (0,40 Sek.)

mysql> Slave-Status anzeigen\G
*************************** 1. Reihe ***************************
        Slave_IO_State: Wartet darauf, dass der Master das Ereignis sendet. Master-Slave-Konfiguration erfolgreich!
         Master_Host: 47.94.225.124
         Master_User: rep
         Master_Port: 3307
        Verbindungswiederholung: 60
       Master_Log_File: binlog.000003
     Read_Master_Log_Pos: 155
        Relay-Log-Datei: c8661e16e3fd-mysql-slave-slave-1-relay-bin.000004
        Relay_Log_Pos: 363
    Relay_Master_Log_File: binlog.000003
       Slave_IO_Running: Ja
      Slave_SQL_Running: Ja
       Replicate_Do_DB: 
     Replikat_Ignorieren_DB: 
      Tabelle_replizieren: 
    Tabelle_Ignorieren_replizieren: 
   Wild_Do_Tabelle replizieren: 
 Tabelle_Wild_Ignore_replizieren: 
          Last_Errno: 0
          Letzter_Fehler: 
         Skip_Counter: 0
     Exec_Master_Log_Pos: 155
       Relay_Log_Space: 762
       Until_Condition: Keine
        Bis_Log_Datei: 
        Bis_Log_Pos: 0
      Master_SSL_Allowed: Nein
      Master_SSL_CA_Datei: 
      Master_SSL_CA_Pfad: 
       Master_SSL_Zertifikat: 
      Master_SSL_Chiffre: 
        Master_SSL_Schlüssel: 
    Sekunden_Hinter_Master: 0
Master_SSL_Verify_Server_Cert: Nein
        Last_IO_Errno: 0
        Letzter_E/A-Fehler: 
        Last_SQL_Errno: 0
        Letzter_SQL_Fehler: 
 Server-IDs replizieren_ignorieren: 
       Master_Server_Id: 1
         Master_UUID: a482f5fe-80fb-11e8-9fb1-0242ac12020c
       Master_Info_Datei: mysql.slave_master_info
          SQL_Delay: 0
     SQL_Remaining_Delay: NULL
   Slave_SQL_Running_State: Slave hat alle Relay-Logs gelesen; wartet auf weitere Updates
      Master_Retry_Count: 86400
         Master_Bind: 
   Zeitstempel des letzten IO-Fehlers: 
   Letzter_SQL_Fehler_Zeitstempel: 
        Master_SSL_Crl: 
      Master_SSL_Crlpfad: 
      Abgerufenes_Gtid_Set: 
      Ausgeführtes_Gtid_Set: 
        Auto_Position: 0
     DB replizieren_neu schreiben: 
         Kanalname: 
      Master_TLS_Version: 
    Pfad des öffentlichen Masterschlüssels: 
    Get_master_public_key: 0
1 Zeile im Satz (0,00 Sek.)

mysql> Datenbanken anzeigen;
+--------------------+
| Datenbank |
+--------------------+
| Informationsschema |
|mysql |
| Leistungsschema |
|System|
+--------------------+
4 Reihen im Satz (1,01 Sek.)

mysql> Datenbank anzeigen;
FEHLER 1064 (42000): Ihre SQL-Syntax weist einen Fehler auf. Überprüfen Sie im Handbuch zu Ihrer MySQL-Serverversion die richtige Syntax in der Nähe von „Datenbank“ in Zeile 1.
mysql> Datenbanken anzeigen;
+--------------------+
| Datenbank |
+--------------------+
| Informationsschema |
|mysql |
| Leistungsschema |
|System|
| Prüfung |
+--------------------+
5 Zeilen im Satz (0,00 Sek.)

Analyse des Master-Slave-Bibliotheksprinzips:


Der E/A-Thread fordert das Binärprotokoll der Masterbibliothek an und schreibt das erhaltene Binärprotokoll in die Relay-Protokolldatei; die Masterbibliothek generiert einen Protokoll-Dump-Thread, um das Binärprotokoll an den E/A-Thread der Slave-Bibliothek zu übertragen;

Der SQL-Thread liest die Protokolle in der Relay-Protokolldatei und zerlegt sie in bestimmte Vorgänge, um Konsistenz zwischen den Vorgängen des Masters und des Slaves und letztendlich konsistente Daten zu erreichen.

Das heißt: Slave-IO-Thread-Anforderung -> Relay-Log -> Binärprotokoll abrufen -> Slave-SQL-Thread, analysieren

siehe:

https://docs.docker.com/ Dokumentation der offiziellen Docker-Website

https://blog.csdn.net/gf0515/article/details/80466213 Mac Navicat verbindet sich mit Docker MySql8.0

Docker MySQL Master-Slave-Replikation

https://blog.csdn.net/qq_28804275/article/details/80891951 Aufbau einer Master-Slave-Umgebung

Docker MySQL Dockerfile MySQL Open Source-Image Dockerfile und Konfiguration

https://www.cnblogs.com/Aiapple/p/5792939.html Master-Slave-Replikationsprinzip und Hochverfügbarkeitsanalyse

http://www.cnblogs.com/Aiapple/p/5793786.html Tatsächlicher Kampf

Dies ist das Ende dieses Artikels über das Beispiel zur Bereitstellung von MySQL 8.0 mit Docker. Weitere Informationen zur Bereitstellung von MySQL 8.0 mit Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Implementierung eines Docker-Compose-Bereitstellungsprojekts basierend auf MySQL8
  • Detaillierte Erläuterung zur Verwendung von Docker zum Bereitstellen der Django + MySQL8-Entwicklungsumgebung
  • So installieren Sie MySQL 8.0 in Docker
  • Upgrade der Docker-Version von MySQL 5.7 auf MySQL 8.0.13, Datenmigration
  • So installieren Sie MySQL8 in Docker
  • Docker-Bereitstellung MySQL8-Cluster (ein Master und zwei Slaves) Implementierungsschritte

<<:  Das Konzept von MTR in MySQL

>>:  So verwenden Sie Vuex in einem Vue-Projekt

Artikel empfehlen

Fallstudie zur Übermittlung von HTML-Formularen

Um die Methode zur Formularübermittlung zusammenz...

Verwendung des Fokus-innerhalb-Selektors von CSS3

Pseudoelemente und Pseudoklassen Apropos, schauen...

Beispielcode für Django+Vue-Registrierung und -Anmeldung

registrieren Das Front-End verwendet Axios in Vue...

web.config (IIS) und .htaccess (Apache) Konfiguration

xml <?xml version="1.0" encoding=&qu...

js realisiert die Bildschneidefunktion

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erklärung der Schleifenverwendung in Javascript-Beispielen

Aus Langeweile habe ich ein paar einfache Übungen...

Detaillierte Erklärung des MySQL-Datenbankparadigmas

Vorwort: Ich habe oft von Datenbankparadigmen geh...

Docker generiert Bilder über Container und übermittelt DockerCommit im Detail

Inhaltsverzeichnis Nachdem Sie einen Container lo...

Details zur Verwendung von Klassenstilen in Vue

Inhaltsverzeichnis 1. Boolesche Werte 2. Ausdruck...

Beispielcode zum Konvertieren von Videos mit der ffmpeg-Befehlszeile

Bevor Sie mit dem Haupttext dieses Artikels begin...

Stapelweises Ersetzen eines Teils der Daten eines Felds in MySQL (empfohlen)

Stapelweises Ersetzen eines Teils der Daten eines...