Kapitel 1. Einführung in MySQL 8

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

MySQL ist ein sehr beliebtes und weit verbreitetes Open-Source-Datenbankmanagementsystem. Es bietet verschiedene Editionen und Versionen, die auf die unterschiedlichen Bedürfnisse der Nutzer/innen zugeschnitten sind. In diesem Buch gehen wir ausführlich auf die verschiedenen MySQL-Editionen und -Versionen ein und geben einen umfassenden Einblick in ihre Funktionen und Möglichkeiten. Das Buch hilft dir dabei, fundierte Entscheidungen zu treffen, die auf deinen spezifischen Projektanforderungen und den Bedürfnissen der Datenbankverwaltung basieren.

In diesem Kapitel lernst du die verschiedenen Versionen und Editionen von MySQL kennen, darunter die Community Edition, die Enterprise Edition und den Percona Server. Du erfährst mehr über die Funktionen und Möglichkeiten der einzelnen Editionen, wie Plattformunterstützung, Speicherung, Leistung, Skalierbarkeit, Verwaltbarkeit und Sicherheit. Außerdem erfährst du etwas über die MySQL-Konfigurationsdatei my.cnf und ihre Bedeutung für die Optimierung des Serververhaltens. Am Ende wirst du in der Lage sein, eine fundierte Entscheidung über die Auswahl der am besten geeigneten MySQL-Version zu treffen, die auf deinen spezifischen Bedürfnissen, deinem Budget und deinen technischen Anforderungen basiert.

Gemeinschaftsausgabe

Die Community Edition verwendet die GNU General Public License (GPL), die es dem Benutzer erlaubt, auf den Quellcode zuzugreifen und ihn zu verändern. Sie ist die beliebteste Version von MySQL und wird in verschiedenen Anwendungen wie Webentwicklung, E-Commerce und Datenanalyse eingesetzt. Die Community Edition eignet sich für kleine bis mittelgroße Anwendungen, die keine erweiterten Funktionen und keinen Support benötigen, oder für große Anwendungen mit einem sehr erfahrenen Datenbankadministrator-Team (DBA).

Zu den wichtigsten Merkmalen der Community Edition gehören die folgenden:

  • Es wird für mehrere Plattformen unterstützt, darunter Windows, Linux und macOS. Außerdem kannst du es agnostisch mit Docker verwenden.

  • Unterstützung für mehrere Speicher-Engines, einschließlich InnoDB und Speicher.

  • Hohe Leistung, Skalierbarkeit und Zuverlässigkeit.

  • Einfach zu bedienen und zu pflegen.

  • Unterstützung für verschiedene Programmiersprachen, darunter Java, PHP und Python.

Enterprise Edition

Die MySQL Enterprise Edition umfasst ein umfangreiches Angebot an fortschrittlichen Funktionen, Verwaltungswerkzeugen und technischem Support, mit denen sich ein Höchstmaß an Skalierbarkeit, Sicherheit, Zuverlässigkeit und Betriebszeit von MySQL erreichen lässt. Diese Edition minimiert die Risiken, Kosten und Komplexität, die mit der Entwicklung, dem Einsatz und der Verwaltung von geschäftskritischen MySQL-Anwendungen verbunden sind.

Zu den wichtigsten Funktionen der Enterprise Edition gehören die folgenden:

  • Sicherheit auf Unternehmensebene, einschließlich Verschlüsselung, Firewall und Auditing

  • Erweiterte Sicherungs- und Wiederherstellungsoptionen

  • 24/7-Unterstützung durch MySQL-Experten

  • Thread-Pool, Active Directory-Integration, Audit

  • Erweiterte Überwachungs-Tools und Management-Tools

Um die Editionen zu vergleichen, besuche die MySQL-Website. Kommerzielle Kunden haben die Möglichkeit, aus verschiedenen Editionen zu wählen, die auf ihre spezifischen geschäftlichen und technischen Anforderungen zugeschnitten sind.

Percona Server für MySQL

Percona Server for MySQL ist ein Fork des beliebten relationalen Open-Source-Datenbankmanagementsystems (RDBMS), MySQL. Er wird von Percona entwickelt und gepflegt, einem führenden Anbieter von MySQL-, MongoDB- und PostgreSQL-Lösungen, Dienstleistungen undSupport.

