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 abschließend 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? [Y/n] Y
MariaDB unter 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 unter 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, was Ihnen die Arbeit erleichtern sollte.
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.
In jedem Fall führen Sie sowohl bei Ubuntu als auch bei CentOS die folgenden Befehle aus, um den MariaDB-Dienst zu starten, 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
Erstellt einen Symlink von /etc/systemd/system/multi-user.target.wants/mariadb.service nach /usr/lib/systemd/system/mariadb.service.
$ 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
└─migrated-from-my.cnf-settings.conf
Aktiv: aktiv (läuft) seit Thu 2020-12-31 13:20:04 IST; vor 13s
Docs: 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] 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: Loading buffer pool(s) from /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: Buffer pool(s) load completed at 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 Datenbankserver gestartet.
$
MariaDB absichern
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 anonyme 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 Standard-Eingabeaufforderungen 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
SERVERS IM PRODUKTIONSGEBRAUCH EMPFOHLEN! BITTE LESEN SIE JEDEN SCHRITT SORGFÄLTIG DURCH!
Um sich bei MariaDB anzumelden, um es zu sichern, benötigen wir das aktuelle
Passwort für den Benutzer root. 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 Passwort für Root ein (Enter für keins):
OK, Passwort erfolgreich verwendet, weiter geht's...
Durch das Festlegen des Root-Passworts oder die Verwendung des unix_socket wird sichergestellt, dass sich niemand
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.
Zur unix_socket-Authentifizierung wechseln [Y/n] n
... Überspringen.
Sie haben Ihr Root-Konto bereits geschützt, also können Sie getrost mit 'n' antworten.
Das Root-Passwort ändern? [Y/n] n
... Überspringen.
Standardmäßig verfügt eine MariaDB-Installation über einen anonymen Benutzer, der es jedem
ermöglicht, sich bei MariaDB anzumelden, ohne dass für ihn ein Benutzerkonto erstellt werden muss
. Dies ist nur zu Testzwecken gedacht und um die Installation
etwas reibungsloser zu gestalten. Sie sollten sie entfernen, bevor Sie in eine
Produktionsumgebung wechseln.
Anonyme Benutzer entfernen? [J/n] J
... Erfolg!
Normalerweise sollte root nur von 'localhost' aus eine Verbindung herstellen dürfen. Dies
stellt sicher, dass jemand das Root-Passwort nicht über das Netzwerk erraten kann.
Disallow root login remotely? [Y/n] Y
... Erfolg!
MariaDB wird standardmäßig mit einer Datenbank namens 'test' geliefert, auf die jeder
zugreifen kann. Diese ist ebenfalls nur für Tests gedacht und sollte
vor dem Wechsel in eine Produktionsumgebung entfernt werden.
Testdatenbank und Zugriff darauf entfernen? [Y/n] Y
- Entfernen der Testdatenbank...
... Erfolgreich!
- Entfernen der Berechtigungen für die Testdatenbank...
... Erfolg!
Durch das erneute Laden der Berechtigungstabellen wird sichergestellt, dass alle bisher vorgenommenen Änderungen
sofort wirksam werden.
Jetzt die Berechtigungstabellen neu laden? [J/n] J
... Erfolg!
Aufräumen...
Alles erledigt! Wenn Sie alle oben genannten Schritte ausgeführt haben, sollte Ihre MariaDB
Installation jetzt sicher sein.
Danke, 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 der Einrichtung
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
Passwort eingeben:
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
Uptime: 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
Serverversion: 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;
Query OK, 0 rows affected (0.003 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Abfrage OK, 0 Rows betroffen (0.000 sec)
MariaDB [(none)]> exit
Bye
$
Überprüfen Sie den Zugriff mit dem neuen Benutzer admin
als (geben Sie das Passwort
ein, das Sie im vorherigen Schritt festgelegt haben):
$ 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.
Serverversion 10.5.8-MariaDB
Protokollversion 10
Verbindung Localhost über UNIX-Socket
UNIX-Socket /var/lib/mysql/mysql.sock
Uptime: 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-Installation sollten Sie Ihr Betriebssystem und Ihre Datenbank für eine optimale Leistung optimieren. Diese Abstimmung 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 hard 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 Kerndateien
Linux begrenzt die Größe von Kerndateien, wie im vorherigen Fall gesehen. Auch hier gibt es eine weiche und eine harte Grenze, wobei die weiche Grenze standardmäßig auf 0 gesetzt ist, wodurch die Erzeugung von Core-Dateien effektiv deaktiviert wird. 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 unlimited
mysql hard core unlimited
Nach dem Neustart des Systems kann der mysql-Benutzer
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. In der Regel ist der Standardwert auf 60 eingestellt, was Sie überprüfen können:
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. Bitte beachten Sie, dass Sie bei der Einstellung des Swappiness-Werts 0 andere Faktoren des Systemdesigns berücksichtigen sollten, da bei einer hohen Speichernutzung oder E/A-Last die Möglichkeit besteht, dass der Kernel einen Prozess wegen “Out Of Memory” (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.conft
hinzufügen , um
diese Ä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 persistent zu machen.
DB-Optimierung
Es gibt mehrere interne Einstellungen für MariaDB, die Sie je nach Ihren Anforderungen und Bedürfnissen anpassen können.
Wir werden hier einige von ihnen 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 in der Konfigurationsdatei eingestellt werden 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 Details 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-Lösung 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.