MySQL Servers installieren und optimieren  Bild © PCMasters.deMySQL Servers installieren und optimieren (Bild © PCMasters.de)

Technische Voraussetzungen für die Installation

Um mit der Bereitstellung eines MySQL-Servers unter Ubuntu fortzufahren, sind folgende Umgebungsvoraussetzungen erforderlich:

  • Ein funktionsfähiges Ubuntu-Betriebssystem.
  • Ein Benutzerkonto, das mit sudo-Administratorrechten konfiguriert ist.
  • Eine stabile Netzwerkschnittstelle für den Paketabruf.
  • Direkter Zugriff auf das Systemterminal.

Implementierung von MySQL 5.7 unter Ubuntu 20.04 LTS

Da die Standard-APT-Repositories für Ubuntu 20.04 MySQL 8.0 priorisieren, musst du für die Installation von Version 5.7 das Repository für diese spezifische Version manuell hinzufügen.

Führe ein weiteres Update durch, um sicherzustellen, dass die Schlüssel erkannt werden:

sudo apt update

Die Überprüfung des Repositorys kannst du wie folgt durchführen:

sudo apt-cache policy mysql-server

Serverinstallation und Absicherung

Führe die Installation der Server- und Client-Komponenten durch:

sudo apt install -f mysql-client=5.7* mysql-community-server=5.7* mysql-server=5.7*

Sobald die Installation abgeschlossen ist und das Root-Passwort festgelegt wurde, initialisiere das Sicherheitsskript, um unsichere Standardeinstellungen zu entfernen:

sudo mysql_secure_installation

Überprüfung und Benutzerverwaltung

Um die Installation zu überprüfen, ruf die MySQL-Shell auf:

mysql -u root -p

Führe die folgende Abfrage aus, um die Version zu überprüfen:

SELECT VERSION();

Um einen neuen Administratorbenutzer anzulegen, führe Folgendes aus:

CREATE USER ‚username‘@'localhost' IDENTIFIED BY ‚user_password‘;
GRANT CREATE, SELECT ON *.* TO ‚username‘@'localhost';

So listest du alle aktuellen Benutzer auf:

SELECT user FROM mysql.user;

Überprüfe den Status des Dienstes mit systemd:

sudo systemctl status mysql

MySQL 8.0 unter Ubuntu installieren

Der Installationsprozess für Version 8.0 unterscheidet sich vor allem bei der Auswahl des Repositorys und den Authentifizierungsmethoden.

Installiere die MySQL 8.0-Suite:

sudo apt install -f mysql-client=8.0* mysql-server=8.0*

In dieser Phase fordert das System dich auf, das Root-Passwort einzugeben, und du musst eine Entscheidung bezüglich des SHA256-basierten Authentifizierungs-Plugins treffen.

MySQL-Version prüfung

Überprüfe die installierte Version über das Terminal:

mysql -V

Für detaillierte Serverinformationen verwende:

mysqladmin -u root -p version

Erweiterte Leistungsoptimierung über my.cnf

Die Optimierung der MySQL-Konfigurationsdatei ist notwendig, um sicherzustellen, dass die Datenbank die Systemressourcen effizient nutzt. Unter Ubuntu befinden sich die Konfigurationsdateien in der Regel unter /etc/mysql/my.cnf oder /etc/mysql/mysql.conf.d/mysqld.cnf.

Anpassungen an Speicher und Verbindungen

Erstelle vor der Bearbeitung eine Sicherungskopie der bestehenden Konfiguration. Verwende dazu einen Texteditor wie nano:

sudo nano /etc/mysql/my.cnf

Passe die folgenden Parameter an, um den Durchsatz zu verbessern: - innodb_buffer_pool_size: Stelle diesen Wert bei dedizierten Datenbankservern auf 70–80 % des gesamten Arbeitsspeichers ein. - innodb_buffer_pool_size = 4G - max_connections: Erhöhe diesen Wert entsprechend der erwarteten Anzahl gleichzeitiger Benutzer. - max_connections = 200 - tmp_table_size und max_heap_table_size: Erhöhe diese Werte, um die Festplatten-E/A für temporäre Tabellen zu reduzieren. - tmp_table_size = 64M - max_heap_table_size = 64M

Protokollierung und InnoDB-Optimierung

Aktiviere das Slow-Query-Log, um Engpässe zu identifizieren:

slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2

Optimiere die InnoDB-Einstellungen weiter für Datenintegrität und Geschwindigkeit:

  • innodb_flush_log_at_trx_commit = 2 (Schafft ein Gleichgewicht zwischen Leistung und Beständigkeit).
  • innodb_log_file_size = 256M (Verbessert die Schreibgeschwindigkeit bei großen Transaktionen).
  • innodb_file_per_table = 1 (Reduziert die Fragmentierung).

Wende alle Änderungen an, indem du den Dienst neu startest:

sudo systemctl restart mysql

Vergleichende Analyse der Speicher-Engines: InnoDB vs. MyISAM

Die Wahl der Speicher-Engine bestimmt, wie Daten verarbeitet, gesperrt und wiederhergestellt werden.

InnoDB

  • Transaktionsunterstützung: Vollständig ACID-konform.
  • Sperren: Implementiert Sperren auf Zeilenebene, was eine hohe Parallelität ermöglicht.
  • Wiederherstellung: Bietet automatische Crash-Wiederherstellung über Transaktionsprotokolle.
  • Integrität: Unterstützt Fremdschlüsselbeschränkungen.
  • Anwendungsfall: Unverzichtbar für Finanzsysteme und E-Commerce-Anwendungen.

MyISAM

  • Transaktionsunterstützung: Nicht transaktional.
  • Sperren: Verwendet Sperren auf Tabellenebene, was in schreibintensiven Umgebungen hinderlich sein kann.
  • Wiederherstellung: Keine integrierte Crash-Wiederherstellung; höheres Risiko von Datenbeschädigungen.
  • Suche: Im Allgemeinen schneller bei Volltextindizierung und leseintensiven Aufgaben.
  • Anwendungsfall: Geeignet für einfache Websites oder schreibgeschützte Datenarchive.

Hier kannst du weitermachen, um deinen MySql Server abzusichern: