Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter Datenbank Zuletzt aktualisiert: September 24, 2023
Weitergeben:
Freshdesk - Die benutzerfreundliche Software für den Kundensupport, die Ihnen hilft, Ihre Kunden zufrieden zu stellen.

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.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 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.

  • Abhishek Nair
    Autor
Dank an unsere Sponsoren
Weitere gute Lektüre auf Database
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Das Text-to-Speech-Tool, das mithilfe von KI realistische, menschenähnliche Stimmen erzeugt.
    Versuchen Sie Murf AI
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder