So installieren, sichern und optimieren Sie die Leistung des MariaDB-Datenbankservers

A database server is an critical component of the network infrastructure necessary for today’s applications. Without the ability to store, retrieve, update, and delete data (when needed), the usefulness and scope of web and desktop apps becomes very limited.

Install , Secure and Performance Tuning of MariaDB Server

Das Wissen um die Installation, Verwaltung und Konfiguration eines Datenbankservers (damit er wie erwartet funktioniert) ist eine wesentliche Fähigkeit, die jeder Systemadministrator haben muss.

In diesem Artikel werden wir kurz erläutern, wie man einen MariaDB-Datenbankserver installiert und absichert, und dann werden wir erklären, wie man ihn konfiguriert.

Installation und Absicherung eines MariaDB-Servers

In CentOS 7.x ersetzte MariaDB MySQL, das noch in Ubuntu (zusammen mit MariaDB) zu finden ist. Das Gleiche gilt für openSUSE.

Zur Vereinfachung verwenden wir in diesem Tutorial nur MariaDB, aber bitte beachten Sie, dass beide Relationale Datenbankmanagementsysteme (RDBMSs kurz) trotz unterschiedlicher Namen und Entwicklungsphilosophien nahezu identisch sind.

Dies bedeutet, dass die Befehle auf der Clientseite sowohl bei MySQL als auch bei MariaDB gleich sind und die Konfigurationsdateien die gleichen Namen haben und sich an denselben Orten befinden.

Um MariaDB zu installieren, führen Sie Folgendes aus:

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
# yum update && yum install mariadb mariadb-server # CentOS 

--------------- On Debian and Ubuntu --------------- 
$ sudo aptitude update && sudo aptitude install mariadb-client mariadb-server 

--------------- On openSUSE --------------- 
# zypper update && zypper install mariadb mariadb-tools # openSUSE

Beachten Sie, dass Sie in Ubuntu aufgefordert werden, ein Passwort für den RDBMS-Rootbenutzer einzugeben.

Nachdem die oben genannten Pakete installiert wurden, stellen Sie sicher, dass der Datenbankdienst läuft und aktiviert wurde, um beim Booten zu starten (in CentOS und openSUSE müssen Sie diesen Vorgang manuell durchführen, während in Ubuntu der Installationsprozess dies bereits für Sie erledigt hat):

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
# systemctl start mariadb && systemctl enable mariadb 

--------------- On openSUSE --------------- 
# systemctl start mysql && systemctl enable mysql

Führen Sie dann das Skript mysql_secure_installation aus. Dieser Vorgang ermöglicht es Ihnen:

  1. setzen / zurücksetzen Sie das Passwort für den RDBMS-Root-Benutzer
  2. entfernen Sie anonyme Anmeldungen (damit nur Benutzer mit einem gültigen Konto sich beim RDBMS anmelden können)
  3. deaktivieren Sie den Root-Zugriff für Maschinen außerhalb von localhost
  4. entfernen Sie die Testdatenbank (auf die jeder zugreifen kann)
  5. aktivieren Sie die Änderungen, die mit 1 bis 4 verbunden sind.

Für eine ausführlichere Beschreibung dieses Prozesses können Sie den Abschnitt Postinstallation in Installieren der MariaDB-Datenbank in RHEL/CentOS/Fedora und Debian/Ubuntu konsultieren.

Konfigurieren des MariaDB-Servers

Die Standardeinstellungen werden in der folgenden Reihenfolge aus den folgenden Dateien gelesen: /etc/mysql/my.cnf, /etc/my.cnf und ~/.my.cnf.

Meistens existiert nur /etc/my.cnf. In dieser Datei werden die serverweiten Einstellungen festgelegt (die von jedem Benutzer mit den gleichen Einstellungen in ~/.my.cnf überschrieben werden können).

Das Erste, was wir über my.cnf beachten müssen, ist, dass die Einstellungen in Kategorien (oder Gruppen) organisiert sind, wobei jeder Kategoriename in eckige Klammern eingeschlossen ist.

Server-Systemkonfigurationen werden im Abschnitt [mysqld] angegeben, in dem Sie normalerweise nur die ersten beiden Einstellungen in der untenstehenden Tabelle finden. Die restlichen sind andere häufig verwendete Optionen (wenn angegeben, ändern wir den Standardwert mit einem benutzerdefinierten Wert unserer Wahl):

Setting and description Default value
datadir is the directory where the data files are stored. datadir=/var/lib/mysql
socket indicates the name and location of the socket file that is used for local client connections. Keep in mind that a socket file is a resource that is utilized to pass information between applications. socket=/var/lib/mysql/mysql.sock
bind_address is the address where the database server will listen on for TCP/IP connections. If you need your server to listen on more than one IP address, leave out this setting (0.0.0.0 which means it will listen on all IP addresses assigned to this specific host).

Wir werden dies ändern, um den Dienst anzuweisen, nur auf seiner Hauptadresse (192.168.0.13) zu hören:

bind_address=192.168.0.13

bind_address=0.0.0.0
port represents the port where the database server will be listening.

Wir werden den Standardwert (3306) durch 20500 ersetzen (aber wir müssen sicherstellen, dass kein anderer Port verwendet wird):
port=20500

Obwohl einige argumentieren werden, dass Sicherheit durch Obskurität keine gute Praxis ist, ist das Ändern der Standardanwendungshäfen für höhere ein rudimentäre – aber effektive – Methode, um Portscans zu verhindern.

