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:
|
<<: Das Konzept von MTR in MySQL
>>: So verwenden Sie Vuex in einem Vue-Projekt
Nach dem Kauf eines Alibaba Cloud-Servers müssen ...
Um die Methode zur Formularübermittlung zusammenz...
Pseudoelemente und Pseudoklassen Apropos, schauen...
registrieren Das Front-End verwendet Axios in Vue...
Fügen Sie der angegebenen Datei im Dockerfile meh...
xml <?xml version="1.0" encoding=&qu...
In diesem Artikelbeispiel wird der spezifische Co...
Aus Langeweile habe ich ein paar einfache Übungen...
Quellcode herunterladen Git-Klon https://github.c...
Vorwort: Ich habe oft von Datenbankparadigmen geh...
Inhaltsverzeichnis Nachdem Sie einen Container lo...
Inhaltsverzeichnis 1. Boolesche Werte 2. Ausdruck...
Bevor Sie mit dem Haupttext dieses Artikels begin...
Code kopieren Der Code lautet wie folgt: <!DOC...
Stapelweises Ersetzen eines Teils der Daten eines...