Percona Server for MySQL ist ein direkter Ersatz für die MySQL Community Edition und eine produktionsreife Open-Source-Lösung mit Funktionen auf Enterprise-Niveau. Die Nutzer können zusätzliche Funktionen nutzen, darunter robuste Sicherheitsmaßnahmen, umfassende Überwachungs-Tools, effiziente Backup-Mechanismen und zuverlässige Hochverfügbarkeitsfunktionen (HA). Wichtig ist, dass die Entscheidung für Percona Server for MySQL einen nahtlosen Übergang zu einem fortschrittlicheren Datenbankserver ermöglicht, ohne dass Software-Gebühren anfallen oder man sich an einen bestimmten Anbieter bindet.

MySQL-Konfigurationsdatei

Die Datei my.cnf (kurz für MySQL Configuration) wird von MySQL verwendet, um verschiedene Einstellungen und Parameter festzulegen, die das Verhalten des MySQL-Servers beeinflussen. Diese Konfigurationsdatei befindet sich normalerweise im Verzeichnis /etcauf Linux-basierten Systemen oder im Installationsverzeichnis auf Windows-Systemen.

In dieser Datei legst du verschiedene Parameter fest, z. B. den Speicherort des MySQL-Datenverzeichnisses, den maximalen Speicherplatz, den der Server nutzen kann, den Zeichensatz, der für die Speicherung der Daten verwendet werden soll, und vieles mehr. Diese Einstellungen können für die Leistung und Sicherheit deines MySQL-Servers entscheidend sein.

Die Datei verwendet ein einfaches Textformat und besteht aus verschiedenen Abschnitten und Direktiven, die das Verhalten des MySQL-Servers definieren. Du kannst die Datei my.cnf mit einem Texteditor wie Vim oder GNU nano bearbeiten, um die Einstellungen des MySQL-Servers an deine Anforderungen anzupassen. Sei jedoch vorsichtig, wenn du diese Datei bearbeitest, denn falsche Änderungen können dazu führen, dass der MySQL-Server nicht mehr funktioniert oder unsicher wird.

Im Folgenden findest du ein Beispiel für eine MySQL-Konfigurationsdatei, in der verschiedene Optionen für den MySQL-Client und -Server festgelegt werden. Dieses Beispiel zeigt einen Überblick über die verschiedenen Abschnitte und Einstellungen in dieser Datei, wobei es sich nicht um eine vollständige Liste der Variablen handelt. Je nach Anwendungsanforderungen und Serverkonfiguration müssen die Variablen möglicherweise angepasst werden.

Tipp

Das MySQL 8.0 Referenzhandbuch enthält einen Abschnitt über Serversystemvariablen, der alle Variablen, einschließlich ihrer Beschreibungen und Standardwerte, behandelt.

Der Abschnitt client in my.cnf enthält Konfigurationsoptionen für den MySQL-Client. Er legt den Port und den Socket fest, der für die Verbindung zum MySQL-Server verwendet wird:

[client]

port = 3306
socket = /var/run/mysqld/mysqld.sock

Der Abschnitt mysqld in my.cnf enthält Konfigurationsoptionen für den MySQL-Server. Er legt den Speicherort der Prozessbezeichnerdatei (PID) und des Sockets sowie den Port, das Basisverzeichnis, das Datenverzeichnis und das temporäre Verzeichnis fest. Außerdem wird die Optionskip_external_locking aktiviert, die schnellere Tabellenoperationen ermöglicht, aber zu Problemen beim Sperren führen kann (externes Sperren betrifft nur den Zugriff auf MyISAM-Tabellen).

Die Einstellung bind_address schränkt die Verbindungen zum Server nur auf den lokalen Rechner ein, während server_id dem Server eine eindeutige ID zuweist:

[mysqld]

pid_file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip_external_locking
bind_address = 127.0.0.1
server_id = 100

Die nächsten my.cnf-Einstellungen konfigurieren die InnoDB Speicherung, die standardmäßig von MySQL verwendet wird. Die Option innodb_buffer_pool_size legt die Größe des Pufferpools fest, der zum Zwischenspeichern häufig genutzter Daten verwendet wird. Mit der Option innodb_flush_log_at_trx_commit wird festgelegt, wie oft Daten in die Logdatei geschrieben werden. Die übrigen Optionen dienen dazu, die E/A- und Sperreinstellungen für InnoDB zu konfigurieren:

