Lernen Sie, wie Sie MariaDB, ein populäres Open-Source MySQL Relational Database Management System (RDBMS), installieren und konfigurieren.

Es wird von der Gemeinschaft entwickelt und bietet die Möglichkeit der kommerziellen Unterstützung. MariaDB wurde so konzipiert, dass es trotz einiger Abweichungen weitgehend kompatibel mit MySQL ist.

In diesem Artikel befassen wir uns mit der Installation und Konfiguration von MariaDB unter Ubuntu 20.x und CentOS 7.x/8.x und gehen am Ende auf einige bewährte Verfahren zur Sicherung und Verbesserung der Leistung ein.

MariaDB unter Ubuntu

Unter Ubuntu 20.x ist MariaDB direkt aus den Standard-Repositories verfügbar. Wir werden apt für diese Aufgabe verwenden.

Aktualisieren Sie zunächst die Daten der apt-Repositories mit:

$ sudo apt update

Sobald die Repository-Daten aktualisiert sind, führen Sie aus:

$ sudo apt install mariadb-server

Dadurch werden MariaDB und die erforderlichen Pakete installiert. Bestätigen Sie die Eingabeaufforderungen, die Sie während der Ausführung des vorherigen Befehls erhalten, mit ‘Y’.

Möchten Sie fortfahren? [J/n] J

MariaDB auf CentOS 7.x

Für CentOS 7.x ist die verfügbare MariaDB-Version aus dem Standard-CentOS-Repository 5.x. Wir werden die neueste verfügbare Version von MariaDB installieren.

Dazu müssen wir zunächst ein zusätzliches yum-Repository konfigurieren. MariaDB bietet eine einfache Möglichkeit, das Skript mariadb_repo_setup zu verwenden. Um das Repository einzurichten, führen Sie die folgenden Befehle auf Ihrem CentOS 7.x-System aus:

$ sudo yum install wget
$ wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
$ chmod x mariadb_repo_setup
$ sudo ./mariadb_repo_setup

Dieses Skript richtet das erforderliche yum-Repository ein, um die neueste Version von MariaDB automatisch zu installieren. Zum Zeitpunkt der Erstellung dieses Artikels ist dies 10.x.

Falls Sie den manuellen Weg gehen möchten, können Sie auch ein manuelles yum-Repository konfigurieren, indem Sie eine neue Repository-Datei anlegen:

$ sudo vi /etc/yum.repos.d/MariaDB.repo

Fügen Sie dann die folgenden Angaben zur Repos-Datei hinzu und speichern Sie sie:

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Um MariaDB zu installieren, führen Sie nun den folgenden Befehl aus:

$ sudo yum install MariaDB-server

Bestätigen Sie alle Abfragen, die während der Installation erscheinen, indem Sie ‘y’ eingeben:

Ist dies in Ordnung [y/d/N]: y

Damit ist die Installation des MariaDB-Servers und der abhängigen Pakete abgeschlossen.

MariaDB auf CentOS 8.x

Für CentOS 8.x ist die verfügbare Version aus den Standard-Repositories 10.3 oder neuer. Wir können MariaDB direkt mit dem DNF-Befehl installieren:

sudo dnf install mariadb-server

Andernfalls können Sie die neueste verfügbare Version wie im vorherigen Abschnitt für CentOS 7.x beschrieben manuell installieren, und das sollte Ihnen helfen.

MariaDB starten

Auf einem Ubuntu-Rechner läuft der MariaDB-Dienst direkt nach der Installation, während wir bei CentOS die entsprechenden Dienste manuell aktivieren und starten müssen.

Führen Sie in jedem Fall sowohl bei Ubuntu als auch bei CentOS die folgenden Befehle aus, um den MariaDB-Dienst zu starten, ihn beim Booten zu aktivieren und zu überprüfen:

$ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
$ sudo systemctl status mariadb.service

Ausgabe:

$ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
Symlink von /etc/systemd/system/multi-user.target.wants/mariadb.service nach /usr/lib/systemd/system/mariadb.service erstellt.
$ sudo systemctl status mariadb.service
● mariadb.service - MariaDB 10.5.8 Datenbankserver
   Geladen: geladen (/usr/lib/systemd/system/mariadb.service; aktiviert; Hersteller-Voreinstellung: deaktiviert)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migriert-aus-meiner.cnf-settings.conf
   Aktiv: aktiv (läuft) seit Thu 2020-12-31 13:20:04 IST; vor 13s
     Dokumentation: man:mariadbd(8)
           https://mariadb.com/kb/en/library/systemd/
 Haupt-PID: 13521 (mariadbd)
   Status: "Nimmt jetzt Ihre SQL-Anfragen entgegen..."
   CGruppe: /system.slice/mariadb.service
           └─13521 /usr/sbin/mariadbd

