MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

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

Ein Datenbankserver ist eine kritische Komponente der Netzwerkinfrastruktur, die für heutige Anwendungen erforderlich ist. Ohne die Möglichkeit, Daten zu speichern, abzurufen, zu aktualisieren und (bei Bedarf) zu löschen, werden die Nützlichkeit und der Umfang von Web- und Desktop-Apps sehr begrenzt.

Darüber hinaus ist das Wissen, wie ein Datenbankserver installiert, verwaltet und konfiguriert wird (so dass er wie erwartet funktioniert), eine grundlegende Fähigkeit, über die jeder Systemadministrator verfügen muss.

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

Installieren und Sichern eines MariaDB-Servers

In CentOS 7.x , MariaDB hat MySQL ersetzt, das immer noch in Ubuntu zu finden ist (zusammen mit MariaDB). Dasselbe gilt für openSUSE .

Der Kürze halber verwenden wir nur MariaDB in diesem Tutorial, aber bitte beachten Sie, dass beide Relational DataBase Management Systems, abgesehen von unterschiedlichen Namen und Entwicklungsphilosophien, sind (RDBMSs kurz) sind nahezu identisch.

Das bedeutet, dass die clientseitigen Befehle auf beiden MySQL gleich sind und MariaDB , und die Konfigurationsdateien heißen und befinden sich an denselben Orten.

Gehen Sie wie folgt vor, um MariaDB zu installieren:

--------------- 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 in Ubuntu , werden Sie aufgefordert, ein Passwort für den RDBMS-Root-Benutzer einzugeben.

Stellen Sie nach der Installation der oben genannten Pakete sicher, dass der Datenbankdienst ausgeführt wird und aktiviert wurde, um beim Booten zu starten (in CentOS und openSUSE Sie müssen diesen Vorgang manuell ausführen, während in Ubuntu der Installationsprozess hat dies bereits für Sie erledigt):

--------------- 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 die mysql_secure_installation aus Skript. Mit diesem Vorgang können Sie:

  1. Passwort für den RDBMS-Root-Benutzer setzen/zurücksetzen
  2. Entfernen Sie anonyme Anmeldungen (wodurch sich nur Benutzer mit einem gültigen Konto beim RDBMS anmelden können)
  3. Deaktivieren Sie den Root-Zugriff für andere Computer als localhost
  4. Entfernen Sie die Testdatenbank (auf die jeder zugreifen kann)
  5. aktivieren Sie die mit 1 bis 4 verbundenen Änderungen.

Eine ausführlichere Beschreibung dieses Vorgangs finden Sie im Abschnitt „Nach der Installation“ unter „Installieren der MariaDB-Datenbank in RHEL/CentOS/Fedora und Debian/Ubuntu.“

MariaDB-Server konfigurieren

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

Meistens nur /etc/my.cnf existiert. In dieser Datei werden wir die serverweiten Einstellungen festlegen (die mit den gleichen Einstellungen in ~/.my.cnf überschrieben werden können für jeden Benutzer).

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.

Serversystemkonfigurationen sind in [mysqld] angegeben Abschnitt, in dem Sie normalerweise nur die ersten beiden Einstellungen in der folgenden Tabelle finden. Der Rest sind andere häufig verwendete Optionen (wo angegeben, ändern wir den Standardwert durch einen benutzerdefinierten Wert unserer Wahl):

Einstellung und Beschreibung Standardwert
datadir ist das Verzeichnis, in dem die Datendateien gespeichert werden. datadir=/var/lib/mysql
socket gibt den Namen und den Speicherort der Socket-Datei an, die für lokale Client-Verbindungen verwendet wird. Denken Sie daran, dass eine Socket-Datei eine Ressource ist, die verwendet wird, um Informationen zwischen Anwendungen auszutauschen. socket=/var/lib/mysql/mysql.sock
bind_address ist die Adresse, an der der Datenbankserver auf TCP/IP-Verbindungen wartet. Wenn Sie möchten, dass Ihr Server mehr als eine IP-Adresse überwacht, lassen Sie diese Einstellung weg (0.0.0.0, was bedeutet, dass er alle IP-Adressen überwacht, die diesem bestimmten Host zugewiesen sind).

Wir werden dies ändern, um den Dienst anzuweisen, nur seine Hauptadresse (192.168.0.13) abzuhören:

bind_address=192.168.0.13

bind_address=0.0.0.0
port stellt den Port dar, auf dem der Datenbankserver lauschen wird.

Wir werden den Standardwert (3306) durch 20500 ersetzen (aber wir müssen sicherstellen, dass nichts anderes diesen Port verwendet):
port=20500

Während einige Leute argumentieren werden, dass Sicherheit durch Verschleierung keine gute Praxis ist, ist das Ändern der Standardanwendungsports durch höhere eine rudimentäre – aber effektive – Methode, um Port-Scans zu verhindern.