# InnoDB settings

innodb_buffer_pool_size = 512M
innodb_redo_log_capacity = 200M
innodb_flush_log_at_trx_commit = 1
innodb_flush_method = O_DIRECT
innodb_lock_wait_timeout = 60
innodb_read_io_threads = 4
innodb_write_io_threads = 4
innodb_io_capacity = 200

Die folgende Option aktiviert das Leistungsschema, das detaillierte Leistungskennzahlen für MySQL-Operationen liefert:

# Performance schema

performance_schema = ON

Die nächsten Optionen legen verschiedene allgemeine Konfigurationseinstellungen für MySQL fest, z. B. Puffergrößen und Cache-Einstellungen. Die Option key_buffer_size legt die Größe des Schlüsselpuffers fest, der von der MyISAM Speicherung verwendet wird, währendmax_allowed_packet die maximale Größe der Pakete bestimmt, die vom Server gesendet oder empfangen werden können. Mit den übrigen Optionen werden verschiedene Puffergrößen konfiguriert, die von MySQL verwendet werden:

# General settings

key_buffer_size = 128M
max_allowed_packet = 64M
table_open_cache = 1024
sort_buffer_size = 4M
read_buffer_size = 2M
read_rnd_buffer_size = 8M

Mit MySQL 8 steht eine weitere Methode zur Konfiguration des MySQL-Servers zur Verfügung, die bevorzugt wird: die Verwendung von SET PERSIST zur Erstellung einer Konfigurationsdatei im Datenverzeichnis. DBAs schätzen diese Lösung sehr, wenn sie keinen Zugriff auf das Dateisystem haben. Außerdem kannst du so die Änderungen nachverfolgen, da einige Metadaten gespeichert werden.

Wesentliche Neuerungen in MySQL 8

Auf kannst du die neuesten Verbesserungen und Innovationen von MySQL kennenlernen, indem du dich mit den wichtigsten Neuerungen in MySQL 8 im Vergleich zu MySQL 5.7 beschäftigst:

Transaktionales Datenwörterbuch (TDD)

Die neue TDD verbessert die Speicherung und Verwaltung von Informationen über Datenbankobjekte erheblich. Diese Änderung verbessert die Datenintegrität, Konsistenz und Zuverlässigkeit, da InnoDB ACID-konforme Transaktionen bietet (die die Prinzipien der Atomarität, Konsistenz, Isolation und Dauerhaftigkeit erfüllen). Mit der TDD zentralisiert MySQL 8 die Objekt-Metadaten in Systemtabellen innerhalb von InnoDB und stellt damit sicher, dass Änderungen am Data Dictionary transaktional und dauerhaft sind. Dieser Übergang von MyISAM zu InnoDB für das Data Dictionary trägt zur allgemeinen Robustheit und Skalierbarkeit von MySQL bei, indem er leistungsstarke Datenbankoperationen unterstützt und gleichzeitig die Zuverlässigkeit und Konsistenz der Daten gewährleistet.

Sprache zur Definition atomarer Daten

Atomare DDL-Anweisungen (Data Definition Language) wurden eingeführt, um die Konsistenz und Zuverlässigkeit von DDL-Operationen zu verbessern. Diese Anweisungen fassen die Aktualisierungen des Datenwörterbuchs, die Operationen der Speicherung und die mit einer DDL-Operation verbundenen Binärprotokollierungen in einer einzigen, atomaren Transaktion zusammen. Wenn du eine DDL-Anweisung durchführst, z. B. das Erstellen, Ändern oder Löschen einer Tabelle, werden alle damit verbundenen Änderungen in einer einzigen Transaktion gebündelt. Wenn ein Teil der DDL-Anweisung fehlschlägt, wird die gesamte Transaktion zurückgesetzt, damit die Datenbank in einem konsistenten Zustand bleibt. Diese Atomarität der DDL-Anweisungen erhöht die Zuverlässigkeit und Integrität von Schemaänderungen in MySQL 8 und macht es einfacher, die Datenbankstruktur zu verwalten und zu pflegen.

utf8mb4 Zeichensatz