Dec 31 13:20:04 centos7vm mariadbd<x><x><x><x><x><x><x><x>[13521]</x></x></x></x></x></x></x></x>: 2020-12-31 13:20:04 0 [Hinweis] InnoDB: 10.5.8 gestartet; Log-Sequenznummer 45118; Transaktions-ID 20
Dec 31 13:20:04 centos7vm mariadbd<x><x><x><x><x><x><x><x>[13521]</x></x></x></x></x></x></x></x>: 2020-12-31 13:20:04 0 [Hinweis] Das Plugin 'FEEDBACK' ist deaktiviert.
Dec 31 13:20:04 centos7vm mariadbd<x><x><x><x><x><x><x><x>[13521]</x></x></x></x></x></x></x></x>: 2020-12-31 13:20:04 0 [Hinweis] InnoDB: Lade Pufferpool(s) von /var/lib/mysql/ib_buffer_pool
Dec 31 13:20:04 centos7vm mariadbd<x><x><x><x><x><x><x><x>[13521</x></x></x></x></x></x></x></x>]: 2020-12-31 13:20:04 0 [Hinweis] InnoDB: Laden von Pufferpool(s) abgeschlossen um 201231 13:20:04
Dec 31 13:20:04 centos7vm mariadbd<x><x><x><x><x><x><x><x>[13521]</x></x></x></x></x></x></x></x>: 2020-12-31 13:20:04 0 [Hinweis] Server-Socket erstellt auf IP: '::'.
Dec 31 13:20:04 centos7vm mariadbd<x><x><x><x><x><x><x><x>[13521]</x></x></x></x></x></x></x></x>: 2020-12-31 13:20:04 0 [Hinweis] Lesen aller Master_info Einträge erfolgreich
Dec 31 13:20:04 centos7vm mariadbd<x><x><x><x><x><x><x><x>[13521]</x></x></x></x></x></x></x></x>: 2020-12-31 13:20:04 0 [Hinweis] Neue Master_info '' zur Hashtabelle hinzugefügt
Dec 31 13:20:04 centos7vm mariadbd<x><x><x><x><x><x><x><x>[13521]</x></x></x></x></x></x></x></x>: 2020-12-31 13:20:04 0 [Hinweis] /usr/sbin/mariadbd: bereit für Verbindungen.
Dec 31 13:20:04 centos7vm mariadbd<x><x><x><x><x><x><x><x>[13521]</x></x></x></x></x></x></x></x>: Version: '10.5.8-MariaDB' Socket: '/var/lib/mysql/mysql.sock' port: 3306 MariaDB Server
Dec 31 13:20:04 centos7vm systemd[1]: MariaDB 10.5.8-Datenbank-Server gestartet.
$

Sichern von MariaDB

Als ersten Schritt nach der Installation von MariaDB sollten wir den Einsatz absichern, indem wir ein Root-Passwort festlegen, die Remote-Root-Anmeldung deaktivieren, die Testdatenbank sowie die anonymen Benutzer entfernen und schließlich die Berechtigungen neu laden.

Führen Sie den folgenden Befehl aus, um MariaDB zu sichern:

$ sudo mysql_sichere_Installation

Sie können den Standardaufforderungen mit den vorgeschlagenen Aktionen folgen, es sei denn, Sie haben eine spezielle Anforderung, von der Sie abweichen müssen.

Ausgabe:

$ sudo mysql_secure_installation

HINWEIS: DIE AUSFÜHRUNG ALLER TEILE DIESES SCRIPTS WIRD FÜR ALLE MariaDB
      SERVER IM PRODUKTIVEN EINSATZ!  LESEN SIE BITTE JEDEN SCHRITT SORGFÄLTIG!

Um sich bei MariaDB anzumelden, um es zu sichern, benötigen wir das aktuelle
passwort für den Root-Benutzer. Wenn Sie MariaDB gerade erst installiert haben und
das Root-Passwort noch nicht festgelegt haben, sollten Sie hier einfach die Eingabetaste drücken.

