So installieren und konfigurieren Sie MariaDB unter Ubuntu und CentOS

Lassen Sie uns lernen, wie MariaDB installiert und konfiguriert wird, ein beliebtes Open-Source-MySQL-Managementsystem für relationale Datenbanken (RDBMS).

Es wurde von der Community entwickelt und hat die Option auf kommerziellen Support. MariaDB soll hochkompatibel mit MySQL bleiben, obwohl es einige Abweichungen gibt.

In diesem Artikel werden wir die Installation und Konfiguration von MariaDB auf Ubuntu 20.x und CentOS 7.x/8.x behandeln und am Ende einige Best Practices zur Sicherung und Verbesserung der Leistung besprechen.

MariaDB auf Ubuntu

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

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

$ sudo apt update

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

$ sudo apt install mariadb-server

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

Do you want to continue? [Y/n] Y

MariaDB auf CentOS 7.x

Für CentOS 7.x ist die verfügbare MariaDB-Version aus dem standardmäßigen 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. Führen Sie die folgenden Befehle auf Ihrem CentOS 7.x-System aus, um das Repository-Setup abzurufen:

$ 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 des Schreibens dieses Artikels ist es 10.x.

Oder falls Sie den manuellen Weg gehen möchten, können Sie ein manuelles Yum-Repository konfigurieren, indem Sie eine neue Repo-Datei wie folgt erstellen:

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

Fügen Sie dann die folgenden Details zur Repo-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

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

$ sudo yum install MariaDB-server

Bestätigen Sie alle Eingabeaufforderungen, die während der Installation erscheinen, mit der Eingabe von „y“:

Is this ok [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 Standardrepositorys 10.3 oder neuer. Wir können MariaDB direkt mit dem DNF-Befehl installieren:

sudo dnf install mariadb-server

Um die neueste verfügbare Version zu erhalten, können Sie den im vorherigen Abschnitt für CentOS 7.x angegebenen manuellen Weg befolgen, und das sollte Sie zum Laufen bringen.

Starten von MariaDB

Auf einem Ubuntu-Rechner wird der MariaDB-Dienst direkt nach der Installation ausgeführt, während wir für CentOS relevante Dienste manuell aktivieren und starten müssen.

Führen Sie in jedem Fall sowohl für Ubuntu als auch für 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
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
$ sudo systemctl status mariadb.service
● mariadb.service - MariaDB 10.5.8 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Thu 2020-12-31 13:20:04 IST; 13s ago
     Docs: man:mariadbd(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 13521 (mariadbd)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─13521 /usr/sbin/mariadbd

Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: 10.5.8 started; log sequence number 45118; transaction id 20
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Plugin 'FEEDBACK' is disabled.
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: Buffer pool(s) load completed at 201231 13:20:04
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Server socket created on IP: '::'.
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Reading of all Master_info entries succeeded
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Added new Master_info '' to hash table
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] /usr/sbin/mariadbd: ready for connections.
Dec 31 13:20:04 centos7vm mariadbd[13521]: Version: '10.5.8-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
Dec 31 13:20:04 centos7vm systemd[1]: Started MariaDB 10.5.8 database server.
$

Sicherung von MariaDB

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

  Können Apps auf dem iPhone oder iPad nicht gelöscht werden? 10 Möglichkeiten, das Problem zu beheben

Führen Sie den folgenden Befehl aus, um MariaDB zu härten:

$ sudo mysql_secure_installation

Sie können den Standard-Eingabeaufforderungen mit vorgeschlagenen Aktionen folgen, es sei denn, Sie haben eine spezielle Anforderung zum Abweichen.

Ausgabe:

$ sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
$

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

Einrichtungsvalidierung

Um Ihr MariaDB-Setup zu überprüfen, führen Sie Folgendes aus (geben Sie das Passwort an, das Sie beim Ausführen von mysql_secure_installation eingerichtet haben, oder verwenden Sie die Root-Anmeldeinformationen Ihres Systems, falls es zu diesem Zeitpunkt übersprungen wird):

$ sudo mysqladmin -u root -p version
Enter password:
mysqladmin  Ver 9.1 Distrib 10.5.8-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.5.8-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 53 min 17 sec

Threads: 2  Questions: 77  Slow queries: 0  Opens: 20  Open tables: 14  Queries per second avg: 0.024
$

Sie können anstelle des Root-Kontos ein neues Administratorkonto einrichten, wie unten gezeigt (ändern Sie den Wert des Passworts mit demjenigen, den Sie für das Administratorkonto festlegen möchten):

$ sudo mariadb
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 44
Server version: 10.5.8-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

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;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> exit
Bye
$

Bestätigen Sie den Zugriff mit dem neuen Admin-Benutzer als (geben Sie das im vorherigen Schritt festgelegte Passwort ein):

$ mysqladmin -u admin -p version
Enter password:
mysqladmin  Ver 9.1 Distrib 10.5.8-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.5.8-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 56 min 59 sec

Threads: 2  Questions: 83  Slow queries: 0  Opens: 20  Open tables: 14  Queries per second avg: 0.024
$

Betriebssystemoptimierung

Nach der Installation und Sicherung Ihres MariaDB-Setups sollten Sie Maßnahmen ergreifen, um Ihr Betriebssystem und Ihre Datenbank für eine optimale Leistung zu optimieren. Diese Abstimmung hängt von Ihrer Systemkonfiguration, dem Verwendungstyp, der Anzahl der Benutzer und einer Reihe anderer Faktoren ab.

  Die 9 besten Plattformen, um professionelle Designer einzustellen

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

Linux-Kernel-Einstellungen – IO-Scheduler

Empfohlene IO-Scheduler für MariaDB sind „noop“ und „deadline“. Verwenden Sie zur Überprüfung cat /sys/block/${DEVICE}/queue/scheduler

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

Eine vorübergehende Änderung kann durch Ausgabe des folgenden Befehls vorgenommen werden und wirkt sich gegebenenfalls sofort auf die Systemleistung aus:

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

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

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

Ressourcenlimits – Limit für offene Dateien

Linux begrenzt normalerweise die Anzahl der Dateideskriptoren, die jeder Prozess öffnen kann. Bei einem aktiven DB-System kann diese Grenze leicht überschritten oder die Leistung beeinträchtigt werden. Auf vielen Linux-Systemen ist dieses Limit standardmäßig auf 1024 eingestellt. Außerdem gibt es eine Option für weiche und harte 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

Ein Systemneustart ist erforderlich, nachdem der MySQL-Benutzer die neuen Grenzwerte sehen und verwenden kann. Dies kann wie folgt überprüft werden:

$ ulimit -Sn
65535
$ ulimit -Hn
65535

Ressourcenbeschränkungen – Kerndateigröße

Linux begrenzt die Größe der Kerndateien, wie im vorherigen Fall zu sehen. Auch dies hat ein weiches und ein hartes Limit, und standardmäßig ist das Soft-Limit auf 0 eingestellt, wodurch die Generierung von Kerndateien effektiv deaktiviert wird. Um die Generierung von Core-Dateien zu ermöglichen (andere Konfigurationen, die für die Core-Dump-Generierung benötigt werden), können wir diesen Wert in /etc/security/limits.conf wie folgt erhöhen:

mysql soft core unlimited
mysql hard core unlimited

Nach dem Systemneustart kann der MySQL-Benutzer die neuen Werte mit dem Befehl ulimit wie folgt sehen:

$ ulimit -Sc
unlimited
$ ulimit -Hc
unlimited

Swapiness konfigurieren

  So reparieren Sie eine App, die nicht geöffnet werden kann, weil der Entwickler nicht verifiziert werden kann

Der Swapiness-Wert in Linux bestimmt, wie wahrscheinlich es ist, dass das System eine Seite aus dem Speicher in den auf dem System konfigurierten Auslagerungsbereich auslagert. Normalerweise ist der Standardwert auf 60 eingestellt, was überprüft werden kann von:

sysctl vm.swappiness

Sein Wert kann zwischen 0 und 100 liegen, wobei ein niedrigerer Wert eine geringere Austauschwahrscheinlichkeit bedeutet. Auf einem Datenbankserver, auf dem nur MariaDB ausgeführt wird, möchten wir diesen Wert auf 0 reduzieren, um die Verwendung von Swap so weit wie möglich zu vermeiden. Beachten Sie hier, dass das Festlegen des Auslagerungswerts von 0 unter Berücksichtigung anderer Faktoren des Systemdesigns mit Vorsicht erfolgen sollte, da im Falle einer hohen Speicherauslastung oder E/A-Last die Möglichkeit besteht, dass der Kernel Prozesse aufgrund von Out Of Memory (OOM) beendet.

Da für Datenbank-Workloads und damit für MariaDB-Datenbanken eine niedrige Einstellung für die Auslagerung empfohlen wird, wird empfohlen, die Auslagerung auf einen Wert von 1 zu setzen. Sie können die folgende Zeile in /etc/sysctl.conf hinzufügen, um diese Änderung dauerhaft zu machen:

vm.swappiness = 1

Die Änderungen werden nach dem Systemneustart wirksam, obwohl Sie dies jederzeit im Voraus mit dem Befehl sysctl tun können:

sysctl -w vm.swappiness=1

Dateisystemoptimierungen

Für MariaDB gelten im Allgemeinen ext4, XFS und Btrfs als die besten Linux-Dateisysteme, die alle im Mainline-Linux-Kernel enthalten sind und weitgehend unterstützt werden. Diese Dateisysteme sind auf den meisten Linux-Distributionen verfügbar. Jedes Dateisystem hat seine einzigartigen Eigenschaften und Merkmale und kann nach sorgfältiger Prüfung basierend auf 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 relevante Dateisystem mit der Option noatime mounten oder es in den Mount-Optionen in der Datei /etc/fstab hinzufügen, um es persistent zu machen.

DB-Optimierung

Es gibt mehrere Tunables innerhalb der MariaDB-Funktion, die basierend auf den eigenen Anforderungen und Bedürfnissen angepasst werden können.

Wir werden hier einige davon besprechen.

MariaDB wird hauptsächlich durch die Datei my.cnf konfiguriert.

Unter Ubuntu finden Sie my.cnf unter:

/etc/mysql/my.cnf

Unter CentOS befindet es sich unter:

/etc/my.cnf

Ausführliche Dokumentation darüber, welche Variablen für die Optimierung in der Konfigurationsdatei verfügbar sind, kann herangezogen werden 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 Auswahl hängt von den Datenbank- und Anwendungsanforderungen ab.

Wir sollten innodb_buffer_pool_size auf etwa 80 % Ihres Arbeitsspeichers setzen. Dadurch wird sichergestellt, dass sich 80 % Ihres Arbeitssatzes im Arbeitsspeicher befinden.

Einige der anderen wichtigen abstimmbaren 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 Optimieren von InnoDB- oder XtraDB-Variablen finden Sie hier hier. Beziehen Sie sich darauf führen für alle verfügbaren Tuning-Optionen für MariaDB.

Wenn Sie interessiert sind, sehen Sie sich diese Ressourcen an, um SQL und NoSQL zu lernen.

Fazit

MariaDB ist eine der beliebtesten Optionen, wenn es um Beziehungs-DBMS geht. Open-Source mit einer vielfältigen Community zu sein, trägt noch dazu bei.

Um mehr zu erfahren, beziehen Sie sich auf seine Dokumentation Dazu gehören Themen wie grundlegendes SQL, Migration, MariaDB-Verwaltung, Hochverfügbarkeit, Leistungsoptimierung, Speicher-Engines, Programmierung und Anpassung. Sie können auch die binäre Protokollierung deaktivieren, wenn Sie keinen Cluster verwenden.