Der Standardzeichensatz wurde tatsächlich von Latin-1 auf utf8mb4 geändert. Diese Änderung spiegelt den Trend zu einer besseren Unterstützung internationaler Zeichensätze und die steigende Nachfrage nach Unicode-Kodierung wider. UTF-8 ist eine Kodierung mit variabler Breite, die eine Vielzahl von Zeichen aus verschiedenen Sprachen und Skripten darstellen kann und sich daher besser für moderne Anwendungen mit einer vielfältigen Benutzerbasis eignet.

Unsichtbare Indizes

Die Unterstützung für unsichtbare Indizes wurde als Funktionserweiterung eingeführt. Unsichtbare Indizes sind Indizes, die vom Abfrageoptimierer bei derErstellung von Abfrageausführungsplänen nicht verwendet werden. Sie ermöglichen es DBAs, die Auswirkungen des Entfernens eines Index zu testen, ohne ihn tatsächlich aus dem Datenbankschema zu entfernen. Diese Funktion ist besonders nützlich für Leistungsoptimierungen und Testszenarien.

Indem du einen Index unsichtbar machst, kannst du beobachten, wie die Abfrageleistung beeinflusst wird, ohne den Index dauerhaft aus der Datenbank zu entfernen. Mit dieser Funktion kannst du herausfinden, ob ein Index nützlich ist oder ob er entfernt werden kann, um die Speicherung und den Wartungsaufwand zu reduzieren. Diese Funktion hilft DBAs, fundiertere Entscheidungen über die Indexverwaltung und Optimierungsstrategien zu treffen.

Plug-in klonen

Das Clone Plug-in ist eine leistungsstarke Funktion, die die Einrichtung der Datenbankreplikation vereinfacht. Es erstellt ein exaktes Replikat des Datenverzeichnisses eines MySQL-Servers und ist damit eine effiziente und schnelle Methode, um eine Replikation von einem Donor- auf einen Replikat-Server einzurichten. Statt herkömmlicher und möglicherweise komplexer Sicherungs- und Wiederherstellungsverfahren können Administratoren mit dieser Funktion die Daten des Spenders einfach auf das Replikat klonen und so den Zeit- und Arbeitsaufwand für die Konfiguration einer Replikationsumgebung erheblich reduzieren. Diese Verbesserung rationalisiert den Einsatz der Replikation, minimiert die Ausfallzeiten und verbessert die allgemeine Verwaltbarkeit und Zuverlässigkeit von MySQL-Replikationsumgebungen.

Heiße Reihen mit NOWAIT und SKIP LOCKED

Die Hot Rows-Funktion wurde um die Optionen NOWAIT und SKIP LOCKED erweitert, die vor allem für die Anweisung SELECT in gleichzeitigen Transaktionsszenarien gelten. Bei Verwendung mit den Klauseln FOR UPDATE oder FOR SHARE stellt NOWAIT sicher, dass MySQL einen sofortigen Fehler zurückgibt, wenn eine andere Sitzung bereits eine Sperre für die Zeilen hält, auf die zugegriffen wird, anstatt darauf zu warten, dass die Sperre freigegeben wird, und reduziert so Konflikte und mögliche Deadlocks. Umgekehrt ermöglicht SKIP LOCKED, dass eine SELECT -Anweisung von anderen Transaktionen gesperrte Zeilen überspringt und so einen blockierungsfreien Zugriff auf Zeilen ermöglicht, während die von anderen Sitzungen gesperrten Zeilen ausgeschlossen werden. Diese Funktionen verbessern die Gleichzeitigkeits- und Transaktionsmanagementfähigkeiten von MySQL, insbesondere in Szenarien mit hohem Konkurrenzdruck beim Datenzugriff.

Wiederverwendung von SSL-Sitzungen

Die Wiederverwendung von SSL-Sitzungen wird von vielen Secure Sockets Layer (SSL)/Transaction Layer Security (TLS)-Implementierungen unterstützt, einschließlich OpenSSL, das in MySQL häufig zur Sicherung von Datenbankverbindungen verwendet wird. Diese Funktion ermöglicht es Clients und Servern, SSL/TLS-Sitzungsparameter wiederzuverwenden, um den Aufwand zu vermeiden, für jede Verbindung eine neue Sitzung auszuhandeln.