Geben Sie das aktuelle Kennwort für root ein (Enter für keins):
OK, Passwort erfolgreich verwendet, weiter geht's...

Das Setzen des Root-Passworts oder die Verwendung des unix_socket stellt sicher, dass sich niemand
sich ohne die entsprechende Berechtigung beim MariaDB Root-Benutzer anmelden kann.

Sie haben Ihr Root-Konto bereits geschützt, also können Sie getrost mit 'n' antworten.

Umschalten auf unix_socket-Authentifizierung [J/N] n
 ... Überspringen.

Sie haben Ihr Root-Konto bereits geschützt, also können Sie getrost mit 'n' antworten.

Ändern Sie das Root-Passwort? [J/n] n
 ... Überspringen.

Standardmäßig verfügt eine MariaDB-Installation über einen anonymen Benutzer, so dass sich jeder
sich bei MariaDB anmelden kann, ohne dass ein Benutzerkonto für ihn erstellt werden muss
erstellt wurde.  Dies ist nur zum Testen gedacht und um die Installation
etwas reibungsloser zu gestalten.  Sie sollten sie entfernen, bevor Sie in einer
produktionsumgebung.

Anonyme Benutzer entfernen? [J/n] J
 ... Erfolg!

Normalerweise sollte root nur von 'localhost' aus eine Verbindung herstellen dürfen.  Diese
stellt sicher, dass jemand das Root-Passwort nicht über das Netzwerk erraten kann.

Root-Login aus der Ferne nicht zulassen? [J/n] J
 ... Erfolgreich!

MariaDB wird standardmäßig mit einer Datenbank namens 'test' ausgeliefert, auf die jeder
zugreifen kann.  Auch diese Datenbank ist nur für Tests gedacht und sollte entfernt werden
bevor Sie in eine Produktionsumgebung wechseln.

Testdatenbank und Zugriff auf sie entfernen? [J/n] J
 - Testdatenbank entfernen...
 ... Erfolgreich!
 - Entfernen der Berechtigungen für die Testdatenbank...
 ... Erfolgreich!

Das Neuladen der Berechtigungstabellen stellt sicher, dass alle bisher vorgenommenen Änderungen
sofort wirksam werden.

Privilegientabellen jetzt neu laden? [J/n] J
 ... Erfolgreich!

Aufräumen...

Alles erledigt!  Wenn Sie alle oben genannten Schritte ausgeführt haben, sollte Ihre MariaDB
installation jetzt sicher sein.

Vielen Dank, dass Sie MariaDB verwenden!
$

Hier verwenden wir die Systemauthentifizierung, haben also kein separates Root-Passwort für MariaDB eingerichtet, da es bereits sicher ist. Bei Bedarf können Sie jederzeit auch ein separates Root-Passwort einrichten.

Validierung einrichten

Um Ihre MariaDB-Einrichtung zu überprüfen, führen Sie Folgendes aus (geben Sie das Passwort an, das Sie bei der Ausführung von mysql_secure_installation eingerichtet haben, oder verwenden Sie die Root-Zugangsdaten Ihres Systems, falls Sie dies damals übersprungen haben):

$ sudo mysqladmin -u root -p version
Geben Sie das Passwort ein:
mysqladmin Ver 9.1 Distrib 10.5.8-MariaDB, für Linux auf x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab und andere.

Server-Version 10.5.8-MariaDB
Protokoll Version 10
Verbindung Localhost über UNIX-Socket
UNIX-Socket /var/lib/mysql/mysql.sock
Betriebszeit: 53 min 17 sec

Threads: 2 Fragen: 77 Langsame Abfragen: 0 Öffnungen: 20 Offene Tabellen: 14 Abfragen pro Sekunde durchschnittlich: 0.024
$

Sie können ein neues Admin-Konto anstelle des Root-Kontos einrichten, wie unten gezeigt (ändern Sie den Wert des Passworts mit dem, den Sie für das Admin-Konto festlegen wollen):

$ sudo mariadb
Willkommen beim MariaDB-Monitor.  Befehle enden mit ; oder \g.
Ihre MariaDB-Verbindungskennung lautet 44
Server-Version: 10.5.8-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab und andere.

Geben Sie 'help;' oder '\h' für Hilfe ein. Geben Sie '\c' ein, um die aktuelle Eingabeanweisung zu löschen.

