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