In MySQL 8 wird die Wiederverwendung von SSL-Sitzungen standardmäßig unterstützt, sodass MySQL-Clients und -Server SSL/TLS-Sitzungen wiederverwenden, wenn es sinnvoll ist. Die serverseitige Einstellung für das Sitzungscache-Timeout (ssl_session_cache_timeout) bezieht sich auf die Dauer, für die SSL/TLS-Sitzungsparameter zwischengespeichert und für die Wiederverwendung berücksichtigt werden. Wenn sich ein Client innerhalb dieser Zeitspanne erneut mit dem Server verbindet, kann er die bestehenden SSL/TLS-Sitzungsparameter wiederverwenden, was Rechenressourcen spart und die Verbindungsleistung verbessern kann.

Persistierte Systemvariablen

Du kannst jetzt globale dynamische Servervariablen mit dem Befehl SET PERSIST beibehalten, der eine schlankere Alternative zu SET GLOBAL darstellt. Wenn das Schlüsselwort PERSIST verwendet wird, werden alle Änderungen an den Servervariablen nicht nur sofort übernommen, sondern auch in der Optionsdatei mysqld-auto.cnf im Datenverzeichnis gespeichert. Diese Datei speichert die Variablenänderungen und stellt sicher, dass sie auch nach einem Neustart des Servers erhalten bleiben. Diese Funktion vereinfacht die Verwaltung von Serverkonfigurationen, da sie dauerhafte Anpassungen ermöglicht, die über Sitzungen und Serverneustarts hinweg in Kraft bleiben und so die Konsistenz und Verwaltung von MySQL-Implementierungen erleichtern.

Verwaltung von Ressourcengruppen

Du kannst Ressourcengruppen erstellen und verwalten sowie Threads bestimmten Gruppen zuweisen. Diese Funktion ist besonders wertvoll, wenn du die Serverressourcen effizient auf verschiedene Arbeitslasten oder Anwendungen aufteilen musst. Mit Ressourcengruppen kannst du Ressourcen wie CPU und E/A für mehrere Gruppen von Threads oder Sitzungen anhand von Kriterien wie Benutzerkonten, Anwendungen oder Abfragemustern definieren und zuweisen. Diese fein abgestufte Kontrolle über die Ressourcenzuweisung stellt sicher, dass kritische Workloads die erforderlichen Ressourcen erhalten, während gleichzeitig Ressourcenkonflikte vermieden und die Gesamtleistung und Stabilität des Systems verbessert werden.

Tabelle Verschlüsselung

Du kannst die Tabellenverschlüsselung global verwalten, indem du Verschlüsselungsvorgaben definierst und durchsetzt. Du kannst Verschlüsselungsrichtlinien und -vorgaben auf Serverebene festlegen und damit die Art und Weise beeinflussen, wie Tabellen standardmäßig in deiner gesamten MySQL-Instanz verschlüsselt werden, sei es für Tabellen innerhalb des Schemas, des allgemeinen Tablespaces oder des gesamten MySQL-Systems. Dadurch wird sichergestellt, dass die Tabellen einheitlich verschlüsselt werden, was die Datensicherheit und die Einhaltung von Vorschriften vereinfacht. Mit dieser Funktion kannst du Verschlüsselungseinstellungen wie Verschlüsselungsalgorithmen und Schlüsselverwaltungsoptionen auf globaler Ebene festlegen und so einen zentralen und standardisierten Ansatz für die Datenverschlüsselung in deiner MySQL-Datenbank schaffen.

Automatisierte Upgrade-Aufgaben für den MySQL-Server

Mit der MySQL-Version 8.0.16 wurde der Upgrade-Prozess erheblich verbessert. Der MySQL-Server führt nun beim nächsten Serverstart automatisch alle notwendigen Upgrade-Aufgaben aus, einschließlich der Aktualisierung von Systemtabellen und Objekten in anderen Schemas wie dem sys -Schema und user -Schema. Die Benutzer müssen das Dienstprogramm mysql_upgrade nach dem Upgrade ihres MySQL-Servers nicht mehr manuell ausführen. Diese Automatisierung vereinfacht den Upgrade-Prozess, verringert die Fehleranfälligkeit und stellt sicher, dass die Datenbank ohne manuelles Eingreifen ordnungsgemäß auf die neue Version aktualisiert wird.

Wenn keine Option angegeben wird oder wenn --upgrade=AUTO verwendet wird, aktualisiert der Server automatisch alle Komponenten, die er als veraltet erkennt.