MariaDB [(none)]> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Abfrage OK, 0 Zeilen betroffen (0.003 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Abfrage OK, 0 Zeilen betroffen (0.000 sec)

MariaDB [(none)]> exit
Auf Wiedersehen
$

Überprüfen Sie den Zugriff mit dem neuen Benutzer admin als (geben Sie das Passwort ein, das im vorherigen Schritt festgelegt wurde):

$ mysqladmin -u admin -p version
Geben Sie das Passwort ein:
mysqladmin Ver 9.1 Distrib 10.5.8-MariaDB, für Linux auf x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab und andere.

Server-Version 10.5.8-MariaDB
Protokoll Version 10
Verbindung Localhost über UNIX-Socket
UNIX-Socket /var/lib/mysql/mysql.sock
Betriebszeit: 56 min 59 sec

Threads: 2 Fragen: 83 Langsame Abfragen: 0 Öffnungen: 20 Offene Tabellen: 14 Abfragen pro Sekunde durchschnittlich: 0.024
$

OS-Optimierung

Nach der Installation und Sicherung Ihrer MariaDB-Einrichtung sollten Sie Ihr Betriebssystem und Ihre Datenbank für eine optimale Leistung optimieren. Diese Optimierung hängt von Ihrer Systemkonfiguration, der Art der Nutzung, der Anzahl der Benutzer und einer Reihe anderer Faktoren ab.

Aus Sicht des Betriebssystems können einige Systemparameter für MariaDB konfiguriert werden, die wir jetzt besprechen werden.

Linux-Kernel-Einstellungen – IO-Scheduler

Die empfohlenen IO-Scheduler für MariaDB sind noop und deadline. Zur Überprüfung verwenden Sie cat /sys/block/${DEVICE}/queue/scheduler

$ sudo cat /sys/block/sda/queue/scheduler
[mq-deadline] kyber bfq none
$

Eine vorübergehende Änderung können Sie mit dem folgenden Befehl vornehmen, der sich sofort auf die Leistung des Systems auswirkt, wenn überhaupt:

$ sudo echo noop > /sys/block/sda/queue/scheduler

Um ihn dauerhaft zu aktivieren, müssen Sie ihn in der GRUB-Konfigurationsdatei wie unten gezeigt in /etc/default/grub konfigurieren, GRUB neu erstellen und das System neu starten.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

Ressourcenbegrenzungen – Limit für offene Dateien

Linux begrenzt normalerweise die Anzahl der Dateideskriptoren, die jeder Prozess öffnen kann. Bei einem aktiven DB-System kann dieses Limit leicht überschritten werden und die Leistung beeinträchtigen. Auf vielen Linux-Systemen ist dieses Limit standardmäßig auf 1024 festgelegt. Außerdem gibt es die Möglichkeit weicher und harter Limits.

Um das Limit zu erhöhen, können Sie die folgenden Zeilen in Ihre /etc/security/limits.conf einfügen:

mysql soft nofile 65535
mysql hart nofile 65535

Nach einem Neustart des Systems kann der Benutzer mysql die neuen Limits sehen und verwenden. Dies kann wie folgt überprüft werden:

$ ulimit -Sn
65535
$ ulimit -Hn
65535

Ressourcenbegrenzungen – Größe der Kerndatei

Linux begrenzt die Größe von Core-Dateien wie im vorherigen Fall. Auch hier gibt es eine weiche und eine harte Grenze. Die weiche Grenze ist standardmäßig auf 0 gesetzt, was die Erzeugung von Core-Dateien effektiv deaktiviert. Um die Erzeugung von Core-Dateien zu ermöglichen(andere Konfigurationen sind für die Erzeugung von Core-Dumps erforderlich), können wir diesen Wert in /etc/security/limits.conf wie folgt erhöhen:

mysql soft core unbegrenzt
mysql harter Kern unbegrenzt

Nach dem Neustart des Systems kann der Benutzer mysql die neuen Werte mit dem Befehl ulimit wie folgt einsehen:

$ ulimit -Sc
unbegrenzt
$ ulimit -Hc
unbegrenzt

Swappiness konfigurieren

Der Swappiness-Wert in Linux bestimmt, wie wahrscheinlich es ist, dass das System eine Seite aus dem Speicher in den auf dem System konfigurierten Swap Space auslagert. Normalerweise ist der Standardwert auf 60 eingestellt, was Sie mit

sysctl vm.swappiness

Der Wert kann zwischen 0 und 100 liegen, wobei ein niedrigerer Wert eine geringere Auslagerungswahrscheinlichkeit bedeutet. Auf einem Datenbankserver, auf dem nur MariaDB läuft, würden wir diesen Wert auf 0 reduzieren, um Swap so weit wie möglich zu vermeiden. Beachten Sie, dass Sie bei der Einstellung des Swappiness-Werts 0 andere Faktoren des Systemdesigns berücksichtigen sollten, da im Falle einer hohen Speichernutzung oder E/A-Last die Möglichkeit besteht, dass der Kernel einen Out-of-Memory-Prozess (OOM) abbricht.

Da eine niedrige Swappiness-Einstellung für Datenbank-Workloads und somit auch für MariaDB-Datenbanken empfohlen wird, sollten Sie Swappiness auf einen Wert von 1 setzen. Sie können die folgende Zeile in /etc/sysctl.confthinzufügen , umdiese Änderung dauerhaft zu machen:

vm.swappiness = 1

Die Änderungen werden nach einem Neustart des Systems wirksam, Sie können sie jedoch auch vorher mit dem Befehl sysctl vornehmen:

sysctl -w vm.swappiness=1

Optimierungen des Dateisystems

Für MariaDB sind die besten Linux-Dateisysteme im Allgemeinen ext4, XFS und Btrfs, die alle im Mainline-Linux-Kernel enthalten sind und weitgehend unterstützt werden. Diese Dateisysteme sind in den meisten Linux-Distributionen verfügbar. Jedes Dateisystem hat seine eigenen Eigenschaften und Funktionen und kann nach eingehender Prüfung entsprechend den Anforderungen ausgewählt werden.

Außerdem ist es unwahrscheinlich, dass Sie die Dateizugriffszeit auf einem Datenbankserver aufzeichnen müssen. Wir können dies deaktivieren, um die Leistung zu verbessern. Sie können das betreffende Dateisystem mit der Option noatime einhängen oder in den Einhängeoptionen in der Datei /etc/fstab hinzufügen, um es dauerhaft zu machen.

DB-Optimierung

Es gibt mehrere interne Einstellungen für MariaDB, die an die eigenen Anforderungen und Bedürfnisse angepasst werden können.

Wir werden hier ein paar davon besprechen.

MariaDB wird hauptsächlich über die Datei my.cnf konfiguriert.

Unter Ubuntu finden Sie my.cnf unter:

/etc/mysql/my.cnf

Unter CentOS befindet sie sich unter:

/etc/my.cnf

Eine ausführliche Dokumentation über die Variablen, die Sie in der Konfigurationsdatei einstellen können, finden Sie hier.

Vieles hängt auch von der Art der von MariaDB verwendeten Engine ab, nämlich MyISAM und InnoDB oder XtraDB. Beide haben ihre eigenen Vor- und Nachteile und die Wahl hängt von den Anforderungen der Datenbank und der Anwendung ab.

Wir sollten innodb_buffer_pool_size auf etwa 80% Ihres Speichers einstellen. Dadurch wird sichergestellt, dass sich 80 % Ihres Arbeitsspeichers im Speicher befinden.

Einige der anderen wichtigen einstellbaren Parameter sind:

innodb_log_file_size
innodb_flush_method
innodb_thread_sleep_delay
innodb_adaptive_max_sleep_delay
innodb_buffer_pool_instances
innodb_buffer_pool_size
innodb_max_dirty_pages_pct_lwm
innodb_read_ahead_threshold
innodb_thread_concurrency

Weitere Einzelheiten zum Tuning von InnoDB- oder XtraDB-Variablen finden Sie hier. In diesem Leitfaden finden Sie alle verfügbaren Tuning-Optionen für MariaDB.

Wenn Sie Interesse haben, sehen Sie sich diese Ressourcen an, um SQL und NoSQL zu lernen.

Fazit

MariaDB ist eine der beliebtesten Entscheidungen, wenn es um Relation DBMS geht. Die Tatsache, dass es sich um eine Open-Source-Software mit einer vielfältigen Community handelt, trägt noch dazu bei.

Weitere Informationen finden Sie in der Dokumentation, die Themen wie SQL-Grundlagen, Migration, MariaDB-Administration, Hochverfügbarkeit, Leistungsoptimierung, Speicher-Engines, Programmierung und Anpassung enthält. Sie können auch die binäre Protokollierung deaktivieren, wenn Sie keinen Cluster verwenden.