port=3306
innodb_buffer_pool_size ist der Pufferpool (in Bytes) des Speichers, der für Daten und Indizes zugewiesen wird, auf die häufig zugegriffen wird, wenn Innodb verwendet wird (was der Standard in MariaDB ist). oder XtraDB als Speicher-Engine.

Wir ersetzen den Standardwert durch 256 MB:

innodb_buffer_pool_size=256M

innodb_buffer_pool_size=134217728
skip_name_resolve gibt an, ob Hostnamen bei eingehenden Verbindungen aufgelöst werden oder nicht. Wenn auf 1 gesetzt, wie wir es in diesem Handbuch tun werden, nur IP-Adressen.

Sofern Sie keine Hostnamen benötigen, um Berechtigungen zu bestimmen, 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 stellt die Größe (in Bytes) dar, die dem Abfragecache auf der Festplatte zur Verfügung steht, wo die Ergebnisse von SELECT-Abfragen für die zukünftige Verwendung gespeichert werden, wenn eine identische Abfrage (to derselben Datenbank und unter Verwendung desselben Protokolls und desselben Zeichensatzes) ausgeführt wird.

Sie sollten eine Cachegröße für Abfragen auswählen, die Ihren Anforderungen entspricht, basierend auf 1) der Anzahl der sich wiederholenden Abfragen und 2) der ungefähren Anzahl der Datensätze, die diese wiederkehrenden Abfragen voraussichtlich zurückgeben. Wir werden diesen Wert vorerst auf 100 MB setzen:

query_cache_size=100M

query_cache_size=0 (was bedeutet, dass es standardmäßig deaktiviert ist)
max_connections ist die maximale Anzahl gleichzeitiger Clientverbindungen zum Server. Wir setzen diesen Wert auf 30:
max_connections=30Jede Verbindung verwendet einen Thread und verbraucht somit Speicher. Berücksichtigen Sie diese Tatsache beim Festlegen von max_connections.
max_connections=151
thread_cache_size gibt die Anzahl der Threads an, die der Server zur Wiederverwendung zuweist, nachdem ein Client die Verbindung getrennt und zuvor verwendete Threads freigegeben hat. In dieser Situation ist es (leistungsmäßig) billiger, einen Thread wiederzuverwenden, als einen neuen zu instanziieren.

Auch dies hängt von der Anzahl der Verbindungen ab, die Sie erwarten. Wir können diesen Wert sicher auf die Hälfte der Anzahl von max_connections setzen:

thread_cache_size=15

thread_cache_size=0 (standardmäßig deaktiviert)

In CentOS , müssen wir SELinux mitteilen um MariaDB zuzulassen um auf einem Nicht-Standard-Port zu lauschen (20500 ) vor dem Neustart des Dienstes:

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

Starten Sie dann den MariaDB-Dienst neu.

MariaDB-Leistung optimieren

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 bereitstellt, um die Leistung unseres Datenbankservers zu verbessern und seine Stabilität zu erhöhen):

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

Wechseln Sie dann in das aus dem Tarball extrahierte Verzeichnis (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 springen wir zum Ende, wo die anzupassenden Variablen mit dem empfohlenen Wert aufgelistet sind:

Der query_cache_type Die Einstellung gibt an, ob der Abfrage-Cache deaktiviert ist (0) oder aktiviert (1) . In diesem Fall mysqltuner rät uns, es zu deaktivieren.

Warum wird uns also geraten, es jetzt zu deaktivieren? Der Grund dafür ist, dass der Abfrage-Cache hauptsächlich in Szenarios mit hohem Lese- und niedrigem Schreibzugriff nützlich ist (was nicht in unserem Fall der Fall ist, da wir gerade den Datenbankserver installiert haben).

WARNUNG :Bevor Sie Änderungen an der Konfiguration eines Produktionsservers vornehmen, sollten Sie unbedingt einen erfahrenen Datenbankadministrator konsultieren, um sicherzustellen, dass eine Empfehlung von mysqltuner keine negativen Auswirkungen auf eine bestehende Einstellung hat.

Zusammenfassung

In diesem Artikel haben wir erklärt, wie Sie einen MariaDB-Datenbankserver konfigurieren, nachdem wir ihn installiert und gesichert haben. Die in der obigen Tabelle aufgeführten Konfigurationsvariablen sind nur einige Einstellungen, die Sie berücksichtigen sollten, wenn Sie den Server für die Verwendung vorbereiten oder ihn später optimieren. Lesen Sie immer die offizielle MariaDB-Dokumentation, bevor Sie Änderungen vornehmen, oder lesen Sie unsere MariaDB-Leistungsoptimierungstipps:

Don' t Fräulein: 15 nützliche Tipps zur MariaDB-Leistungsoptimierung und -optimierung

Zögern Sie wie immer nicht, uns Ihre Fragen oder Kommentare zu diesem Artikel mitzuteilen. Gibt es andere Servereinstellungen, die Sie gerne verwenden? Fühlen Sie sich frei, mit dem Rest der Community über das Kommentarformular unten zu teilen.

Werden Sie ein zertifizierter Linux-Systemadministrator