Wenn --upgrade=NONE angegeben wird, verzichtet der Server auf ein Upgrade. Er wird jedoch mit einer Fehlermeldung beendet, wenn das Datenwörterbuch ein Upgrade erfordert. Der Betrieb des Servers mit einem veralteten Datenwörterbuch ist nicht erlaubt; der Server verlangt entweder ein Upgrade oder den Abbruch.

Wenn --upgrade=MINIMAL verwendet wird, aktualisiert der Server wesentliche Komponenten wie das Datenwörterbuch, PERFORMANCE_SCHEMA und INFORMATION_SCHEMA, falls erforderlich. Es ist wichtig zu beachten, dass nach einem Upgrade mit dieser Option der Start der Gruppenreplikation möglicherweise nicht möglich ist. Diese Einschränkung ergibt sich daraus, dass die für die Replikationsinterna wichtigen Systemtabellen nicht aktualisiert werden und es daher in verschiedenen Bereichen zu Funktionseinschränkungen kommen kann.

Mit --upgrade=FORCE aktualisiert der Server bei Bedarf wichtige Komponenten wie das Datenwörterbuch, PERFORMANCE_SCHEMA und INFORMATION_SCHEMA. Außerdem werden alle anderen Komponenten zwangsweise aktualisiert. Rechne bei dieser Option mit einer längeren Startdauer des Servers, da der Server alle Objekte in allen Schemas sorgfältig überprüft.

Benutzerdefinierte TCP/IP-Port-Konfiguration für administrative Verbindungen

Du kannst einen separaten TCP/IP-Port speziell für administrative Verbindungen konfigurieren, auch wenn das Limit von max_connections für den primären Port bereits erreicht ist. Diese Funktion bietet mehr Flexibilität und Kontrolle über die Art und Weise, wie administrative Aufgaben erledigt werden, wenn der primäre Verbindungspool bereits voll ausgelastet ist. Durch die Freigabe eines eigenen administrativen Ports können Administratoren unabhängig von der Anzahl der gleichzeitigen Verbindungen auf dem primären Port einen unterbrechungsfreien Zugriff auf den Datenbankserver für wichtige Verwaltungs- und Fehlerbehebungsaufgaben sicherstellen. Diese Verbesserung verbessert die Verwaltbarkeit und Robustheit von MySQL in Szenarien mit hohem Datenverkehr oder eingeschränkten Ressourcen.

Sicherungsschloss

Eine neue Sicherungssperre ermöglicht DML-Operationen (Data Manipulation Language) während einer Online-Sicherung und verhindert gleichzeitig Aktionen, die zu einem inkonsistenten Snapshot führen könnten.

Dauerhafter Zähler mit automatischer Inkrementierung

Der maximale Wert des Zählers für die automatische Erhöhung bleibt auch nach einem Neustart des Servers erhalten. Der Zähler für die automatische Erhöhung, der den nächsten Wert für eine automatisch erhöhte Spalte bestimmt, behält seinen Wert auch dann bei, wenn der Server neu gestartet wird. In früheren Versionen von MySQL wurde der Autoinkrementierungszähler beim Neustart des Servers auf einen zuvor verwendeten und gelöschten Wert zurückgesetzt, was zu Problemen wie doppelten Schlüsselfehlern oder unerwarteten Datenlücken führen konnte. Diese Verbesserung in MySQL 8.0.22 trägt dazu bei, die Datenintegrität und -konsistenz zu gewährleisten, indem der Status des Auto-Inkrement-Zählers über Server-Neustarts hinweg erhalten bleibt.

Verbessertes InnoDB-Tablespace-Management

Mit der Option innodb_directories kannst du Verzeichnisse für InnoDB-Tablespace-Dateien angeben. Mit dieser Funktion können Sie Tablespace-Dateien an einen neuen Ort verschieben oder wiederherstellen, während der MySQL-Server offline ist. Diese Funktion kann für die Verwaltung der physischen Speicherung von InnoDB-Tablespace-Dateien nützlich sein und die Verfügbarkeit und Integrität deiner Datenbank sicherstellen.

Automatisierte Konfiguration für dedizierte MySQL-Server

