• Erledigen Sie die Anwendungssicherheit auf die richtige Weise! Erkennen, schützen, überwachen, beschleunigen und mehr…
  • Erfahren Sie, wie Sie MariaDB installieren und konfigurieren, ein beliebtes Open-Source-System zur Verwaltung relationaler Datenbanken (RDBMS).

    Es ist von der Community entwickelt und bietet die Möglichkeit der kommerziellen Unterstützung. MariaDB soll trotz einiger Abweichungen in hohem Maße mit MySQL kompatibel bleiben.

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

    MariaDB auf Ubuntu

    Unter Ubuntu 20.x ist MariaDB direkt in den Standard-Repositorys verfügbar. Wir werden apt für diese Aufgabe verwenden.

    Aktualisieren Sie zuerst die Daten der apt-Repositorys durch:

    $ sudo apt update

    Führen Sie nach der Aktualisierung der Repository-Daten 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 möglicherweise während der Ausführung des vorherigen Befehls erhalten.

    Do you want to continue? [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, die mariadb_repo_setup Skript. Führen Sie die folgenden Befehle auf Ihrem CentOS 7.x-System aus, um das Repository-Setup zu erhalten:

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

    Wenn Sie den manuellen Weg gehen möchten, können Sie ein manuelles YUM-Repository konfigurieren, indem Sie eine neue Repo-Datei erstellen als:

    $ 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 während der Installation angezeigten Eingabeaufforderungen, indem Sie 'y' eingeben:

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

    sudo dnf install mariadb-server

    Andernfalls können Sie die im vorherigen Abschnitt für CentOS 7.x angegebene manuelle Vorgehensweise befolgen, um die neueste verfügbare Version zu erhalten. Damit sollten Sie arbeiten.

    Starten von MariaDB

    Auf einem Ubuntu-Computer wird der MariaDB-Dienst direkt nach der Installation ausgeführt, während für CentOS relevante Dienste manuell aktiviert und gestartet werden müssen.

    Führen Sie in jedem Fall für Ubuntu und 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

    Ausgang:

    $ 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-Kennwort 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 Standardansagen mit vorgeschlagenen Aktionen folgen, es sei denn, Sie haben eine bestimmte Anforderung, abzuweichen.

    Ausgang:

    $ 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. Richten Sie daher kein separates Root-Passwort für MariaDB ein, da es bereits sicher ist. Bei Bedarf können Sie auch jederzeit ein separates Root-Passwort einrichten.

    Setup-Validierung

    Führen Sie Folgendes aus, um Ihr MariaDB-Setup zu überprüfen (geben Sie das Kennwort an, das Sie während der Ausführung eingerichtet haben mysql_secure_installation oder, falls zu diesem Zeitpunkt übersprungen, verwenden Sie die Root-Anmeldeinformationen Ihres Systems):

    $ 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 wie unten gezeigt anstelle des Stammverzeichnisses ein neues Administratorkonto einrichten (ändern Sie den Wert von password mit dem, den Sie einstellen möchten admin Konto):

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

    Überprüfen Sie den Zugriff mit new admin Benutzer als (geben Sie die password wie im vorherigen Schritt festgelegt):

    $ 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 Optimierung hängt von Ihrer Systemkonfiguration, dem Nutzungstyp, 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 diskutieren werden.

    Linux-Kernel-Einstellungen - IO Scheduler

    Empfohlene IO-Scheduler für MariaDB sind noop deadline. Zur Verwendung verwenden 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. Die Auswirkungen, falls vorhanden, wirken sich unmittelbar auf die Systemleistung aus:

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

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

    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 die Leistung leicht überschreiten oder beeinträchtigen. Auf vielen Linux-Systemen beträgt dieses Limit standardmäßig 1024. 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 Ihr hinzufügen /etc/security/limits.conf:

    mysql soft nofile 65535
    mysql hard nofile 65535

    Ein Systemneustart wird nach dem benötigt mysql Der Benutzer kann die neuen Grenzwerte sehen und verwenden. Dies kann überprüft werden als:

    $ ulimit -Sn
    65535
    $ ulimit -Hn
    65535

    Ressourcenbeschränkungen - Kerndateigröße

    Linux begrenzt die Größe der Kerndateien wie im vorherigen Fall. Auch dies hat ein weiches und ein hartes Limit und standardmäßig ist das weiche Limit auf 0 gesetzt, wodurch die Generierung von Kerndateien effektiv deaktiviert wird. So ermöglichen Sie die Generierung von Kerndateien (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 Neustart des Systems mysql Benutzer könnte die neuen Werte mit sehen ulimit Befehl als:

    $ ulimit -Sc
    unlimited
    $ ulimit -Hc
    unlimited

    Konfigurieren Sie Swappiness

    Der Swappiness-Wert unter Linux bestimmt, wie wahrscheinlich es ist, dass das System eine Seite aus dem Speicher in den auf dem System konfigurierten Swap-Bereich austauscht. Normalerweise wird der Standardwert auf 60 gesetzt, was überprüft werden kann von:

    sysctl vm.swappiness

    Sein Wert kann zwischen 0 und 100 liegen, wobei ein niedrigerer Wert eine geringere Wahrscheinlichkeit des Austauschs 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 Swappiness-Werts von 0 unter Berücksichtigung anderer Systemdesignfaktoren mit Vorsicht erfolgen sollte, da bei hoher Speicherauslastung oder E / A-Auslastung die Gefahr besteht, dass der Kernel den OOM-Prozess (Out Of Memory) beendet.

    Da für Datenbank-Workloads und als solche für MariaDB-Datenbanken eine niedrige Swappiness-Einstellung empfohlen wird, wird empfohlen, Swappiness auf den Wert 1 zu setzen. Sie können die folgende Zeile hinzufügen /etc/sysctl.confum diese Änderung dauerhaft zu machen:

    vm.swappiness = 1

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

    sysctl -w vm.swappiness=1

    Dateisystemoptimierungen

    Für MariaDB gelten allgemein die besten Linux-Dateisysteme als ext4, XFS Btrfs Diese sind alle im Linux-Kernel enthalten und werden weitgehend unterstützt. Diese Dateisysteme sind auf den meisten Linux-Distributionen verfügbar. Jedes Dateisystem hat seine einzigartigen Eigenschaften und Merkmale und kann nach ordnungsgemäßer Überprüfung anhand der 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 entsprechende Dateisystem mit mounten noatime Option oder fügen Sie es in den Mount-Optionen in /etc/fstab Datei, um es dauerhaft zu machen.

    DB-Optimierung

    Es gibt mehrere interne Funktionen für MariaDB, die an die jeweiligen Anforderungen und Bedürfnisse angepasst werden können.

    Wir werden hier einige davon besprechen.

    MariaDB wird meistens von konfiguriert my.cnf Datei.

    On UbuntuKönnen Sie finden my.cnf unter:

    /etc/mysql/my.cnf

    Während an CentOS Es befindet sich in:

    /etc/my.cnf

    Ausführliche Informationen darüber, welche Variablen für die Optimierung in der Konfigurationsdatei verfügbar sind, finden Sie in hier.

    Viel hängt auch vom Motortyp ab, den MariaDB verwendet, nämlich MyISAM InnoDB or XtraDB. Beide haben ihre eigenen Vor- und Nachteile, und die Auswahl hängt von den Datenbank- und Anwendungsanforderungen ab.

    Wir sollten setzen innodb_buffer_pool_size zu etwa 80% Ihres Gedächtnisses. Dadurch wird sichergestellt, dass sich 80% Ihres Arbeitssatzes 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 Informationen zum Optimieren von InnoDB- oder XtraDB-Variablen finden Sie hier hier. Beziehen Sie sich darauf leiten für alle verfügbaren Tuning-Optionen für MariaDB.

    Wenn Sie interessiert sind, schauen Sie sich diese Ressourcen an lerne SQL und NoSQL.

    Fazit

    MariaDB ist eine der beliebtesten Optionen für die Beziehung zwischen DBMS. Sein Open-Source mit einer vielfältigen Community trägt weiter dazu bei.

    Weitere Informationen finden Sie unter Dokumentation welches Themen wie grundlegendes SQL enthält, Migration, MariaDB-Administration, Hochverfügbarkeit, Leistungsoptimierung, Speicher-Engines, Programmierung und Anpassung. Vielleicht möchten Sie auch Deaktivieren Sie die binäre Protokollierung Wenn Sie keinen Cluster verwenden.