Kapitel 1. MySQL installieren
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Beginnen wir unseren Lernpfad, indem wir MySQL installieren und zum ersten Mal darauf zugreifen.
Beachte, dass wir uns in diesem Buch nicht auf eine einzige Version von MySQL verlassen. Stattdessen haben wir auf unser kollektives Wissen über MySQL in der Praxis zurückgegriffen. Der Schwerpunkt des Buches liegt auf Linux-Betriebssystemen (vor allem Ubuntu/Debian und CentOS/RHEL oder deren Derivaten) und auf MySQL 5.7 und MySQL 8.0, da dies unserer Meinung nach die "aktuellen" Versionen sind, die für den Produktionseinsatz geeignet sind. Die MySQL 5.7- und 8.0-Serien befinden sich noch in der Entwicklung, was bedeutet, dass auch weiterhin neuere Versionen mit Fehlerbehebungen und neuen Funktionen veröffentlicht werden.
Seit MySQL die beliebteste Open-Source-Datenbank ist (Oracle, das an erster Stelle steht, ist nicht quelloffen), ist die Nachfrage nach einem schnellen Installationsprozess gestiegen. Du kannst dir die Installation von MySQL so vorstellen wie das Backen eines Kuchens: Der Quellcode ist das Rezept. Aber selbst wenn der Quellcode verfügbar ist, ist das Rezept für die Erstellung von Software nicht einfach zu befolgen. Das Kompilieren dauert seine Zeit, und in der Regel ist es notwendig, zusätzliche Entwicklungsbibliotheken zu installieren, die die Produktionsumgebung einem Risiko aussetzen. Angenommen, du möchtest einen Schokoladenkuchen backen. Selbst wenn du die Anleitung hast, wie du ihn selbst machen kannst, möchtest du vielleicht nicht deine Küche verschmutzen oder du hast keine Zeit, ihn zu backen, also gehst du in eine Bäckerei und kaufst stattdessen einen. Für MySQL kannst du die Distributionspakete verwenden, wenn du es ohne den Aufwand des Kompilierens benutzen willst.
Distributionspakete für MySQL gibt es für verschiedene Plattformen, darunter Linux-Distributionen, Windows und macOS. Diese Pakete bieten eine flexible und schnelle Möglichkeit, MySQL zu nutzen. Um auf das Beispiel mit dem Schokoladenkuchen zurückzukommen: Angenommen, du möchtest etwas ändern. Vielleicht möchtest du einen weißen Schokoladenkuchen. Für MySQL gibt es so genannte Forks, die verschiedene Optionen enthalten. Im nächsten Abschnitt werden wir uns ein paar davon ansehen.
MySQL-Gabeln
In der Softwareentwicklung kommt es zu einem Fork, wenn jemand den Quellcode von kopiert und seinen eigenen Weg der unabhängigen Entwicklung und Unterstützung beginnt. Der Fork kann sich eng an die ursprüngliche Version anlehnen, wie bei der Percona-Distribution von MySQL, oder sich von ihr entfernen, wie bei MariaDB. Da der MySQL-Quellcode offen und frei ist, können neue Projekte den Code ohne Erlaubnis des ursprünglichen Entwicklers abspalten. Werfen wir einen Blick auf ein paar der bekanntesten Forks.
MySQL Community Edition
MySQL Community Edition, auch bekannt als die Upstream- oder Vanilla-Version von MySQL, ist die Open-Source-Version, die von Oracle vertrieben wird. Diese Version treibt die Entwicklung der InnoDB-Engine und neuer Funktionen voran und ist die erste, die Updates, neue Funktionen und Fehlerbehebungen erhält.
Percona Server für MySQL
Die Percona-Distribution von MySQL ist ein freier, quelloffener Drop-in-Ersatz für die MySQL Community Edition. Die Entwicklung orientiert sich eng an dieser Version und konzentriert sich auf die Verbesserung der Leistung und des gesamten MySQL-Ökosystems. Percona Server enthält außerdem zusätzliche Erweiterungen wie die MyRocks-Engine, ein Audit-Log-Plugin und ein PAM-Authentifizierungs-Plugin. Percona wurde von Peter Zaitsev und Vadim Tkachenko mitbegründet.
MariaDB Server
MariaDB Server wurde von Michael "Monty" Widenius und entwickelt und wird von der MariaDB Foundation vertrieben. MariaDB Server ist bei weitem der Fork, der sich am weitesten von Vanilla MySQL entfernt hat. In den letzten Jahren hat sie neue Funktionen und Engines wie MariaDB ColumnStore entwickelt und war die erste Datenbank, die die Galera 4Clustering-Funktionalität integriert hat.
MySQL Enterprise Edition
Die MySQL Enterprise Edition ist derzeit die einzige Version mit einer kommerziellen Lizenz (was bedeutet, dass du für die Nutzung bezahlen musst, wie bei einer Windows-Lizenz). Sie wird ebenfalls von Oracle vertrieben und enthält alle Funktionen der Community Edition sowie exklusive Funktionen für Sicherheit, Backup und Hochverfügbarkeit.
Installationsmöglichkeiten und Plattformen
Zuerst musst du die MySQL-Version auswählen, die mit deinem Betriebssystem (OS) kompatibel ist. Du kannst die Kompatibilität auf der MySQL-Website überprüfen. Die gleichen Supportrichtlinien gelten auch für Percona Server und MariaDB.
Wir hören oft die Frage: Ist es möglich, MySQL auf einem Betriebssystem zu installieren, das nicht unterstützt wird? In den meisten Fällen lautet die Antwort: Ja. Es ist zum Beispiel möglich, MySQL auf Windows 7 zu installieren, aber das Risiko, auf einen Fehler zu stoßen oder mit unvorhersehbarem Verhalten konfrontiert zu werden (z. B. Speicherlecks oder zu geringe Leistung), ist hoch. Wegen dieser Risiken raten wir davon ab, dies in Produktionsumgebungen zu tun.
Im nächsten Schritt musst du entscheiden, ob du eine Entwicklungs- oder eine General Availability (GA) Version installieren möchtest. Entwicklungsversionen haben die neuesten Funktionen, aber wir empfehlen sie nicht für die Produktion, da sie nicht stabil sind. GA-Releases, auch Produktions- oder stabile Releases genannt, sind für den Einsatz in der Produktion gedacht.
Tipp
Wir empfehlen dringend, die neueste GA-Version zu verwenden, da diese die neuesten stabilen Fehlerbehebungen und Leistungsverbesserungen enthält.
Als Letztes musst du entscheiden, welches Distributionsformat du für das Betriebssystem installieren möchtest. Für die meisten Anwendungsfälle ist eine Binärdistribution geeignet. Binärdistributionen sind im nativen Format für viele Plattformen erhältlich, z. B. als .rpm-Pakete für Linux oder .dmg-Pakete für macOS. Die Distributionen sind auch in allgemeinen Formaten erhältlich, z. B. als .zip-Archive oder komprimierte .tar-Dateien(Tarballs). Unter Windows kannst du den MySQL Installer verwenden, um eine Binärdistribution zu installieren.
Warnung
Achte darauf, ob die Version 32-Bit oder 64-Bit ist. Als Faustregel gilt, dass du die 64-Bit-Version wählen solltest. Sofern du nicht mit einem alten Betriebssystem arbeitest, solltest du nicht die 32-Bit-Version wählen. Das liegt daran, dass 32-Bit-Prozessoren nur eine begrenzte Menge an Arbeitsspeicher verwalten können (4 GB oder weniger), während 64-Bit-Prozessoren in der Lage sind, viel mehr Speicher zu adressieren.
Der Installationsprozess besteht aus vier Hauptschritten, die in den folgenden Abschnitten beschrieben werden. Es ist wichtig, dass du diese korrekt befolgst und die Mindestsicherheitsanforderungen für die MySQL-Datenbank einhältst.
1. Lade die Distribution herunter, die du installieren möchtest
Jede Distribution hat ihren eigenen Eigentümer und damit auch ihre eigene Quelle. Einige Linux-Distributionen bieten Standardpakete in ihren Repositories an. Unter CentOS 8 zum Beispiel ist die MySQL-Vanilla-Distribution in den Standard-Repositories verfügbar. Wenn das Betriebssystem über Standardpakete verfügt, ist es nicht nötig, MySQL von einer Website herunterzuladen oder ein Repository selbst zu konfigurieren, was den Installationsprozess erleichtert.
Wir zeigen dir, wie du die Repositories installierst und die Dateien herunterlädst, ohne dass du während des Installationsprozesses auf die Website gehen musst. Wenn du MySQL jedoch selbst herunterladen möchtest, kannst du die folgenden Links verwenden:
2. Installiere die Verteilung
Die Installation besteht aus den elementaren Schritten, um MySQL funktionsfähig zu machen und online zu bringen, aber nicht aus der Sicherung von MySQL. Zu diesem Zeitpunkt kann sich zum Beispiel der MySQL-Root-Benutzer ohne Passwort anmelden, was ziemlich gefährlich ist, da der Root-Benutzer die Berechtigung hat, jede Aktion auszuführen, einschließlich des Löschens einer Datenbank.
3. Erforderliche Nachinstallationsarbeiten durchführen
In diesem Schritt geht es darum, sicherzustellen, dass der MySQL-Server richtig funktioniert. Es ist wichtig sicherzustellen, dass dein Server sicher ist. Der erste Schritt dazu ist die Ausführung des Skripts mysql_secure_installation. Du änderst das Passwort für den Root-Benutzer, deaktivierst den Zugriff für den Root-Benutzer von einem entfernten Server und entfernst die Testdatenbank.
4. Benchmarks ausführen
Einige DBAs führen für jeden Einsatz von Benchmarks durch, um zu messen, ob die Leistung für das Projekt, für das sie es einsetzen, geeignet ist. Das gängigste Tool dafür ist sysbench
. An dieser Stelle ist es wichtig zu betonen, dass sysbench
eine synthetische Arbeitslast durchführt, während wir, wenn die Anwendung läuft, von der realen Arbeitslast sprechen. Synthetische Workloads liefern in der Regel Berichte über die maximale Serverleistung, können aber nicht den realen Workload (mit seinen inhärenten Sperren, unterschiedlichen Ausführungszeiten für Abfragen, Stored Procedures, Triggern usw.) reproduzieren.
Im nächsten Abschnitt gehen wir die Details des Installationsprozesses für einige der am häufigsten verwendeten Plattformen durch.
Installation von MySQL unter Linux
Das Linux-Ökosystem ist vielfältig und hat viele Varianten, darunter Red Hat Enterprise Linux (RHEL), CentOS, Ubuntu, Debian und andere. Dieser Abschnitt konzentriert sich nur auf die populärsten Varianten - sonst würde sich dieses Buch nur um den Installationsprozess drehen!
Installation von MySQL auf CentOS 7
CentOS, kurz für Community Enterprise Linux Operating System, wurde 2004 gegründet und 2014 von Red Hat übernommen. CentOS ist die Community-Version von Red Hat, sie sind also ziemlich identisch, aber CentOS ist kostenlos und der Support kommt von der Community und nicht von Red Hat selbst. CentOS 7 wurde 2014 veröffentlicht und hat ein End-of-Life-Datum von 2024.
Installation von MySQL 8.0
Um MySQL 8.0 unter CentOS 7 mit dem yum-Repository zu installieren, führe die folgenden Schritte aus.
Am Linux-Server anmelden
Aus Sicherheitsgründen loggen sich Benutzer normalerweise als nicht privilegierte Benutzer bei Linux-Servern ein. Hier ist ein Beispiel für einen Benutzer, der sich von einem macOS-Terminal aus mit einem privaten Schlüssel bei Linux anmeldet:
$ ssh -i key.pem centos@3.227.11.227
Nachdem du dich erfolgreich verbunden hast, siehst du im Terminal etwas wie das hier:
[centos@ip-172-30-150-91 ~]$
Root unter Linux werden
Sobald du mit dem Server verbunden bist, musst du root werden:
$ sudo su - root
In deinem Terminal siehst du dann eine Eingabeaufforderung wie die folgende:
[root@ip-172-30-150-91 ~]#
Root zu werden ist wichtig, denn um MySQL zu installieren, müssen Aufgaben wie das Anlegen des MySQL-Benutzers in Linux, das Konfigurieren von Verzeichnissen und das Setzen von Berechtigungen durchgeführt werden. Es ist auch möglich, den Befehl sudo
für alle Beispiele zu verwenden, die wir zeigen werden und die vom Benutzer root ausgeführt werden sollten. Wenn du jedoch vergisst, einem Befehl das Präfix sudo
voranzustellen, wird der Installationsprozess unvollständig sein.
Hinweis
In diesem Kapitel wird in den meisten Beispielen der Linux-Root-Benutzer verwendet (dargestellt durch die Eingabeaufforderung #
in den Codezeilen). Ein weiterer Vorteil der Darstellung #
ist, dass dies auch das Kommentarzeichen in Linux ist. Wenn du Zeilen aus dem Buch blind kopierst und einfügst, wirst du keine echten Befehle in der Shell ausführen.
MySQL 8.0 Community Server installieren
Da das MySQL yum Repository Repositories für mehrere MySQL-Versionen (5.7 und 8.0 Hauptversionen) hat, müssen wir zuerst alle Repositories deaktivieren:
# sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/mysql-community.repo
Als nächstes müssen wir das MySQL 8.0 Repository aktivieren und den folgenden Befehl ausführen, um MySQL 8.0 zu installieren:
# yum --enablerepo=mysql80-community install mysql-community-server
Starte den MySQL-Dienst
Starte nun den MySQL-Dienst mit dem Befehl systemctl
:
# systemctl start mysqld
Es ist auch möglich, den MySQL-Prozess manuell zu starten. Das kann nützlich sein, um Initialisierungsprobleme zu beheben, wenn MySQL sich weigert, zu starten. Um manuell zu starten, gibst du den Speicherort der Datei my.cnf an und gibst an, welcher Benutzer die Datenbankdateien und den Prozess manipulieren kann:
# mysqld --defaults-file=/etc/my.cnf --user=mysql
Entdecke das Standardpasswort für den Root-Benutzer
Wenn du MySQL 8.0 installierst, erstellt MySQL ein temporäres Passwort für das Root-Benutzerkonto. Um das Passwort des Root-Benutzerkontos zu ermitteln, führst du den folgenden Befehl aus:
# grep "A temporary password" /var/log/mysqld.log
Der Befehl liefert eine Ausgabe wie die folgende:
2020-05-31T15:04:12.256877Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: #z?hhCCyj2aj
Sichern Sie die MySQL-Installation
MySQL bietet ein Shell-Skript, das du auf Unix-Systemen ausführen kannst, mysql_secure_installation, mit dem du die Sicherheit deiner Serverinstallation auf folgende Weise verbessern kannst:
-
Du kannst ein Passwort für das Root-Konto festlegen.
-
Du kannst den Root-Zugriff von außerhalb des localhosts deaktivieren.
-
Du kannst anonyme Benutzerkonten entfernen.
-
Du kannst die Testdatenbank entfernen, auf die standardmäßig anonyme Benutzer zugreifen können.
Führe den Befehl mysql_secure_installation
aus, um den MySQL-Server zu sichern:
# mysql_secure_installation
Er wird dich zur Eingabeaufforderung für das aktuelle Passwort des Root-Kontos machen:
Enter the password for user root:
Gib das im vorherigen Schritt erhaltene temporäre Passwort ein und drücke die Eingabetaste. Die folgende Meldung wird angezeigt:
The existing password for the user account root has expired. Please set a new password. New password: Re-enter new password:
Hinweis
Dieser Abschnitt behandelt nur die Grundlagen des Änderns des Root-Passworts, um den Zugriff auf den MySQL-Server zu ermöglichen. In Kapitel 8 werden wir mehr Details über die Vergabe von Privilegien und die Erstellung einer Passwortrichtlinie zeigen.
Du musst das neue Passwort für das Root-Konto zweimal eingeben. Neuere MySQL-Versionen verfügen über eine Validierungsrichtlinie, die besagt, dass das neue Passwort bestimmte Mindestanforderungen erfüllen muss, um akzeptiert zu werden. Die Standardanforderungen sind, dass Passwörter mindestens acht Zeichen lang sein müssen und Folgendes beinhalten:
-
Mindestens ein numerisches Zeichen
-
Mindestens ein Kleinbuchstabe
-
Mindestens ein Buchstabe in Großbuchstaben
-
Mindestens ein Sonderzeichen (nicht alphanumerisch)
Als Nächstes wirst du mit einigen Ja/Nein-Fragen gefragt, ob du einige Änderungen an der Ersteinrichtung vornehmen möchtest. Um maximalen Schutz zu gewährleisten, empfehlen wir, anonyme Benutzer zu entfernen, die Remote-Root-Anmeldung zu deaktivieren und die Testdatenbank zu entfernen (d. h. alle Optionen mit Ja zu beantworten):
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Verbinden mit MySQL
Dieser Schritt ist optional, aber wir verwenden ihn, um zu überprüfen, ob wir alle Schritte korrekt ausgeführt haben. Benutze diesen Befehl, um dich mit dem MySQL-Server zu verbinden:
# mysql -u root -p
Es wird eine Eingabeaufforderung für das Passwort des Root-Benutzers angezeigt. Gib das Passwort ein und drücke die Eingabetaste:
Enter password:
Wenn das erfolgreich war, wird die MySQL-Befehlszeile angezeigt:
mysql>
Installation von MariaDB 10.5
Um MariaDB 10.5 auf CentOS 7 zu installieren, musst du ähnliche Schritte ausführen wie bei der Vanilla-MySQL-Distribution.
Root unter Linux werden
Zuerst müssen wir root werden. Siehe die Anweisungen in "MySQL 8.0 installieren".
Installiere das MariaDB Repository
Mit den folgenden Befehlen lädst du das MariaDB-Repository herunter und konfigurierst es für den nächsten Schritt. Beachte, dass wir in den yum
Befehlen die Option -y
verwenden. Mit dieser Option wird Linux angewiesen, alle nachfolgenden Fragen mit Ja zu beantworten:
# yum install wget -y # wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup # chmod +x mariadb_repo_setup # ./mariadb_repo_setup
MariaDB installieren
Wenn das Repository konfiguriert ist, wird mit dem nächsten Befehl die neueste stabile Version von MariaDB und seinen Abhängigkeiten installiert:
# yum install MariaDB-server -y
Das Ende der Ausgabe sieht ähnlich aus wie hier:
Installed: MariaDB-compat.x86_64 0:10.5.8-1.el7.centos MariaDB-server.x86_64 0:10.5.8-1.el7.centos Dependency Installed: MariaDB-client.x86_64 0:10.5.8-1.el7.centos MariaDB-common.x86_64 0:10.5.8-1.el7.centos boost-program-options.x86_64 0:1.53.0-28.el7 galera-4.x86_64 0:26.4.6-1.el7.centos libaio.x86_64 0:0.3.109-13.el7 lsof.x86_64 0:4.87-6.el7 pcre2.x86_64 0:10.23-2.el7 perl.x86_64 4:5.16.3-299.el7_9 perl-Carp.noarch 0:1.26-244.el7 ... Replaced: mariadb-libs.x86_64 1:5.5.64-1.el7 Complete!
Das "Complete!" am Ende des Protokolls zeigt eine erfolgreiche Installation an.
MariaDB starten
Wenn MariaDB installiert ist, initialisiere den Dienst mit dem Befehl systemctl
:
# systemctl start mariadb.service
Du kannst diesen Befehl verwenden, um seinen Status zu überprüfen:
# systemctl status mariadb
mariadb.service - MariaDB 10.5.8 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled) ... Feb 07 12:55:04 ip-172-30-150-91.ec2.internal systemd[1]: Started MariaDB 10.5.8 database server.
MariaDB sichern
Zu diesem Zeitpunkt wird MariaDB im unsicheren Modus ausgeführt. Im Gegensatz zu MySQL 8.0 hat MariaDB ein leeres Root-Passwort, sodass du sofort darauf zugreifen kannst:
# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 44 Server version: 10.5.8-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
Du kannst mysql_secure_installation
ausführen, um MariaDB zu sichern, genauso wie du es für MySQL 8.0 tun würdest (siehe den vorherigen Abschnitt für Details). Es gibt eine kleine Abweichung in der Ausgabe, mit einer zusätzlichen Frage:
Switch to unix_socket authentication [Y/n] y Enabled successfully! Reloading privilege tables.. ... Success!
Wenn du mit Ja antwortest, wird die Verbindung vom TCP/IP- zum Unix-Socket-Modus geändert. Wir werden die verschiedenen Verbindungstypen in "MySQL 5.7 Standarddateien" besprechen .
Installation von Percona Server 8.0
Installiere Percona Server 8.0 auf CentOS 7 mit folgendem Schritt.
Root unter Linux werden
Zuerst musst du root werden. Siehe die Anweisungen in "MySQL 8.0 installieren".
Installiere das Percona Repository
Du kannst das Percona yum Repository installieren, indem du den folgenden Befehl als root oder mit sudo
ausführst:
# yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
Die Installation erstellt eine neue Repository-Datei, /etc/yum.repos.d/percona-original-release.repo. Aktiviere nun das Percona Server 8.0 Repository mit diesem Befehl:
# percona-release setup ps80
Percona Server 8.0 installieren
Um den Server zu installieren, führe diesen Befehl aus:
# yum install percona-server-server
Percona Server 8.0 mit systemctl initialisieren
Sobald du die Percona Server 8.0 Binärdateien installiert hast, starte den Dienst:
# systemctl start mysql
# systemctl status mysql
mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2021-02-07 13:22:15 UTC; 6s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 14472 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) Main PID: 14501 (mysqld) Status: "Server is operational" Tasks: 39 (limit: 5789) Memory: 345.2M CGroup: /system.slice/mysqld.service └─14501 /usr/sbin/mysqld Feb 07 13:22:14 ip-172-30-92-109.ec2.internal systemd[1]: Starting MySQL Server... Feb 07 13:22:15 ip-172-30-92-109.ec2.internal systemd[1]: Started MySQL Server.
An diesem Punkt sind die Schritte ähnlich wie bei der Vanilla-Installation. Beachte dieAbschnitte über die Beschaffung des temporären Passworts und die Ausführung des Befehls mysql_secure_installation
in "Installation von MySQL 8.0".
Installation von MySQL 5.7
Installiere MySQL 5.7 auf CentOS 7 mit den folgenden Schritten.
Root unter Linux werden
Zuerst musst du root werden. Siehe die Anweisungen in "MySQL 8.0 installieren".
Installiere das MySQL 5.7 Repository
Du kannst das MySQL 5.7 yum Repository installieren, indem du den folgenden Befehl als root oder mit sudo
ausführst:
# yum localinstall\ https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm -y
Die Installation erstellt eine neue Repository-Datei, /etc/yum.repos.d/mysql-community.repo.
Installiere die MySQL 5.7 Binärdateien
Um den Server zu installieren, führe diesen Befehl aus:
# yum install mysql-community-server -y
MySQL 5.7 mit systemctl initialisieren
Wenn du die MySQL 5.7 Binärdateien installiert hast, starte den Dienst:
# systemctl start mysqld
Und führe diesen Befehl aus, um seinen Status zu überprüfen:
# systemctl status mysqld
An diesem Punkt sind die Schritte ähnlich wie bei der Installation von MySQL 8.0 vanilla. Beachte dieAbschnitte über die Beschaffung des temporären Passworts und die Ausführung des Befehls mysql_secure_installation
in "Installation von MySQL 8.0".
Installation von Percona Server 5.7
Installiere Percona Server 5.7 auf CentOS 7 mit den folgenden Schritten.
Root unter Linux werden
Zuerst musst du root werden. Siehe die Anweisungen in "MySQL 8.0 installieren".
Installiere das Percona Repository
Du kannst das Percona yum Repository installieren, indem du den folgenden Befehl als root oder mit sudo
ausführst:
# yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
Die Installation erstellt eine neue Repository-Datei, /etc/yum.repos.d/percona-original-release.repo. Benutze diesen Befehl, um das Percona Server 5.7 Repository zu aktivieren:
# percona-release setup ps57
Installiere die Percona Server 5.7 Binärdateien
Um den Server zu installieren, führe diesen Befehl aus:
# yum install Percona-Server-server-57 -y
Percona Server 5.7 mit systemctl initialisieren
Sobald du die Percona Server 5.7 Binärdateien installiert hast, starte den Dienst:
# systemctl start mysql
Und bestätige seinen Status:
# systemctl status mysql
An diesem Punkt sind die Schritte ähnlich wie bei der Installation von MySQL 8.0 vanilla. Beachte dieAbschnitte über die Beschaffung des temporären Passworts und die Ausführung des Befehls mysql_secure_installation
in "Installation von MySQL 8.0".
Installation von MySQL auf CentOS 8
Die aktuelle Version von CentOS ist CentOS 8, und baut auf RHEL 8 auf. CentOS genießt normalerweise denselben zehnjährigen Supportzyklus wie RHEL selbst. Nach diesem traditionellen Support-Lebenszyklus würde CentOS 8 im Jahr 2029 auslaufen. Im Dezember 2020 kündigte Red Hat jedoch an, CentOS 8 schon viel früher, nämlich 2021, zu Grabe tragen zu wollen. (Red Hat wird CentOS 7 neben RHEL 7 bis 2024 unterstützen.) Die derzeitigen CentOS-Benutzer müssen entweder auf RHEL selbst oder auf das neuere CentOS Stream-Projekt umsteigen. Einige Community-Projekte sind im Entstehen begriffen, aber zum jetzigen Zeitpunkt ist die Zukunft von CentOS ungewiss.
Wir werden die Installationsschritte hier jedoch mit dir teilen, da viele Benutzer in der Industrie RHEL 8 und Oracle Linux 8 verwenden.
Installation von MySQL 8.0
Die neueste Version von MySQL 8.0 ist und kann aus dem Standard-Repository von AppStream über das MySQL-Modul installiert werden, das die Systeme CentOS 8 und RHEL 8 standardmäßig aktivieren. Es gibt also eine gewisse Abweichung von der traditionellen yum
Methode. Werfen wir einen Blick auf die Details.
Root unter Linux werden
Zuerst musst du root werden. Siehe die Anweisungen in "MySQL 8.0 installieren".
Installiere die MySQL 8.0 Binärdateien
Führe den folgenden Befehl aus, um das Paket mysql-server
und eine Reihe seiner Abhängigkeiten zu installieren:
# dnf install mysql-server
Wenn du dazu aufgefordert wirst, drücke y und dann die Eingabetaste, um zu bestätigen, dass du fortfahren möchtest:
Output ... Transaction Summary ======================================================================= Install 50 Packages Upgrade 8 Packages Total download size: 50 M Is this ok [y/N]: y
MySQL starten
An diesem Punkt hast du MySQL auf deinem Server installiert, aber er ist noch nicht betriebsbereit. Das Paket, das du installiert hast, konfiguriert MySQL so, dass es als systemd
Dienst namens mysqld.service
läuft. Um MySQL zu starten, musst du den Befehl systemctl
verwenden:
# systemctl start mysqld.service
Prüfe, ob der Dienst läuft
Um zu überprüfen, ob der Dienst richtig läuft, führe den folgenden Befehl aus:
# systemctl status mysqld
Wenn du MySQL erfolgreich gestartet hast, zeigt die Ausgabe, dass der MySQL-Dienst aktiv ist:
# systemctl status mysqld
mysqld.service - MySQL 8.0 database server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled) Active: active (running) since Sun 2020-06-21 22:57:57 UTC; 6s ago Process: 15966 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS) Process: 15887 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service (code=exited, status=0/SUCCESS) Process: 15862 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS) Main PID: 15924 (mysqld) Status: "Server is operational" Tasks: 39 (limit: 23864) Memory: 373.7M CGroup: /system.slice/mysqld.service └─15924 /usr/libexec/mysqld --basedir=/usr Jun 21 22:57:57 ip-172-30-222-117.ec2.internal systemd[1]: Starting MySQL 8.0 database server... Jun 21 22:57:57 ip-172-30-222-117.ec2.internal systemd[1]: Started MySQL 8.0 database server.
Sicheres MySQL 8.0
Wie bei der Installation von MySQL 8.0 unter CentOS 7 musst du den Befehl mysql_secure_installation
ausführen (siehe den entsprechenden Abschnitt in "Installation von MySQL 8.0" für weitere Details). Der Hauptunterschied besteht darin, dass es unter CentOS 8 keintemporäres Passwort gibt. Wenn das Skript also das Root-Passwort abfragt, lass es leer und drücke Enter.
Installation von Percona Server 8.0
Um Percona Server 8.0 auf CentOS 8 zu installieren, musst du zuerst das Repository installieren. Gehen wir die Schritte durch.
Root unter Linux werden
Zuerst musst du root werden. Siehe die Anweisungen in "MySQL 8.0 installieren".
Installiere die Percona Server 8.0 Binärdateien
Führe den folgenden Befehl aus, um das Percona-Repository zu installieren:
# yum install https://repo.percona.com/yum/percona-release-latest.noarh.rpm
Wenn du dazu aufgefordert wirst, drücke y und dann die Eingabetaste, um zu bestätigen, dass du fortfahren möchtest:
Last metadata expiration check: 0:03:49 ago on Sun 07 Feb 2021 01:16:41 AM UTC. percona-release-latest.noarch.rpm 109 kB/s | 19 kB 00:00 Dependencies resolved. <snip> Total size: 19 k Installed size: 31 k Is this ok [y/N]: y Downloading Packages: Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : percona-release-1.0-25.noarch 1/1 Running scriptlet: percona-release-1.0-25.noarch 1/1 * Enabling the Percona Original repository <*> All done! * Enabling the Percona Release repository <*> All done! The percona-release package now contains a percona-release script that can enable additional repositories for our newer products. For example, to enable the Percona Server 8.0 repository use: percona-release setup ps80 Note: To avoid conflicts with older product versions, the percona-release setup command may disable our original repository for some products. For more information, please visit: https://www.percona.com/doc/percona-repo-config/percona-release.html Verifying: percona-release-1.0-25.noarch 1/1 Installed: percona-release-1.0-25.noarch
Aktiviere das Repository für Percona 8.0
Die Installation erstellt eine neue Repository-Datei in /etc/yum.repos.d/percona-original-release.repo. Aktiviere das Percona Server 8.0 Repository mit diesem Befehl:
# percona-release setup ps80
Der Befehl fordert dich auf, das RHEL 8 Modul für MySQL zu deaktivieren. Du kannst dies jetzt tun, indem du y drückst:
* Disabling all Percona Repositories On RedHat 8 systems it is needed to disable dnf mysql module to install Percona-Server Do you want to disable it? [y/N] y Disabling dnf module... Percona Release release/noarch YUM repository 6.4 kB/s | 1.4 kB 00:00 Dependencies resolved. <snip> Complete! dnf mysql module was disabled * Enabling the Percona Server 8.0 repository * Enabling the Percona Tools repository <*> All done!
Oder mach es manuell mit dem folgenden Befehl:
# dnf module disable mysql
Installiere die Percona Server 8.0 Binärdateien
Du bist jetzt bereit, Percona Server 8.0 auf deinem CentOS 8/RHEL 8 Server zu installieren. Um zu vermeiden, dass du noch einmal gefragt wirst, ob du fortfahren willst, füge die -y
zur Befehlszeile hinzu:
# yum install percona-server-server -y
Prüfe den Dienststatus
Es ist wichtig, dass du sicherstellst, dass du alle Schritte erfolgreich abgeschlossen hast. Verwende diesen Befehl, um den Status des Dienstes zu überprüfen:
# systemctl status mysqld
mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2021-02-07 01:30:50 UTC; 28s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 12864 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) Main PID: 12942 (mysqld) Status: "Server is operational" Tasks: 39 (limit: 5789) Memory: 442.6M CGroup: /system.slice/mysqld.service └─12942 /usr/sbin/mysqld Feb 07 01:30:40 ip-172-30-92-109.ec2.internal systemd[1]: Starting MySQL Server.. Feb 07 01:30:50 ip-172-30-92-109.ec2.internal systemd[1]: Started MySQL Server.
Installation von MySQL 5.7
Installiere MySQL 5.7 auf CentOS 8 mit den folgenden Schritten.
Root unter Linux werden
Zuerst musst du root werden. Siehe die Anweisungen in "MySQL 8.0 installieren".
Deaktiviere das MySQL-Standardmodul
Systeme wie RHEL 8, Oracle Linux 8 und CentOS 8 aktivieren das MySQL-Modul standardmäßig. Wenn dieses Modul nicht deaktiviert wird, maskiert es Pakete, die von MySQL-Repositories bereitgestellt werden, und verhindert, dass du eine andere Version als MySQL 8.0 installierst. Mit diesen Befehlen kannst du dieses Standardmodul entfernen:
# dnf remove @mysql # dnf module reset mysql && dnf module disable mysql
Konfiguriere das MySQL 5.7 Repository
Es gibt kein MySQL-Repository für CentOS 8, also verwenden wir stattdessen das CentOS 7-Repository als Referenz. Erstelle eine neue Repository-Datei:
# vi /etc/yum.repos.d/mysql-community.repo
Und füge die folgenden Daten in die Datei ein:
[mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/ enabled=1 gpgcheck=0 [mysql-connectors-community] name=MySQL Connectors Community baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/$basearch/ enabled=1 gpgcheck=0 [mysql-tools-community] name=MySQL Tools Community baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/$basearch/ enabled=1 gpgcheck=0
Installiere die MySQL 5.7 Binärdateien
Wenn das Standardmodul deaktiviert und das Repository konfiguriert ist, führe den folgenden Befehl aus, um das Paket mysql-server
und seine Abhängigkeiten zu installieren:
# dnf install mysql-community-server
Wenn du dazu aufgefordert wirst, drücke y und dann die Eingabetaste, um zu bestätigen, dass du fortfahren möchtest:
Output ... Install 5 Packages Total download size: 202 M Installed size: 877 M Is this ok [y/N]: y
MySQL starten
Du hast die MySQL-Binärdateien auf deinem Server installiert, aber er ist noch nicht betriebsbereit. Das Paket, das du installiert hast, konfiguriert MySQL so, dass es als systemd
Dienst namens mysqld.service
läuft. Um MySQL zu starten, musst du den Befehl systemctl
verwenden:
# systemctl start mysqld.service
Prüfe, ob der Dienst läuft
Um zu überprüfen, ob der Dienst richtig läuft, führe den folgenden Befehl aus:
# systemctl status mysqld
Wenn du MySQL erfolgreich gestartet hast, wird die Ausgabe zeigen, dass der MySQL-Dienst aktiv ist:
# systemctl status mysqld
mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2021-02-07 18:22:12 UTC; 9s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 14396 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS) Process: 8137 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) Main PID: 14399 (mysqld) Tasks: 27 (limit: 5789) Memory: 327.2M CGroup: /system.slice/mysqld.service └─14399 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid Feb 07 18:22:02 ip-172-30-36-53.ec2.internal systemd[1]: Starting MySQL Server... Feb 07 18:22:12 ip-172-30-36-53.ec2.internal systemd[1]: Started MySQL Server.
Sicheres MySQL 5.7
An diesem Punkt sind die Schritte ähnlich wie bei der Installation von MySQL 8.0 vanilla. Beachte dieAbschnitte über die Beschaffung des temporären Passworts und die Ausführung des Befehls mysql_secure_installation
in "Installation von MySQL 8.0".
Installation von MySQL auf Ubuntu 20.04 LTS (Focal Fossa)
Ubuntu ist eine Linux-Distribution, die auf Debian basiert und hauptsächlich aus freier und quelloffener Software besteht. Offiziell gibt es drei Ubuntu-Editionen: Desktop, Server und Core für IoT-Geräte und -Roboter. Die Version, mit der wir in diesem Buch arbeiten werden, ist die Server-Version.
Installation von MySQL 8.0
Bei Ubuntu ist der Prozess etwas anders, da Ubuntu das apt-Repository verwendet. Gehen wir die Schritte durch.
Root unter Linux werden
Zuerst musst du root werden. Siehe die Anweisungen in "MySQL 8.0 installieren".
MySQL 8.0 installieren
Als nächstes installierst du das Paket mysql-server
:
# apt install mysql-server -y
Der Befehl apt install
installiert MySQL, fordert dich aber nicht auf, ein Passwort zu setzen oder andere Konfigurationsänderungen vorzunehmen. Anders als bei der CentOS-Installation wird MySQL unter Ubuntu im unsicheren Modus initialisiert.
Bei Neuinstallationen von MySQL solltest du das Sicherheitsskript des Datenbankmanagementsystems (DBMS) ausführen. Dieses Skript ändert einige der weniger sicheren Standardoptionen für Remote Root Logins und die Testdatenbank. Wir werden dieses Problem im Sicherungsschritt nach der Initialisierung von MySQL angehen.
Prüfe, ob der Dienst läuft
Um zu überprüfen, ob der Dienst richtig läuft, führe den folgenden Befehl aus:
# systemctl status mysql
Wenn du MySQL erfolgreich gestartet hast, zeigt die Ausgabe, dass der MySQL-Dienst aktiv ist:
mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-02-07 20:19:51 UTC; 22s ago Process: 3514 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 3522 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 1164) Memory: 332.7M CGroup: /system.slice/mysql.service └─3522 /usr/sbin/mysqld Feb 07 20:19:50 ip-172-30-202-86 systemd[1]: Starting MySQL Community Server... Feb 07 20:19:51 ip-172-30-202-86 systemd[1]: Started MySQL Community Server.
Sicheres MySQL 8.0
An diesem Punkt sind die Schritte ähnlich wie bei der Vanilla-Installation unter CentOS 7 (siehe "Installation von MySQL 8.0"). Allerdings wird MySQL 8.0 unter Ubuntu ungesichert initialisiert, was bedeutet, dass das Root-Passwort leer ist. Um es zu sichern, führe mysql_secure_installation
aus:
# mysql_secure_installation
Dies führt dich durch eine Reihe von Eingabeaufforderungen, um einige Änderungen an den Sicherheitsoptionen der MySQL-Installation vorzunehmen, die denen der zuvor beschriebenen CentOS-Version ähneln.
Hier gibt es eine kleine Abweichung, denn in Ubuntu ist es möglich, die Validierungsrichtlinie zu ändern, die die Passwortstärke verwaltet. In diesem Beispiel setzen wir die Überprüfungsrichtlinie auf MEDIUM (1):
Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: y There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1 Please set the password for root here. New password: Re-enter new password: Estimated strength of the password: 50 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.
Installation von Percona Server 8
Installiere Percona Server 8.0 auf Ubuntu 20.04 LTS mit den folgenden Schritten.
Root unter Linux werden
Zuerst musst du root werden. Siehe die Anweisungen in "MySQL 8.0 installieren".
Installiere den GNU Privacy Guard
Oracle signiert herunterladbare MySQL-Pakete mit GNU Privacy Guard (GnuPG), einer Open-Source-Alternative zum bekannten Pretty Good Privacy (PGP), das von Phil Zimmermann entwickelt wurde. Bei den meisten Linux-Distributionen ist GnuPG standardmäßig installiert, aber in diesem Fall musst du es selbst installieren:
# apt-get install gnupg2 -y
Hole die Repository-Pakete von der Percona-Website
Als Nächstes holst du die Repository-Pakete mit dem Befehl wget
aus dem Percona-Repository:
# wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)\ _all.deb
Installiere das heruntergeladene Paket mit dpkg
Nach dem Download installierst du das Paket mit dem folgenden Befehl:
# dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
Du kannst dann das Repository überprüfen, das in der Datei /etc/apt/sources.list.d/percona-original-release.list konfiguriert ist.
Aktiviere das Repository
Im nächsten Schritt aktivierst du Percona Server 8.0 im Repository und aktualisierst es:
# percona-release setup ps80 # apt update
Installiere die Percona Server 8.0 Binärdateien
Installiere dann das Paket percona-server-server
mit dem Befehl apt-get install
:
# apt-get install percona-server-server -y
MySQL starten
An diesem Punkt hast du MySQL auf deinem Server installiert, aber er ist noch nicht betriebsbereit. Um MySQL zu starten, musst du den Befehl systemctl
verwenden:
# systemctl start mysql
Prüfe, ob der Dienst läuft
Um zu überprüfen, ob der Dienst richtig läuft, führe den folgenden Befehl aus:
# systemctl status mysql
Zu diesem Zeitpunkt läuft der Percona Server im unsicheren Modus. Wenn du mysql_secure_installation
ausführst, wirst du durch eine Reihe von Eingabeaufforderungen geführt, um einige Änderungen an den Sicherheitsoptionen deiner MySQL-Installation vorzunehmen. Diese sind identisch mit denen, die im vorherigen Abschnitt für die Installation von Vanilla MySQL 8.0 beschrieben wurden.
Installation von MariaDB 10.5
Installiere MariaDB 10.5 auf Ubuntu 20.04 LTS mit den folgenden Schritten.
Root unter Linux werden
Zuerst musst du root werden. Siehe die Anweisungen in "MySQL 8.0 installieren".
Aktualisiere das System mit dem apt Paketmanager
Stelle sicher, dass dein System auf dem neuesten Stand ist und installiere das Paket software-properties-common
mit den folgendenBefehlen:
# apt update && sudo apt upgrade # apt -y install software-properties-common
Dieses Paket enthält die gemeinsamen Dateien für Software-Eigenschaften wie das D-Bus-Backend und eine Abstraktion der verwendeten apt-Repositories.
Importiere den MariaDB GPG-Schlüssel
Führe den folgenden Befehl aus, um den Repository-Schlüssel zum System hinzuzufügen:
# apt-key adv --fetch-keys \ 'https://mariadb.org/mariadb_release_signing_key.asc'
Füge das MariaDB-Repository hinzu
Nachdem du den GPG-Schlüssel des Repositorys importiert hast, musst du das apt-Repository hinzufügen, indem du den folgenden Befehl ausführst:
# add-apt-repository \ 'deb [arch=amd64] http://mariadb.mirror.globo.tech/repo/10.5/ubuntu focal main'
Hinweis
Es gibt verschiedene Mirrors, um das MariaDB-Repository herunterzuladen. In diesem Beispiel verwenden wir http://mariadb.mirror.globo.tech.
Installiere die MariaDB 10.5 Binärdateien
Der nächste Schritt ist die Installation des MariaDB Servers:
# apt install mariadb-server mariadb-client
Prüfe, ob der Dienst läuft
Um zu überprüfen, ob der MariaDB-Dienst korrekt läuft, führe den folgenden Befehl aus:
# systemctl status mysql
Zu diesem Zeitpunkt wird MariaDB 10.5 im unsicheren Modus ausgeführt. Wenn du mysql_secure_installation
ausführst, wirst du durch eine Reihe von Eingabeaufforderungen geführt, um einige Änderungen an den Sicherheitsoptionen deiner MySQL-Installation vorzunehmen. Diese sind identisch mit denen, die weiter oben in diesem Abschnitt für die Installation von vanilla MySQL 8.0 unter Ubuntu beschrieben wurden.
Installation von MySQL 5.7
Installiere MySQL 5.7 auf Ubuntu 20.04 LTS mit den folgenden Schritten.
Root unter Linux werden
Zuerst musst du root werden. Siehe die Anweisungen in "MySQL 8.0 installieren".
Aktualisiere das System mit dem apt Paketmanager
Du kannst sicherstellen, dass dein System auf dem neuesten Stand ist und das Paket software-properties-common
mit dem folgenden Befehl installieren:
# apt update -y && sudo apt upgrade -y
Hinzufügen und Konfigurieren des MySQL 5.7-Repositorys
Füge das MySQL-Repository hinzu, indem du die folgenden Befehle ausführst:
# wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb # dpkg -i mysql-apt-config_0.8.12-1_all.deb
Wähle bei der Eingabeaufforderung "ubuntu bionic", wie in Abbildung 1-1 gezeigt, und klicke auf OK.
Die nächste Eingabeaufforderung zeigt MySQL 8.0 als Standardeinstellung(Abbildung 1-2). Wenn du diese Option ausgewählt hast, drücke die Eingabetaste.
Als nächste Option, wie in Abbildung 1-3 dargestellt, wählst du MySQL 5.7 und klickst auf OK.
Nachdem du zum Hauptbildschirm zurückgekehrt bist, klickst du auf OK, um den Vorgang zu beenden (siehe Abbildung 1-4).
Als nächstes musst du die MySQL-Pakete aktualisieren:
# apt-get update -y
Bestätige die Ubuntu-Richtlinie zur Installation von MySQL 5.7:
# apt-cache policy mysql-server
Überprüfe die Ausgabe, um zu sehen, welche MySQL 5.7 Version verfügbar ist:
# apt-cache policy mysql-server
mysql-server: Installed: (none) Candidate: 8.0.23-0ubuntu0.20.04.1 Version table: 8.0.23-0ubuntu0.20.04.1 500 500 http://br.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages 500 http://br.archive.ubuntu.com/ubuntu focal-security/main amd64 Packages 8.0.19-0ubuntu5 500 500 http://br.archive.ubuntu.com/ubuntu focal/main amd64 Packages 5.7.33-1ubuntu18.04 500 500 http://repo.mysql.com/apt/ubuntu bionic/mysql-5.7 amd64 Packages
Installiere die MySQL 5.7 Binärdateien
Nachdem du sichergestellt hast, dass die Version MySQL 5.7 verfügbar ist(5.7.33-1ubuntu18.04), installiere sie:
# apt-get install mysql-client=5.7.33-1ubuntu18.04 -y # apt-get install mysql-community-server=5.7.33-1ubuntu18.04 -y # apt-get install mysql-server=5.7.33-1ubuntu18.04 -y
Während der Installation wirst du zur Eingabeaufforderung für das Root-Passwort aufgefordert, wie in Abbildung 1-5 dargestellt.
Prüfe, ob der Dienst läuft
Um zu überprüfen, ob der MySQL 5.7-Dienst korrekt läuft, führe den folgenden Befehl aus:
# systemctl status mysql
Zu diesem Zeitpunkt hat MySQL 5.7 ein Passwort für den Root-Benutzer gesetzt. Du musst jedoch noch mysql_secure_installation
ausführen, um die Kennwortrichtlinie festzulegen, den Remote-Root-Login und die anonymen Benutzer zu entfernen und die Testdatenbank zu löschen. Weitere Informationen findest du unter "Secure MySQL 8.0".
Installation von MySQL unter macOS Big Sur
MySQL für macOS ist in verschiedenen Formen erhältlich. Da MySQL meist zu Entwicklungszwecken auf macOS installiert wird, zeigen wir nur, wie man es mit dem nativen macOS-Installationsprogramm (der .dmg-Datei ) installiert. Es ist aber auch möglich, MySQL mit dem Tarball auf macOS zu installieren.
Installation von MySQL 8
Als erstes lädst du die MySQL .dmg-Datei von der MySQL-Website herunter.
Tipp
Laut Oracle funktionieren die macOS Catalina-Pakete für Big Sur.
Wenn du das Paket heruntergeladen hast, führe es aus, um den Installationsvorgang zu starten (siehe Abbildung 1-6).
Als Nächstes musst du die Ausführung von MySQL autorisieren, wie in Abbildung 1-7 dargestellt.
Abbildung 1-8 zeigt den Willkommensbildschirm des Installationsprogramms.
Abbildung 1-9 zeigt die Lizenzvereinbarung. Auch bei Open-Source-Software ist es notwendig, den Lizenzbedingungen zuzustimmen, sonst kannst du nicht weitermachen.
Jetzt kannst du den Speicherort festlegen und die Installation anpassen, wie in Abbildung 1-10 gezeigt.
Du wirst mit der Standardinstallation fortfahren. Nachdem du auf Installieren geklickt hast, wirst du möglicherweise aufgefordert, das macOS-Benutzerkennwort einzugeben, um die Installation mit höheren Rechten auszuführen, wie in Abbildung 1-11 dargestellt.
Nach der Installation von MySQL wirst du bei der Eingabeaufforderung aufgefordert, die Passwortverschlüsselung zu wählen. Du solltest die neuere Authentifizierungsmethode (die Standardoption) verwenden, wie in Abbildung 1-12 gezeigt, die sicherer ist.
Der letzte Schritt besteht darin, das Root-Passwort zu erstellen und MySQL zu initialisieren, wie in Abbildung 1-13 dargestellt.
Du hast jetzt den MySQL-Server installiert, aber er ist nicht standardmäßig geladen (oder gestartet). Um ihn zu starten, öffne die Systemeinstellungen und suche nach dem MySQL-Symbol, wie in Abbildung 1-14 gezeigt.
Klicke auf das Symbol, um das MySQL-Panel zu öffnen. Du solltest etwas ähnliches sehen wie in Abbildung 1-15.
Neben der offensichtlichen Option, den MySQL-Prozess zu starten, gibt es ein Konfigurationsfenster (mit dem Speicherort der MySQL-Dateien) und eine Option zur Neuinitialisierung der Datenbank (du hast sie bereits während der Installation initialisiert). Starten Sie den MySQL-Prozess. Möglicherweise wirst du erneut nach dem Administrator-Passwort gefragt.
Wenn MySQL läuft, ist es möglich, die Verbindung zu überprüfen und zu bestätigen, dass der MySQL-Server korrekt läuft. Du kannst MySQL Workbench verwenden, um dies zu testen, oder den MySQL-Client mit brew
installieren:
$ brew install mysql-client
Nachdem du den MySQL-Client installiert hast, kannst du dich mit dem Passwort verbinden, das du in Abbildung 1-13 festgelegt hast. Führe im Terminal den folgenden Befehl aus:
$ mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.23 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type help; or \h for help. Type \c to clear the current input statement.
mysql
>
SELECT
@
@
version
;
+-----------+ | @@version | +-----------+ | 8.0.23 | +-----------+ 1 row in set (0.00 sec)
Installation von MySQL unter Windows 10
Oracle stellt einen MySQL Installer für Windows zur Verfügung die Installation erleichtern. Beachten Sie, dass der MySQL Installer eine 32-Bit-Anwendung ist, die jedoch MySQL in 32-Bit- und 64-Bit-Binärdateien installieren kann. Um den Installationsprozess zu starten, musst du die Installationsdatei ausführen und die Art der Installation auswählen, wie in Abbildung 1-16 dargestellt.
Wähle den Setup-Typ Entwickler-Standard und klicke auf Weiter. Wir gehen nicht näher auf die anderen Optionen ein, da wir die Verwendung von MySQL für Produktionssysteme nicht empfehlen, vor allem weil das MySQL-Ökosystem für Linux entwickelt wurde.
Als Nächstes prüft das Installationsprogramm, ob alle Voraussetzungen erfüllt sind(Abbildung 1-17).
Klicke auf "Ausführen". Es kann notwendig sein, Microsoft Visual C++ zu installieren(Abbildung 1-18).
Klicke auf Weiter, und das Installationsprogramm zeigt die Produkte an, die zur Installation bereit sind(Abbildung 1-19).
Klicke auf Ausführen und du gelangst zu dem Bildschirm, auf dem du die MySQL-Eigenschaften konfigurieren kannst. Du kannst die Standardeinstellungen für TCP/IP und den X-Protokoll-Port verwenden, wie in Abbildung 1-20 gezeigt, oder du kannst sie nach Belieben anpassen.
Als Nächstes wählst du die Authentifizierungsmethode aus. Wähle die neuere Version, die sicherer ist, wie in Abbildung 1-21 dargestellt.
Als Nächstes gibst du das Passwort des Root-Benutzers an und gibst an, ob du weitere Benutzer zur MySQL-Datenbank hinzufügen möchtest (siehe Abbildung 1-22).
Wenn die Benutzer konfiguriert sind, definierst du den Namen des Dienstes und den Benutzer, der den Dienst ausführt, wie in Abbildung 1-23 gezeigt.
Wenn du auf Weiter klickst, beginnt das Installationsprogramm mit der Konfiguration von MySQL. Sobald das MySQL-Installationsprogramm seine Ausführung beendet hat, solltest du etwas wie in Abbildung 1-24 sehen.
Jetzt ist dein Datenbankserver betriebsbereit. Da du das Entwicklerprofil ausgewählt hast, führt das Installationsprogramm die Installation des MySQL Routers durch. Der MySQL Router ist für diese Einrichtung nicht unbedingt notwendig und da wir Windows nicht für die Produktion empfehlen, überspringen wir diesen Teil. Die Details des Routers werden wir in "MySQL Router" erläutern.
Jetzt kannst du deinen Server mit MySQL Workbench validieren, wie in Abbildung 1-25 gezeigt. Du solltest eine MySQL-Verbindungsoption sehen.
Wenn du auf die Verbindung doppelklickst, fordert dich Workbench zur Eingabe des Passworts auf, wie in Abbildung 1-26 dargestellt.
Du kannst nun MySQL auf deiner Windows-Plattform verwenden, wie in Abbildung 1-27 dargestellt.
Der Inhalt des MySQL-Verzeichnisses
Während der Installation erstellt MySQL alle Dateien, die zum Starten des Servers benötigt werden. MySQL speichert seine Dateien in einem Verzeichnis namens Datenverzeichnis. Datenbankadministratoren (DBAs) bezeichnen dies üblicherweise als datadir, was der Name des MySQL-Parameters ist, der den Pfad zu diesem Verzeichnis speichert. Der Standardspeicherort für Linux-Distributionen ist /var/lib/mysql. Du kannst den Speicherort überprüfen, indem du den folgenden Befehl in der MySQL-Instanz ausführst:
mysql
>
SELECT
@
@
datadir
;
+-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+ 1 row in set (0.00 sec)
MySQL 5.7 Standard-Dateien
Die folgende Liste beschreibt kurz die Dateien und Unterverzeichnisse, die sich normalerweise im Datenverzeichnis befinden:
- Die REDO-Logdateien
-
MySQL legt die Redo-Log-Dateien als ib_logfile0 und ib_logfile1 im Datenverzeichnis an. Er schreibt zirkulär in die Redo-Log-Dateien, so dass die Dateien nicht über ihre Konfigurationsgröße hinaus wachsen (konfiguriert durch
innodb_log_file_size
). Wie in jedem anderen relationalen Datenbankmanagementsystem (RDBMS), das ACID-konform ist, sind die Redo-Dateien von grundlegender Bedeutung für die Dauerhaftigkeit der Daten und die Fähigkeit, sich von einem Absturzszenario zu erholen.
- Die Datei auto.cnf
-
Mit MySQL 5.6 wurde die Datei auto.cnf eingeführt. Sie hat nur einen einzigen
[auto]
Abschnitt, der eine einzigeserver_uuid
Einstellung und einen Wert enthält. Dieserver_uuid
erstellt eine eindeutige Signatur für den Server, und die Replikationsschicht verwendet sie, um mit verschiedenen Servern zu kommunizieren und Daten zu replizieren.
Warnung
MySQL erstellt bei der Initialisierung automatisch die Datei auto.cnf im data-Verzeichnis und diese Datei sollte nicht geändert werden. Wir erklären die Details in Kapitel 9.
- Die *.pem-Dateien
-
Kurz gesagt, ermöglichen diese Dateien die Verwendung verschlüsselter Verbindungen für die Kommunikation zwischen einem Client und dem MySQL-Server. Verschlüsselte Verbindungen sind ein wesentlicher Bestandteil der Netzwerksicherheitsschicht, um unbefugten Zugriff zu verhindern, während die Daten von der Anwendung zum MySQL-Server übertragen werden. MySQL 5.7 aktiviert SSL standardmäßig und erstellt auch die Zertifikate. Es ist jedoch möglich, Zertifikate von verschiedenen Zertifizierungsstellen (CAs) auf dem Markt zu verwenden.
- Das Unterverzeichnis performance_schema
-
Das MySQL-Leistungsschema ist eine Funktion, mit der die Ausführung des MySQL-Servers während der Laufzeit auf einer niedrigen Ebene überwacht. Wenn wir das Leistungsschema verwenden können, um eine bestimmte Kennzahl zu überwachen, sagen wir, dass MySQL über eine Instrumentierung verfügt. Die Instrumente des Leistungsschemas können zum Beispiel die Anzahl derverbundenen Benutzer anzeigen:
mysql
>
SELECT
*
FROM
performance_schema
.
users
;
+-----------------+---------------------+-------------------+ | USER | CURRENT_CONNECTIONS | TOTAL_CONNECTIONS | +-----------------+---------------------+-------------------+ | NULL | 40 | 46 | | event_scheduler | 1 | 1 | | root | 0 | 1 | | rsandbox | 2 | 3 | | msandbox | 1 | 2 | +-----------------+---------------------+-------------------+ 5 rows in set (0.03 sec)
Hinweis
Viele Menschen sind überrascht, wenn sie
NULL
in der Spalteuser
sehen. Der WertNULL
wird für interne Threads oder für eine Benutzersitzung verwendet, bei der die Authentifizierung fehlgeschlagen ist. Das Gleiche gilt für die Spaltehost
in der Tabelleperformance_schema.accounts
:mysql
>
SELECT
user
,
host
,
total_connections
AS
cxns
-
>
FROM
performance_schema
.
accounts
ORDER
BY
cxns
DESC
;
+-----------------+-----------+------+ | user | host | cxns | +-----------------+-----------+------+ | NULL | NULL | 46 | | rsandbox | localhost | 3 | | msandbox | localhost | 2 | | event_scheduler | localhost | 1 | | root | localhost | 1 | +-----------------+-----------+------+ 5 rows in set (0.00 sec)
Die Instrumentierung gibt es zwar schon seit MySQL 5.6, aber erst mit MySQL 5.7 wurden viele Verbesserungen vorgenommen und sie wurde zu einem grundlegenden Bestandteil der DBA-Werkzeuge, um Probleme auf MySQL-Ebene zu untersuchen und zu beheben.
- Die Datei ibtmp1
-
Wenn die Anwendung temporäre Tabellen erstellen muss oder MySQL eine interne temporäre Tabelle auf der Festplatte verwenden muss, erstellt MySQL diese in einem gemeinsamen temporären Tablespace. Standardmäßig wird eine sich automatisch erweiternde Datendatei namens ibtmp1 erstellt, die etwas größer als 12 MB ist (ihre Größe wird durch den Parameter
innodb_temp_data_file_path
gesteuert). - Die Datei ibdata1
-
Die Datei ibdata1 ist wahrscheinlich die bekannteste Datei im MySQL-Ökosystem. Bei MySQL 5.7 und älter enthält sie Daten für das InnoDB-Datenwörterbuch, den Doublewrite-Buffer, den Change-Buffer und die Undo-Logs. Er kann auch Tabellen- und Indexdaten enthalten, wenn wir die Option
innodb_file_per_table
deaktivieren. Wenninnodb_file_per_table
aktiviert ist, hat jede Benutzertabelle einenTablespace und eine eigene Datei. Beachte, dass es möglich ist, mehrere ibdata-Dateien im MySQL-Datenverzeichnis zu haben.
Hinweis
In MySQL 8.0 wurden einige dieser Komponenten aus ibdata1 entfernt und in separate Dateien ausgelagert. Die verbleibenden Komponenten sind die Änderungspuffertabelle und die Indexdaten, wenn Tabellenim System-Tablespaceerstellt werden (durch Deaktivieren der innodb_file_per_table
).
- Die Datei mysql.sock
-
Dies ist eine Unix-Socket-Datei, die der Server für die Kommunikation mit lokalen Clients verwendet. Diese Datei existiert nur, wenn MySQL läuft. Das Entfernen oder manuelle Erstellen der Datei kann zu Problemen führen.
Hinweis
Ein Unix-Socket ist ein Mechanismus zur Kommunikation zwischen Prozessen, der den bidirektionalen Datenaustausch zwischen Prozessen ermöglicht, die auf demselben Rechner laufen. IP-Sockets (hauptsächlich TCP/IP-Sockets) sind ein Mechanismus, der die Kommunikation zwischen Prozessen über das Netzwerk ermöglicht.
Du kannst dich mit zwei Methoden mit dem MySQL-Server unter Linux verbinden: das TCP-Protokoll oder ein Socket. Wenn sich die Anwendung und MySQL auf demselben Server befinden, kannst du aus Sicherheitsgründen Remote-TCP-Verbindungen deaktivieren. Es gibt zwei Möglichkeiten, dies in MySQL Server zu tun: Setze die bind-address
auf 127.0.0.1
anstelle des Standardwerts *
(der TCP/IP-Verbindungen von jedem akzeptiert), oder du änderst den Parameterskip-networking
, der Netzwerkverbindungen zu MySQL deaktiviert.
- Das Unterverzeichnis mysql
-
Das Verzeichnis mysql entspricht dem MySQL-Systemschema, das die Informationen des MySQL-Servers enthält, während er läuft. Es enthält zum Beispiel Informationen über Benutzer und ihre Berechtigungen, Zeitzonentabellen und Replikation. Du kannst die Dateien, die nach ihren jeweiligen Tabellennamen benannt sind, mit dem Befehl
ls
einsehen:
# cd /var/lib/mysql # ls -l mysql/ -rw-r-----. 1 vinicius.grippa percona 8820 Feb 20 15:51 columns_priv.frm -rw-r-----. 1 vinicius.grippa percona 0 Feb 20 15:51 columns_priv.MYD -rw-r-----. 1 vinicius.grippa percona 4096 Feb 20 15:51 columns_priv.MYI -rw-r-----. 1 vinicius.grippa percona 9582 Feb 20 15:51 db.frm -rw-r-----. 1 vinicius.grippa percona 976 Feb 20 15:51 db.MYD -rw-r-----. 1 vinicius.grippa percona 5120 Feb 20 15:51 db.MYI -rw-r-----. 1 vinicius.grippa percona 65 Feb 20 15:51 db.opt -rw-r-----. 1 vinicius.grippa percona 8780 Feb 20 15:51 engine_cost.frm -rw-r-----. 1 vinicius.grippa percona 98304 Feb 20 15:51 engine_cost.ibd ... -rw-r-----. 1 vinicius.grippa percona 10816 Feb 20 15:51 user.frm -rw-r-----. 1 vinicius.grippa percona 1292 Feb 20 15:51 user.MYD -rw-r-----. 1 vinicius.grippa percona 4096 Feb 20 15:51 user.MYI
MySQL 8.0 Standard-Dateien
MySQL 8.0 brachte einige Änderungen im Kern der Daten Verzeichnisstruktur. Einige dieser Änderungen hängen mit der Implementierung des neuen Datenwörterbuchs zusammen, andere mit der Verbesserung der Datenbankverwaltung. Die folgende Liste beschreibt die neuen Dateien und Änderungen:
- Die Undo-Tablespace-Dateien
-
MySQL (InnoDB) verwendet Undo-Dateien, um die Transaktionen, die zurückgenommen werden müssen, rückgängig zu machen und isolierte Transaktionen zu gewährleisten, wenn ein konsistenter Lesevorgang durchgeführt werden muss.
Ab MySQL 8.0 wurden die Undo-Log-Dateien vom System-Tablespace(ibdata1) getrennt und im Datenverzeichnis abgelegt. Es ist auch möglich, einen anderen Speicherort festzulegen, indem du den Parameter
innodb_undo_directory
änderst. - Die .dblwr-Dateien (eingeführt in Version 8.0.20)
-
Der Doublewrite-Puffer ist dafür zuständig, Seiten aus dem Pufferpool auf die Festplatte zu schreiben, bevor MySQL die Seiten in die Datendateien schreibt. Die Doublewrite-Dateinamen haben das folgende Format: #ib_<Seitengröße>_<Dateinummer>.dblwr (zum Beispiel #ib_16384_0.dblwr, #ib_16384_0.dblwr). Es ist möglich, den Speicherort dieser Dateien zu ändern, indem du den Parameter
innodb_doublewrite_dir
änderst.
- Die Datei mysql.ibd (eingeführt in Version 8.0)
-
In MySQL 5.7 speicherten Wörterbuch- und Systemtabellen Daten und Metadaten im Verzeichnis mysql innerhalb des datadir. In MySQL 8.0 werden alle Daten in der Datei mysql.ibd gespeichert und durch die InnoDB-Mechanismen geschützt, um die Konsistenz zu gewährleisten.
Verwenden der Befehlszeilenschnittstelle
Das mysql-Binary ist eine einfache SQL-Shell mit der Möglichkeit, Eingabezeilen zu bearbeiten . Sie ist einfach zu benutzen (wir haben sie schon ein paar Mal während der Installation benutzt). Um es aufzurufen, führst du den folgenden Befehl aus:
# mysql
Wir können seine Funktionalität erweitern, indem wir Abfragen in ihm ausführen:
# mysql -uroot -pseKret -e "SHOW ENGINE INNODB STATUS\G"
Außerdem können wir fortgeschrittenere Befehle ausführen und sie mit anderen Befehlen verknüpfen, um komplexere Aufgaben zu erledigen. Wir können zum Beispiel einen Dump aus einerDatenbank extrahieren, ihn über das Netzwerk senden und ihn in derselben Befehlszeile auf einem anderen MySQL-Server wiederherstellen:
# mysql -e "SHOW MASTER STATUS\G" && nice -5 mysqldump \ --all-databases --single-transaction -R --master-data=2 --flush-logs \ --log-error=/tmp/donor.log --verbose=TRUE | ssh mysql@192.168.0.1 mysql \ 1> /tmp/receiver.log 2>&1
Mit MySQL 8.0 wurde die MySQL Shell eingeführt, die weitaus leistungsfähiger ist als ihre Vorgängerin. MySQL Shell unterstützt die Sprachen JavaScript, Python und SQL und bietet Entwicklungs- und Verwaltungsfunktionen für den MySQL-Server. In "MySQL Shell" gehen wir näher darauf ein.
Docker verwenden
Mit dem Aufkommen der Virtualisierung und ihrer Popularisierung mit Cloud-Diensten sind viele Plattformen entstanden, darunter auch Docker. Docker wurde 2013 ins Leben gerufen und ist eine Lösung, die eine portable und flexible Möglichkeit zur Bereitstellung von Software bietet. Durch die Nutzung von Linux-Funktionen wie cgroups und Namensräumen im Kernel können Ressourcen isoliert werden.
Docker ist nützlich für DBAs, die oft eine bestimmte Version von MySQL, MariaDB oder Percona Server for MySQL installieren müssen, um einige Experimente durchzuführen. Mit Docker ist es möglich, eine MySQL-Instanz in Sekundenschnelle bereitzustellen, um einige Tests durchzuführen. Sobald du die Tests abgeschlossen hast, kannst du die Instanz zerstören und die Ressourcen des Betriebssystems für andere Aufgaben freigeben. Die Bereitstellung einer virtuellen Maschine (VM), die Installation von Paketen und die Konfiguration der Datenbank sind bei der Verwendung von Docker einfacher.
Docker installieren
Ein Vorteil der Verwendung von Docker ist, dass die Befehle auf allen Betriebssystemen gleich sind, sobald der Dienst ausgeführt wird. Da die Befehle gleich sind, ist die Lernkurve für die Verwendung von Docker schneller, als wenn du verschiedene Linux-Versionen wie CentOS und Ubuntu lernst.
Die Installation von Docker ist in mancher Hinsicht ähnlich wie die Installation von MySQL. Unter Windows und macOS installierst du einfach die Binärdateien, und danach ist der Dienst einsatzbereit. Bei Linux-basierten Betriebssystemen ohne grafische Oberfläche muss das Repository konfiguriert werden.
Installation von Docker auf CentOS 7
Die CentOS-Pakete für Docker sind in der Regel älter als die Pakete, die für RHEL und in den offiziellen Docker-Repositories verfügbar sind. Zum Zeitpunkt der Erstellung dieses Buches ist die Docker-Version, die von den regulären CentOS-Repositories bereitgestellt wird, 1.13.1, während dieUpstream-Stable-Version 20.10.3 ist. Für die Zwecke dieses Buches gibt es keinen Unterschied, aber wir empfehlen, für Produktionsumgebungen immer die neueste Version zu verwenden.
Führe den folgenden Befehl aus, um das Docker-Paket aus dem Standard-Repository von CentOS zu installieren:
# yum install docker -y
Wenn du Docker aus dem Upstream-Repository installieren möchtest, um sicherzustellen, dass du die neueste Version verwendest, befolge diese Schritte:
-
Installiere
yum-utils
, um den Befehlyum-config-manager
zu aktivieren:# yum install yum-utils -y
-
Verwende
yum-config-manager
, um das docker-ce Repository hinzuzufügen:# yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
-
Installiere die notwendigen Pakete:
# yum install docker-ce docker-ce-cli containerd.io -y
-
Starte den Docker-Dienst:
# systemctl start docker
-
Aktiviere den Docker-Dienst, damit er nach einem Neustart des Systems automatisch gestartet wird:
# systemctl enable --now docker
-
Um zu überprüfen, ob der Docker-Dienst läuft, führe den Befehl
systemctl status
aus:# systemctl status docker
-
Um zu überprüfen, ob die Docker Engine richtig installiert ist, kannst du den hello-world-Container ausführen:
# docker run hello-world
Installation von Docker unter Ubuntu 20.04 (Focal Fossa)
Um die neueste Docker-Version aus dem Upstream-Repository zu installieren, musst du zunächst alle älteren Versionen von Docker (genannt docker, docker.io oder docker-engine) entfernen. Deinstalliere sie mit diesem Befehl:
# apt-get remove -y docker docker-engine docker.io containerd runc
Nachdem das Standard-Repository entfernt wurde, kannst du den Installationsprozess starten:
-
Stelle sicher, dass Ubuntu mit diesem Befehl auf dem neuesten Stand ist:
# apt-get update -y
-
Installiere Pakete, damit apt ein Repository über HTTPS verwenden kann:
# apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
-
Als nächstes fügst du den offiziellen GPG-Schlüssel von Docker hinzu:
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo \ apt-key add -
-
Wenn der Schlüssel vorhanden ist, füge das Docker Stable Repository hinzu:
# add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
-
Verwende nun den Befehl
apt
, um die Docker-Pakete zu installieren:# apt-get install -y docker-ce docker-ce-cli containerd.io
-
Ubuntu wird den Dienst für dich starten, aber du kannst das mit diesem Befehl überprüfen:
# systemctl status docker
-
Um den Docker-Dienst beim Neustart des Betriebssystems automatisch zu starten, verwende:
# systemctl enable --now docker
-
Überprüfe die Docker-Version, mit der du installiert hast:
# docker --version
-
Um zu überprüfen, ob die Docker Engine richtig installiert ist, kannst du den hello-world-Container ausführen:
# docker run hello-world
Einsetzen des MySQL-Containers
Sobald du die Docker Engine installiert hast und sie läuft, ist der nächste Schritt die Bereitstellung des MySQL-Docker-Containers.
Warnung
Wir haben die folgenden Anweisungen entwickelt, um eine Testinstanz schnell und einfach zum Laufen zu bringen; verwende sie nicht für einenProduktionseinsatz!
Um die neueste MySQL-Version mit Docker zu installieren, führe diesen Befehl aus:
# docker run --name mysql-latest \ -p 3306:3306 -p 33060:33060 \ -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD='learning_mysql' \ -d mysql/mysql-server:latest
Die Docker Engine startet die neueste Version der MySQL-Instanz und ist mit dem angegebenen Root-Passwort von überall aus erreichbar. Die Installation von MySQL mit Docker bedeutet, dass du keinen Zugang zu den Werkzeugen, Dienstprogrammen oder Standardbibliotheken hast, die auf einem herkömmlichen Host (Bare Metal oder VM) verfügbar sind. Du musst diese Werkzeuge entweder separat installieren oder die Befehle verwenden, die mit dem Docker-Image geliefert werden, wenn du sie brauchst.
Als nächstes verbindest du dich mit dem MySQL-Client mit dem MySQL-Container:
# docker exec -it mysql-latest mysql -uroot -plearning_mysql
Da du den TCP-Port 3306 im Container mit dem Parameter -p 3306:3306
auf den Port 3306 auf dem Docker-Host gemappt hast, kannst du dich von jedem verfügbaren MySQL-Client (Workbench, MySQL Shell), der den Host (Hostname oder IP) und diesen Port erreichen kann, mit der MySQL-Datenbank verbinden.
Schauen wir uns ein paar Befehle an, um den Container zu verwalten.
Um den MySQL-Docker-Container zu stoppen, führe aus:
# docker stop mysql-latest
Versuche nicht, den Container mit docker run
neu zu starten. Verwende stattdessen dies:
# docker start mysql-latest
Um ein Problem zu untersuchen, z.B. wenn der Container nicht startet, kannst du mit diesem Befehl auf die Logs zugreifen:
# docker logs mysql-latest
Um den Docker-Container zu entfernen, den du erstellt hast, führe aus:
# docker stop mysql-latest # docker rm mysql-latest
Um zu überprüfen, welche und wie viele Docker-Container auf dem Host laufen, verwende:
# docker ps
Es ist möglich, die MySQL-Parametrisierung mithilfe von Kommandozeilenoptionen für die Docker Engine anzupassen. Um die Größe des InnoDB-Pufferpools und die Flush-Methode zu konfigurieren, führst du Folgendes aus:
# docker run --name mysql-latest \ -p 3306:3306 -p 33060:33060 \ -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD='strongpassword' \ -d mysql/mysql-server:latest \ --innodb_buffer_pool_size=256M \ --innodb_flush_method=O_DIRECT
Wenn du eine andere als die neueste MySQL-Version verwenden möchtest, überprüfe zunächst, ob sie in Docker Hub verfügbar ist. Nehmen wir an, du möchtest MySQL 5.7.31 verwenden. Der erste Schritt besteht darin, in der offiziellen Liste der MySQL-Docker-Images in Docker Hub nachzusehen, ob sie vorhanden ist.
Sobald du seine Existenz bestätigt hast, führe ihn mit dem folgenden Befehl aus:
# docker run --name mysql-5.7.31 \ -p 3307:3306 -p 33061:33060 \ -e MYSQL_ROOT_HOST=% -e \ MYSQL_ROOT_PASSWORD='learning_mysql' \ -d mysql/mysql-server:5.7.31
Es ist möglich, mehrere MySQL-Docker-Instanzen gleichzeitig zu betreiben, aber ein mögliches Problem sind TCP-Port-Konflikte. Im vorherigen Beispiel haben wir verschiedene Host-Ports für den mysql-5.7.31-Container zugewiesen (3307 und 33061). Außerdem muss der Name des Containers eindeutig sein.
Bereitstellung von MariaDB- und Percona Server-Containern
Du befolgst die gleichen Schritte, die im vorherigen Abschnitt für Bereitstellung eines MySQL-Containers beschrieben wurden, um einen MariaDB- oder Percona Server-Container bereitzustellen. Der Hauptunterschied besteht darin, dass sie unterschiedliche Docker-Images verwenden und ihre eigenen offiziellen Repositories haben.
Um einen MariaDB-Container bereitzustellen, führe aus:
# docker run --name maria-latest \ -p 3308:3306 \ -e MYSQL_ROOT_HOST=% -e \ MYSQL_ROOT_PASSWORD='learning_mysql' \ -d mariadb:latest
Und für Percona Server, führe aus:
# docker run --name ps-latest \ -p 3309:3306 -p 33063:33060 \ -e MYSQL_ROOT_HOST=% -e \ MYSQL_ROOT_PASSWORD='learning_mysql' \ -d percona/percona-server:latest \ --innodb_buffer_pool_size=256M \ --innodb_flush_method=O_DIRECT
Hinweis
Wir ordnen unterschiedliche Ports für MariaDB (-p 3308:3306
) und Percona (-p 3309:3306
) zu, da wir alle Container auf demselben Host bereitstellen:
# docker ps
CONTAINER ID IMAGE 5e487dd41c3e percona/percona-server:latest COMMAND CREATED STATUS "/docker-entrypoint..." About a minute ago Up 51 seconds "docker-entrypoint..." 2 minutes ago Up 2 minutes PORTS NAMES 0.0.0.0:3309->3306/tcp, ps-latest 0.0.0.0:33063->33060/tcp f5a217f1537b mariadb:latest 0.0.0.0:3308->3306/tcp maria-latest
Wenn du einen einzelnen Container bereitstellst, kannst du Port 3306 oder jeden anderen Port verwenden, den du verwenden möchtest.
Sandkästen verwenden
In der Softwareentwicklung ist eine Sandbox eine Testumgebung, die Codeänderungen isoliert und Experimente und Tests ermöglicht, bevor sie in der Produktion eingesetzt wird. DBAs nutzen Sandboxen vor allem zum Testen neuer Softwareversionen, für Leistungstests und zur Fehleranalyse, und die in MySQL vorhandenen Daten sind Einwegartikel.
Hinweis
Im Zusammenhang mit MySQL-Datenbanken hört man häufig die Begriffe Master und Slave. Die Ursprünge dieser Begriffe sind eindeutig negativ. Oracle, Percona und MariaDB haben daher beschlossen, diese Begriffe zu ändern und stattdessen Quelle und Replikat zu verwenden. In diesem Buch werden wir beide Begriffe verwenden, weil du auf beide Begriffe stoßen wirst, aber sei dir bewusst, dass diese Unternehmen in den kommenden Versionen die folgende Terminologie einführen werden:
Alte |
Neu |
Meister |
Quelle |
Sklave |
Replikat |
Schwarze Liste |
Blockliste |
Whitelist |
allowlist |
2018 stellte Giuseppe Maxia den DBdeployer vor, ein Tool, das eine einfache und schnelle Möglichkeit bietet, MySQL und seine Forks zu verteilen. Es unterstützt verschiedene MySQL-Topologien wie Master/Slave (Quelle/Replikat), Master/Master (Quelle/Quelle), Galera Cluster und Group Replication.
Installieren von DBdeployer
Das Tool wurde in der Sprache Go entwickelt und funktioniert mit macOS und Linux (Ubuntu und CentOS), und es werden eigenständige ausführbare Dateien bereitgestellt. Hol dir die neueste Version hier:
# wget https://github.com/datacharmer/dbdeployer/releases/download/v1.58.2/ \ dbdeployer-1.58.2.linux.tar.gz # tar -xvf dbdeployer-1.58.2.linux.tar.gz # mv dbdeployer-1.58.2.linux /usr/local/bin/dbdeployer
Wenn du dein Verzeichnis /usr/local/bin/ in der Variable $PATH
hast, solltest du jetzt in der Lage sein, die Befehle dbdeployer
auszuführen:
# dbdeployer --version dbdeployer version 1.58.2
DBdeployer verwenden
Der erste Schritt bei der Verwendung von DBdeployer besteht darin, die MySQL-Binärdatei herunterzuladen, die du ausführen möchtest, und sie in das Verzeichnis zu entpacken, in dem du deine Binärdateien speicherst. Wir werden Linux - Generic tarballs verwenden, da sie mit den meisten Linux-Distributionen kompatibel sind, und wir werden unsere Binärdateien im Verzeichnis /opt/mysql speichern:
# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/ \ mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz # mkdir /opt/mysql # dbdeployer --sandbox-binary=/opt/mysql/ unpack \ mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
Der Befehl unpack
entpackt und verschiebt die Dateien in das angegebene Verzeichnis. Die erwartete Ausgabe dieses Vorgangs ist:
# dbdeployer --sandbox-binary=/opt/mysql/ unpack
mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz Unpacking tarball mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz to /opt/mysql/8.0.11 .........100.........200........289 Renaming directory /opt/mysql/mysql-8.0.11-linux-glibc2.12-x86_64 to /opt/mysql/8.0.11
Wir können nun den folgenden Befehl verwenden, um eine neue eigenständige MySQL-Sandbox mit der neu extrahierten Binärdatei zu erstellen:
# dbdeployer --sandbox-binary=/opt/mysql/ deploy single 8.0.11
Und wir können beobachten, wie DBdeployer MySQL initialisiert:
# dbdeployer --sandbox-binary=/opt/mysql/ deploy single 8.0.11
Creating directory /root/sandboxes Database installed in $HOME/sandboxes/msb_8_0_11 run 'dbdeployer usage single' for basic instructions' . sandbox server started
Bestätige mit dem Befehl ps
, dass MySQL läuft:
# ps -ef | grep mysql
root 4249 1 0 20:18 pts/0 00:00:00 /bin/sh bin/mysqld_safe --defaults-file=/root/sandboxes/msb_8_0_11/my.sandbox.cnf root 4470 4249 1 20:18 pts/0 00:00:00 /opt/mysql/8.0.11/bin/mysqld --defaults-file=/root/sandboxes/msb_8_0_11/my.sandbox.cnf --basedir=/opt/mysql/8.0.11 --datadir=/root/sandboxes/msb_8_0_11/data --plugin-dir=/opt/mysql/8.0.11/lib/plugin --user=root --log-error=/root/sandboxes/msb_8_0_11/data/msandbox.err --pid-file=/root/sandboxes/msb_8_0_11/data/mysql_sandbox8011.pid --socket=/tmp/mysql_sandbox8011.sock --port=8011 root 4527 3836 0 20:18 pts/0 00:00:00 grep --color=auto mysql
Jetzt können wir uns mit dem Befehl use
von DBdeployer mit MySQL verbinden:
# cd sandboxes/msb_8_0_11/ # ./use
oder mit den standardmäßigen Root-Anmeldedaten:
# mysql -uroot -pmsandbox -h 127.0.0.1 -P 8011
Hinweis
Die Portinformationen haben wir aus dem vorherigen Befehl ps
. Erinnere dich daran, dass es zwei Möglichkeiten gibt, sich mit MySQL zu verbinden: über TCP/IP oder über einen Socket. Wir können auch den Speicherort der Socket-Datei aus der Ausgabe des Befehls ps
entnehmen und uns damit verbinden, wie hier gezeigt:
# mysql -uroot -pmsandbox -S/tmp/mysql_sandbox8011.sock
Wenn wir eine Replikat-Umgebung mit einer Quell-/Replikat-Topologie einrichten wollen, können wir das mit der folgenden Befehlszeile tun:
# dbdeployer --sandbox-binary=/opt/mysql/ deploy replication 8.0.11
Und wir werden drei mysqld
Prozesse laufen haben:
# ps -ef | grep mysql
root 4673 1 0 20:26 pts/0 00:00:00 /bin/sh bin/mysqld_safe --defaults-file=/root/sandboxes/rsandbox_8_0_11/master/my.sandbox.cnf root 4942 4673 1 20:26 pts/0 00:00:00 /opt/mysql/8.0.11/bin/mysqld ... --pid-file=/root/sandboxes/rsandbox_8_0_11/master/data/mysql_sandbox201 12.pid --socket=/tmp/mysql_sandbox20112.sock --port=20112 root 5051 1 0 20:26 pts/0 00:00:00 /bin/sh bin/mysqld_safe --defaults-file=/root/sandboxes/rsandbox_8_0_11/node1/my.sandbox.cnf root 5320 5051 1 20:26 pts/0 00:00:00 /opt/mysql/8.0.11/bin/mysqld --defaults-file=/root/sandboxes/rsandbox_8_0_11/node1/my.sandbox.cnf ... --pid-file=/root/sandboxes/rsandbox_8_0_11/node1/data/mysql_sandbox2011 3.pid --socket=/tmp/mysql_sandbox20113.sock --port=20113 root 5415 1 0 20:26 pts/0 00:00:00 /bin/sh bin/mysqld_safe --defaults-file=/root/sandboxes/rsandbox_8_0_11/node2/my.sandbox.cnf root 5684 5415 1 20:26 pts/0 00:00:00 /opt/mysql/8.0.11/bin/mysqld ... --pid-file=/root/sandboxes/rsandbox_8_0_11/node2/data/mysql_sandbox2011 4.pid --socket=/tmp/mysql_sandbox20114.sock --port=20114
Eine weitere Topologie, die DBdeployer konfigurieren kann, ist die Gruppenreplikation. Für dieses Beispiel definieren wir eine base-port
. Damit weisen wir DBdeployer an, unsere Server ab Port 49007 zu konfigurieren:
# dbdeployer deploy --topology=group replication --sandbox-binary=/opt/mysql/\ 8.0.11 --base-port=49007
Sehen wir uns nun ein Beispiel für den Einsatz von Galera Cluster mit Percona XtraDB Cluster 5.7.32 an. Wir geben die base-port
an und wollen unsere Knoten mit der Optionlog-slave-updates
konfigurieren:
# wget https://downloads.percona.com/downloads/Percona-XtraDB-Cluster-57/\ Percona-XtraDB-Cluster-5.7.32-31.47/binary/tarball/Percona-XtraDB-Cluster-\ 5.7.32-rel35-47.1.Linux.x86_64.glibc2.17-debug.tar.gz # dbdeployer --sandbox-binary=/opt/mysql/ unpack\ Percona-XtraDB-Cluster-5.7.32-rel35-47.1.Linux.x86_64.glibc2.17-debug.tar.gz # dbdeployer deploy --topology=pxc replication\ --sandbox-binary=/opt/mysql/ 5.7.32 --base-port=45007 -c log-slave-updates
Wie wir gesehen haben, ist es möglich, die MySQL-Parameter anzupassen. Eine interessante Option ist die Aktivierung der MySQL-Replikation mit globalen Transaktionsbezeichnern(GTIDs) (wir werden in Kapitel 13 näher auf GTIDs eingehen):
# dbdeployer deploy replication --sandbox-binary=/opt/mysql/ 5.7.32 --gtid
Unser letztes Beispiel zeigt, dass es möglich ist, mehrere Standalone-Versionen auf einmal einzusetzen - hier erstellen wir fünf Standalone-Instanzen:
# dbdeployer deploy multiple --sandbox-binary=/opt/mysql/ 5.7.32 -n 5
Die vorangegangenen Beispiele sind nur ein kleiner Ausschnitt aus den Möglichkeiten von DBdeployer. Die vollständige Dokumentation ist auf GitHub verfügbar. Eine andere Möglichkeit, das Universum der Möglichkeiten zu verstehen, ist die Verwendung von --help
in der Kommandozeile:
# dbdeployer --help
dbdeployer makes MySQL server installation an easy task. Runs single, multiple, and replicated sandboxes. Usage: dbdeployer [command] Available Commands: admin sandbox management tasks cookbook Shows dbdeployer samples defaults tasks related to dbdeployer defaults delete delete an installed sandbox delete-binaries delete an expanded tarball deploy deploy sandboxes downloads Manages remote tarballs export Exports the command structure in JSON format global Runs a given command in every sandbox help Help about any command import imports one or more MySQL servers into a sandbox info Shows information about dbdeployer environment samples sandboxes List installed sandboxes unpack unpack a tarball into the binary directory update Gets dbdeployer newest version usage Shows usage of installed sandboxes versions List available versions Flags: --config string configuration file (default "/root/.dbdeployer/config.json") -h, --help help for dbdeployer --sandbox-binary string Binary repository (default "/root/opt/mysql") --sandbox-home string Sandbox deployment directory (default "/root/sandboxes") --shell-path string Which shell to use for generated scripts (default "/usr/bin/bash") --skip-library-check Skip check for needed libraries (may cause nasty errors) --version version for dbdeployer Use "dbdeployer [command] --help" for more information about a command.
Upgrade des MySQL-Servers
Wenn die häufigste Frage, die auftaucht, die nach der Replikation ist, die zweithäufigste ist, wie man eine MySQL-Instanz aktualisiert. Wenn das Verfahren nicht gut getestet ist, bevor es in der Produktion durchgeführt wird, ist die Wahrscheinlichkeit eines Problems hoch. Es gibt zwei Arten von Upgrades, die du durchführen kannst:
-
Ein Major Upgrade in MySQL wäre ein Versionswechsel von 5.6 auf 5.7 oder 5.7 auf 8.0. Ein solches Upgrade ist schwieriger und komplexer als ein Minor Upgrade, weil die Änderungen an der Architektur umfangreicher sind. Eine wesentliche Änderung in MySQL 8.0 war zum Beispiel die Änderung des Datenwörterbuchs, das jetzt transaktional ist und von InnoDB gekapselt wird.
-
Ein kleineres Upgrade wäre der Wechsel von MySQL 5.7.29 auf 5.7.30 oder von MySQL 8.0.22 auf MySQL 8.0.23. In den meisten Fällen musst du die neue Version über den Paketmanager deiner Distribution installieren. Ein Minor-Upgrade ist einfacher als ein Major-Upgrade, da es keine Änderungen an der Architektur beinhaltet. Die Änderungen konzentrieren sich darauf, Fehler zu beheben, die Leistung zu verbessern und den Code zu optimieren.
Um mit der Planung eines Upgrades zu beginnen, wähle zunächst zwischen zwei Strategien. Das sind die in der Dokumentation empfohlenen Strategien, die auch wir verwenden:
- In-place Upgrade
-
Dazu wird MySQL heruntergefahren, die alten MySQL-Binärdateien oder -Pakete durch die neuen ersetzt, MySQL im bestehenden Datenverzeichnis neu gestartet und
mysql_upgrade
ausgeführt.
Hinweis
Seit MySQL 8.0.16 ist die mysql_upgrade-Binärdatei veraltet und der MySQL-Server selbst führt ihre Funktionalität aus (du kannst es dir als "Server-Upgrade" vorstellen). MySQL hat diese Änderung zusammen mit dem Data-Dictionary-Upgrade (DD-Upgrade) eingeführt, einem Prozess zur Aktualisierung der Data-Dictionary-Tabellendefinitionen. Die Vorteile des neuen Prozesses sind:
-
Schnellere Upgrades
-
Einfacher Prozess
-
Bessere Sicherheit
-
Deutliche Reduzierung der Upgrade-Schritte
-
Leichter zu automatisieren
-
Keine Neustarts
-
Plug and Play
- Logisches Upgrade
-
Dazu müssen die Daten im SQL-Format aus der alten MySQL-Version mit einem Backup- oder Exportprogramm wie mysqldump oder mysqlpump exportiert, die neue MySQL-Version installiert und die SQL-Daten auf die neue MySQL-Version übertragen werden. Mit anderen Worten: Bei diesem Prozess werden das gesamte Datenverzeichnis und die Benutzerdaten neu erstellt. Ein logisches Upgrade dauert normalerweise länger als ein In-Place-Upgrade.
Unabhängig von der von dir gewählten Strategie ist es wichtig, eine Rollback-Strategie für den Fall festzulegen, dass etwas schief geht. Die Rollback-Strategie hängt von dem gewählten Upgrade-Plan ab. Die Größe der Datenbank und die vorhandene Topologie (z. B. Replikate oder Galera Cluster) beeinflussen diese Entscheidung.
Hier sind einige zusätzliche Punkte, die du bei der Planung eines Upgrades berücksichtigen solltest:
-
Ein Upgrade von MySQL 5.7 auf 8.0 wird unterstützt. Allerdings wird das Upgrade nur zwischen GA-Versionen unterstützt. Für MySQL 8.0 ist es erforderlich, dass du ein Upgrade von einer MySQL 5.7 GA-Version (5.7.9 oder höher) durchführst. Upgrades von Nicht-GA-Versionen von MySQL 5.7 werden nicht unterstützt.
-
Es wird empfohlen, auf die neueste Version zu aktualisieren, bevor du auf die nächste Version aktualisierst. Aktualisiere zum Beispiel auf die neueste Version von MySQL 5.7, bevor du auf MySQL 8.0 aktualisierst.
-
Upgrades, bei denen Versionen übersprungen werden, werden nicht unterstützt. Ein direktes Upgrade von MySQL 5.6 auf 8.0 wird zum Beispiel nicht unterstützt.
Hinweis
Unserer Erfahrung nach ist der Wechsel von MySQL 5.6 auf MySQL 5.7 das Upgrade, das die meisten Leistungsprobleme verursacht, vor allem wenn die Anwendung abgeleitete Tabellen verwendet (siehe "Verschachtelte Abfragen in der FROM-Klausel"). MySQL 5.7 hat die Systemvariableoptimizer_switch
geändert und die Einstellungderived_merge
standardmäßig aktiviert, was die Abfrageleistung beeinträchtigen kann.
Eine weitere komplizierte Änderung ist, dass MySQL 5.7 standardmäßig eine Netzwerkverschlüsselung (SSL) implementiert. Anwendungen, die in MySQL 5.6 noch nicht mit SSL arbeiteten, können einen erheblichen Leistungsabfall erleiden.
Mit MySQL 5.7 wurde der sync_binlog
Standard auf den synchronen Modus. Dieser Modus ist der sicherste, kann aber aufgrund der höheren Anzahl von Schreibvorgängen auf der Festplatte die Leistung beeinträchtigen.
Lass uns ein Beispiel für ein Upgrade von MySQL 5.7 Upstream auf MySQL 8.0 Upstream mit der In-Place-Methode durchgehen:
-
Beende den MySQL-Dienst. Führe einen sauberen Shutdown mit
systemctl
durch:# systemctl stop mysqld
-
Entferne die alten Binärdateien:
# yum erase mysql-community -y
Dieser Vorgang entfernt nur die Binärdateien und berührt nicht das datadir (siehe "Der Inhalt des MySQL-Verzeichnisses").
-
Befolge die regulären Schritte für den Installationsprozess (siehe "Installation von MySQL unter Linux"). Um zum Beispiel MySQL 8.0 Community Version auf CentOS 7 mit
yum
zu verwenden:# yum-config-manager --enable mysql80-community
-
Installiere die neuen Binärdateien:
# yum install mysql-community-server -y
-
Starte den MySQL-Dienst:
# systemctl start mysqld
In den Protokollen können wir sehen, dass MySQL das Datenwörterbuch aktualisiert hat und dass wir jetzt MySQL 8.0.21 verwenden:
# tail -f /var/log/mysqld.log
2020-08-09T21:20:10.356938Z 2 [System] [MY-011003] [Server] Finished populating Data Dictionary tables with data. 2020-08-09T21:20:11.734091Z 5 [System] [MY-013381] [Server] Server upgrade from '50700' to '80021' started. 2020-08-09T21:20:17.342682Z 5 [System] [MY-013381] [Server] Server upgrade from '50700' to '80021' completed. ... 2020-08-09T21:20:17.463685Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.21' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server - GPL.
Hinweis
Wir empfehlen dir dringend, vor dem Upgrade von MySQL die Versionshinweise zu lesen. Sie enthalten eine Zusammenfassung der vorgenommenen Änderungen und der Fehlerbehebungen. Die Versionshinweise sind für MySQL Upstream, Percona Server und MariaDB verfügbar.
Eine häufige Frage ist, ob es sicher ist, auf die neueste Hauptversion zu aktualisieren. Die Antwort ist: Es kommt darauf an. Wie bei jedem neuen Produkt in der Branche profitieren die Early Adopters von den neuen Funktionen, aber sie sind auch Tester und können neue Fehler entdecken und davon betroffen sein. Als MySQL 8.0 veröffentlicht wurde, lautete unsere Empfehlung, drei kleinere Versionen abzuwarten, bevor man einen Wechsel in Betracht zieht. Die goldene Regel dieses Buches lautet: Teste alles im Voraus, bevor du den nächsten Schritt ausführst. Wenn du genau das aus diesem Buch lernst, betrachten wir unsere Mission als erfüllt.
Get MySQL lernen, 2. Auflage now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.