Es wurde eine neue Systemvariable namens innodb_dedicated_server eingeführt. In der Standardeinstellung ist sie deaktiviert. Wenn sie aktiviert ist, weist diese Variable InnoDB an, verschiedene Optionen auf der Grundlage der ermittelten Speicherverfügbarkeit automatisch zu konfigurieren, um die Leistung des MySQL-Servers für dedizierte Serverumgebungen zu optimieren.

Die Aktivierung von innodb_dedicated_server ist von Vorteil, wenn du einen dedizierten MySQL-Server mit ausreichend Speicherressourcen zur Verfügung hast. InnoDB nimmt bestimmte Annahmen und Anpassungen vor, wie z. B. die Vergrößerung des Pufferpools, um den verfügbaren Speicher für eine bessere Leistung zu nutzen. Diese Funktion vereinfacht den Konfigurationsprozess für dedizierte MySQL-Server und ist daher besser geeignet, wenn MySQL exklusiven Zugriff auf Serverressourcen hat. Es ist jedoch wichtig, dass du die automatisch konfigurierten Einstellungen überprüfst und anpasst, wenn sich das Speicherprofil deines Servers erheblich ändert oder du besondere Leistungsanforderungen hast.

Verbesserte Handhabung temporärer Tabellen

Temporäre InnoDB-Tabellen werden in temporären Sitzungs-Tablespaces erstellt, die durch .ibt-Dateien (InnoDB temporary) repräsentiert werden. Diese Änderung ist eine der Verbesserungen im Umgang mit temporären Tabellen und trägt dazu bei, die Gesamtleistung und Verwaltbarkeit von temporären Tabellen in InnoDB zu verbessern.

Verbesserte Authentifizierungssicherheit und Leistung mit caching_sha2_password

Das neue Authentifizierungs-Plug-in caching_sha2_password wurde entwickelt, um die Sicherheit der Authentifizierung zu erhöhen und gleichzeitig die Latenzprobleme des vorherigen Plug-ins sha256_password zu beheben. Beide Plug-ins implementieren SHA-256Passwort-Hashing, um die Sicherheit zu erhöhen, aber caching_sha2_password enthält Caching-Mechanismen, um die Leistung zu verbessern.

Der Caching-Mechanismus in caching_sha2_password hilft, den Rechenaufwand für das Hashing von Passwörtern während des Authentifizierungsprozesses zu reduzieren. Dies geschieht durch das Zwischenspeichern von bereits gehashten Passwortwerten, was eine schnellere Authentifizierung von Nutzern ermöglicht, die sich erst kürzlich angemeldet haben. Dies kann vor allem in Szenarien mit hohen Verbindungsraten oder in Fällen, in denen die Authentifizierungslatenz einProblem darstellt, von Vorteil sein.

Verbesserte Kategorisierung von Benutzerkonten mit dem SYSTEM_USER Privileg

Es wurde ein System zur Kategorisierung von Benutzerkonten eingeführt, das das SYSTEM_USER Privileg beinhaltet. Dieses Konzept ermöglicht eine klare Unterscheidung zwischen Systembenutzern und normalen Benutzern im Rahmen der MySQL-Authentifizierung und -Autorisierung. Benutzer, die das SYSTEM_USER Privileg besitzen, werden als Systembenutzer eingestuft und erhalten in der Regel erweiterte Rechte für das Datenbankmanagement und die Administration, einschließlich des Zugriffs auf systembezogene Ressourcen und Tabellen. Im Gegensatz dazu verfügen normale Benutzer nicht über diese Berechtigung und sind für den typischen Zugriff auf die Datenbank auf Anwendungsebene vorgesehen. Diese Kategorisierung der Benutzerkonten erhöht die Sicherheit und die Zugriffskontrolle und ermöglicht eine übersichtlichere und besser zu verwaltende Benutzerstruktur in MySQL-Implementierungen.

Erhöhte Sicherheit mit temporärer Kontosperre

Administratoren können Benutzerkonten so konfigurieren, dass sie als Sicherheitsmaßnahme vorübergehend gesperrt werden. Diese Funktion ermöglicht es dem System, eine bestimmte Anzahl von fehlgeschlagenen Anmeldeversuchen zu erkennen und das Benutzerkonto vorübergehend zu sperren. Auf diese Weise wird eine zusätzliche Sicherheitsebene gegen potenzielle unbefugte Zugriffsversuche geschaffen, die die Datenbank effektiv vor Brute-Force-Angriffen oder unbefugtem Zugriff aufgrund mehrerer fehlgeschlagener Anmeldeversuche schützt. Diese Funktion trägt zu einer verbesserten Sicherheit und Zugriffskontrolle in MySQL-Einsätzen bei.