port=3306
innodb_buffer_pool_size is the buffer pool (in bytes) of memory that is allocated for data and indexes that are accessed frequently when using Innodb (which is the default in MariaDB) or XtraDB as storage engine.

Wir werden den Standardwert durch 256 MB ersetzen:

innodb_buffer_pool_size=256M

innodb_buffer_pool_size=134217728
skip_name_resolve indicates whether hostnames will be resolved or not on incoming connections. If set to 1, as we will do in this guide, only IP addresses.

Es sei denn, Sie benötigen Hostnamen, um Berechtigungen festzulegen, ist es ratsam, diese Variable zu deaktivieren (um Verbindungen und Abfragen zu beschleunigen), indem Sie ihren Wert auf 1 setzen:

skip_name_resolve=1

skip_name_resolve=0
query_cache_size represents the size (in bytes) available to the query cache in disk, where the results of SELECT queries are stored for future use when an identical query (to the same database and using the same protocol and same character set) is performed.

Sie sollten eine Abfragespeichergröße wählen, die Ihren Bedürfnissen entspricht, basierend auf 1) der Anzahl wiederholter Abfragen und 2) der ungefähren Anzahl von Datensätzen, die von diesen wiederholten Abfragen zurückgegeben werden sollen. Wir setzen diesen Wert vorläufig auf 100 MB:

query_cache_size=100M

query_cache_size=0 (which means it is disabled by default)
max_connections is the maximum number of simultaneous client connections to the server. We will set this value to 30:
max_connections=30Each connection will use a thread, and thus will consume memory. Take this fact into account while setting max_connections.
max_connections=151
thread_cache_size indicates the numbers of threads that the server allocates for reuse after a client disconnects and frees thread(s) previously in use. In this situation, it is cheaper (performance-wise) to reuse a thread than instantiating a new one.

Dies hängt erneut von der Anzahl der erwarteten Verbindungen ab. Wir können diesen Wert sicher auf die Hälfte der max_connections setzen:

thread_cache_size=15

thread_cache_size=0 (disabled by default)

In CentOS müssen wir SELinux mitteilen, MariaDB das Hören auf einem nicht standardmäßigen Port (20500) zu erlauben, bevor wir den Dienst neu starten:

# yum install policycoreutils-python
# semanage port -a -t mysqld_port_t -p tcp 20500

Dann starten Sie den MariaDB-Dienst neu.

Optimierung der MariaDB-Performance

Um uns bei der Überprüfung und Anpassung der Konfiguration gemäß unseren spezifischen Anforderungen zu unterstützen, können wir mysqltuner installieren (ein Skript, das Vorschläge zur Verbesserung der Leistung unseres Datenbankservers bietet und seine Stabilität erhöht):

# wget https://github.com/major/MySQLTuner-perl/tarball/master
# tar xzf master

Dann wechseln Sie in das Verzeichnis, das aus dem Tarball extrahiert wurde (die genaue Version kann in Ihrem Fall abweichen):

# cd major-MySQLTuner-perl-7dabf27

und führen Sie es aus (Sie werden aufgefordert, die Anmeldeinformationen Ihres administrativen MariaDB-Kontos einzugeben)

# ./mysqltuner.pl

Die Ausgabe des Skripts ist an sich sehr interessant, aber lassen Sie uns zum Ende springen, wo die anzupassenden Variablen mit dem empfohlenen Wert aufgeführt sind:

MariaDB Performance Tunning

Die Einstellung query_cache_type gibt an, ob der Abfragecache deaktiviert (0) oder aktiviert (1) ist. In diesem Fall empfiehlt uns mysqltuner, ihn zu deaktivieren.

Warum wird uns also jetzt empfohlen, ihn zu deaktivieren? Der Grund ist, dass der Abfragecache hauptsächlich in Szenarien mit hohem Lese- / niedrigem Schreibaufkommen nützlich ist (was nicht unser Fall ist, da wir gerade den Datenbankserver installiert haben).

WARNUNG: Bevor Sie Änderungen an der Konfiguration eines Produktivservers vornehmen, wird dringend empfohlen, einen Experten-Datenbankadministrator zu konsultieren, um sicherzustellen, dass eine Empfehlung von mysqltuner sich nicht negativ auf eine bestehende Einstellung auswirkt.

Zusammenfassung

In diesem Artikel haben wir erklärt, wie man einen MariaDB-Datenbankserver konfiguriert, nachdem wir ihn installiert und abgesichert haben. Die in der obigen Tabelle aufgeführten Konfigurationsvariablen sind nur einige Einstellungen, die Sie beim Vorbereiten des Servers für die Verwendung oder beim späteren Feinabstimmen in Betracht ziehen möchten. Konsultieren Sie immer die offizielle MariaDB-Dokumentation, bevor Sie Änderungen vornehmen, oder werfen Sie einen Blick auf unsere MariaDB-Performance-Tuning-Tipps:

Vergessen Sie nicht: 15 nützliche MariaDB-Performance-Tuning- und Optimierungstipps

Wie immer, zögern Sie nicht, uns bei Fragen oder Kommentaren zu diesem Artikel zu kontaktieren. Gibt es andere Servereinstellungen, die Sie gerne verwenden? Teilen Sie diese gerne mit der Community mithilfe des Kommentarfelds unten.

Source:
https://www.tecmint.com/install-secure-performance-tuning-mariadb-database-server/