Vereinfachtes Privilegienmanagement mit Rollen

Es wurde Unterstützung für Rollen eingeführt. Rollen sind benannte Sammlungen von Berechtigungen, die die Verwaltung von Benutzerberechtigungen vereinfachen und rationalisieren können. Administratoren können Rollen erstellen, löschen, gewähren und widerrufen, und diesen Rollen können wiederum Berechtigungen gewährt oder entzogen werden. Außerdem können Rollen einzelnen Nutzern gewährt oder entzogen werden, was die Verwaltung und Pflege komplexer Berechtigungsschemata in MySQL erleichtert. Rollen helfen dabei, die Rechteverwaltung zu zentralisieren, die Komplexität zu verringern und die Wartbarkeit und Sicherheit von MySQL-Datenbanksystemen zu verbessern, indem sie es den Administratoren ermöglichen, Rechte effizienter zu gruppieren und zuzuweisen.

Verbesserte Sicherheit mit Multifaktor-Authentifizierung

Seit MySQL 8.0.27 wird die Multifaktor-Authentifizierung (MFA) unterstützt, die für mehr Sicherheit sorgt, indem sie bis zu drei Authentifizierungsmethoden pro Benutzerkonto ermöglicht. Benutzer können aufgefordert werden, sich mehrfach zu authentifizieren, bevor sie Zugriff auf die Datenbank erhalten, was die allgemeine Sicherheit von MySQL-Implementierungen verbessert. MFA ist eine wichtige Funktion, wenn eine starke Authentifizierung erforderlich ist, um sensible Daten zu schützen und unbefugten Zugriff zu verhindern. Durch die Unterstützung mehrerer Authentifizierungsmethoden bietet MySQL mehr Flexibilität und Optionen, um die Sicherheit je nach den spezifischen Anforderungen der Anwendung und desUnternehmens zu erhöhen.

Dynamische Redo-Log-Kapazität

Mit MySQL 8.0.30 wird mit dem dynamischen InnoDB-Redo-Log eine neue Funktion eingeführt, die es Benutzern ermöglicht, die Größe von Redo-Log-Dateien dynamisch zu ändern, ohne dass ein Neustart des Systems erforderlich ist. Dies ist eine wesentliche Verbesserung im Vergleich zu früheren MySQL-Versionen, die eine manuelle Größenänderung und einen Neustart der Datenbank erforderten, damit solche Änderungen wirksam werden. Eine unzureichende Redo-Log-Kapazität kann zu Leistungsproblemen führen, weshalb diese dynamische Größenänderung eine wertvolle Verbesserung darstellt.

Generierte unsichtbare Primärschlüssel

MySQL 8.0.30 führt die Unterstützung für generierte unsichtbare Primärschlüssel (GIPKs) für InnoDB-Tabellen ein, die ohne expliziten Primärschlüssel erstellt wurden. Wenn die Systemvariable sql_generate_invisible_primary_key aktiviert ist, fügt der MySQL-Server selbstständig einen GIPK für jede entsprechende Tabelle ein.

MySQL als Dokumentenspeicher

Das X-Plugin ermöglicht es dem MySQL-Server, mit Clients über das X-Protokoll zu kommunizieren - eine Voraussetzung für den Einsatz von MySQL als Dokumentenspeicher. Das X-Plugin ist jetzt standardmäßig aktiviert.

Fazit

MySQL ist auf mehreren Plattformen und Betriebssystemen verfügbar, darunter Windows, Linux, macOS und verschiedene Cloud-Provider. Die Verwendung von MySQL auf diesen Plattformen bietet verschiedene Vorteile, wie z. B. eine einfache Installation, die Integration mit anderen Anwendungen, Skalierbarkeit und HA. Mit den in diesem Kapitel vorgestellten Beispielkonfigurationen ist es einfach, MySQL auf verschiedenen Plattformen einzurichten und für deineAnwendungen zu nutzen.

Get Hands-On MySQL-Verwaltung 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.