Der vorherige Artikel behandelte eine grundlegende Einrichtung des MariaDB®-Servers unter CentOS Linux, einschließlich Festlegen des Root-Passworts, Erstellen einer Datenbank und Erstellen eines Benutzers für die Datenbank. Sehen wir uns jetzt MariaDB etwas genauer an, um ihre Konfiguration zu optimieren und bereit zu sein, falls etwas schief geht.
Finde die Konfigurationsdateien
Standardmäßig finden Sie die Konfigurationsdatei von MariaDB an folgendem Ort:
/etc/my.cnf
Wenn es nicht da ist, können Sie mysqld
verwenden um nach der Konfigurationsdatei zu suchen, indem Sie den folgenden Befehl ausführen:
/usr/libexec/mysqld --help --verbose
Sie erhalten eine Menge Text zurück. Der erste Teil beschreibt die Optionen, die Sie beim Start an den Server senden können. Der zweite Teil enthält alle Konfigurationsinformationen, die beim Kompilieren des Servers festgelegt wurden.
Suchen Sie am Anfang der Ausgabe ein paar Zeilen, die den folgenden Zeilen ähneln:
Default options are read from the following files in the given order:
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
Der Server arbeitet die Liste ab, bis er eine Konfigurationsdatei findet.
meine.cnf
Öffnen Sie die my.cnf Datei und werfen Sie einen Blick hinein.
Alle Zeilen, die mit #
beginnen sind Kommentare, und sie dokumentieren meistens, wozu die verschiedenen Einstellungen dienen. Sie finden Details wie den Speicherort von Protokolldateien und den Speicherort der Datenbankdateien.
Konfigurationsgruppen
Es gibt Zeilen in der Konfigurationsdatei, die nur ein Wort in eckigen Klammern enthalten, wie [client] oder [mysqld] . Das sind Konfigurationsgruppen und sie teilen den Programmen, die die Konfigurationsdatei lesen, mit, auf welche Teile sie achten sollten.
MariaDB ist technisch gesehen eine Sammlung von Tools, die den Server (mysqld ), der Client (mysql ) und einige andere Tools. Programme suchen in my.cnf um zu sehen, wie sie sich verhalten sollten.
Im Grunde die mysql Konfigurationsabschnitt steuert den Client und mysqld Abschnitt steuert den Server.
Protokolldateien
Wenn etwas schief geht, ist der beste Ort, um mit der Fehlersuche bei einem Programm zu beginnen, dessen Protokolle. Standardmäßig speichert MariaDB seine Protokolldateien im folgenden Verzeichnis:
/var/log/mariadb
Hinweis :Möglicherweise müssen Sie sudo
verwenden um eine Liste der Dateien in diesem Verzeichnis zu erhalten.
Wenn Sie die Protokolle nicht im Standardverzeichnis finden, müssen Sie die Konfiguration von MariaDB überprüfen. Schauen Sie in die my.cnf Datei und suchen Sie nach einem log_error
Zeile, wie in:
log_error = /var/log/mariadb/mariadb.log
Wenn Sie keine solche Zeile sehen, erstellen Sie eine in mysqld Abschnitt, sodass MariaDB sein eigenes Fehlerprotokoll verwendet. Wir empfehlen, den Speicherort im Beispiel zu verwenden und /var/log/mariadb zu erstellen Verzeichnis, falls es noch nicht existiert. Wenden Sie die Änderung an, indem Sie MariaDB mit dem folgenden Befehl neu starten:
systemctl restart mariadb
Stellen Sie sicher, dass das von Ihnen gewählte Protokollverzeichnis von dem Benutzer beschrieben werden kann, der den MariaDB-Prozess steuert.
Netzwerkeinstellungen
Möglicherweise gibt es einen Port Einstellung in den Abschnitten Client- und Serverkonfiguration. Der Port unter dem Serverabschnitt steuert den Port, auf dem der Server lauscht. Standardmäßig ist es 3306, aber Sie können es beliebig ändern.
Der Port im Client-Abschnitt teilt dem Client den Port mit, zu dem er sich standardmäßig verbinden soll. Im Allgemeinen möchten Sie, dass die beiden Porteinstellungen übereinstimmen.
Wenn Sie die Porteinträge in der Konfigurationsdatei nicht sehen, bedeutet dies, dass die Ports den Standard verwenden. Wenn Sie den Port ändern möchten, fügen Sie die Zeilen in den entsprechenden Kategorien hinzu, wie im folgenden Beispiel gezeigt:
[client]
port = 3306
[mysqld]
port = 3306
Die andere zu suchende Netzwerkeinstellung ist die bind-address Wert. Er ist normalerweise auf die Adresse für localhost, 127.0.0.1, eingestellt. Durch die Bindung an localhost stellt der Server sicher, dass sich niemand von außerhalb des lokalen Rechners mit ihm verbinden kann.
Wenn Sie Ihren MariaDB-Server auf einem anderen Computer als Ihrer Anwendung ausführen, möchten Sie eine Bindung an eine remote zugängliche Adresse anstelle eines lokalen Hosts herstellen. Ändern Sie die bind-Adresse Einstellung so, dass sie mit Ihrer öffentlichen IP-Adresse übereinstimmt (oder, noch besser, mit einer Backend-IP-Adresse in einem Netzwerk, auf das weniger Computer zugreifen können).
Wenn Sie keine Bind-Adresse sehen -Eintrag, sollten Sie einen in mysqld einfügen Kategorie, um den Zugriff auf den Server zu steuern, ähnlich wie im folgenden Beispiel:
[mysqld]
bind-address = 127.0.0.1
Denken Sie daran, den Hostnamen des Clients zu berücksichtigen, wenn Sie Ihre Datenbankbenutzer einrichten, und Ihre Firewall zu konfigurieren, wenn Sie iptables ausführen.
mysqld und mysqld_safe
Hinter den Kulissen gibt es tatsächlich zwei Versionen des MariaDB-Servers, mysqld und mysqld_safe . Beide lesen dieselben Konfigurationsabschnitte. Der Hauptunterschied besteht darin, dass mysqld_safe startet mit einigen aktivierten Sicherheitsfunktionen, um die Wiederherstellung nach einem Absturz oder anderen Problemen zu erleichtern.
Sowohl mysqld und mysqld_safe liest Konfigurationseinträge in mysqld Sektion. Wenn Sie eine mysqld_safe Abschnitt, dann nur noch mysqld_safe liest diese Werte.
Standardmäßig ist die mysql Der Dienst startet mysqld_safe . Sie sollten dies nur ändern, wenn Sie sich wirklich sicher sind, was Sie tun.
mysqladmin
Der mysqladmin Mit dem Tool können Sie einige Verwaltungsfunktionen über die Befehlszeile ausführen. Dieses Tool wird in diesem Artikel nicht behandelt, da dieser Artikel die Grundlagen behandelt, um Sie zum Laufen zu bringen Status des Servers oder Erstellen und Löschen von Datenbanken.
Sicherungen
Wenn es darum geht, Backups Ihrer Datenbanken zu erstellen (abgesehen von dem Ansatz, die gesamte Maschine zu sichern), haben Sie einige Optionen. Die Hauptoptionen sind das Kopieren der Datenbankdateien und die Verwendung von mysqldump .
Dateikopie
Standardmäßig erstellt MariaDB ein Verzeichnis für jede Datenbank in seinem Datenverzeichnis, das dem folgenden Beispiel ähnelt:
/var/lib/mysql
Nachdem Sie das Datenverzeichnis gefunden haben, erstellen Sie nicht sofort eine Kopie davon. Wenn der Datenbankserver aktiv ist, kann er jederzeit neue Werte in Tabellen schreiben. Wenn es mitten in Ihrer Kopie in eine Tabelle schreibt, ändern sich einige Dateien und führen zu einer beschädigten Sicherung. Wenn Sie versuchen, eine Notfallwiederherstellung zu planen, ist dies keine gute Sache.
Um sicherzustellen, dass die Datenbankdateien sauber kopiert werden, fahren Sie den MariaDB-Server vor dem Kopieren vollständig herunter. Das ist sicher, aber nicht immer ideal.
Ein anderer Ansatz, den Sie wählen können, besteht darin, die Datenbank für die Dauer des Kopiervorgangs als schreibgeschützt zu sperren. Wenn Sie fertig sind, geben Sie die Sperre frei. Auf diese Weise können Ihre Anwendungen weiterhin Daten lesen, während Sie Dateien sichern.
Sperren Sie die Datenbanken auf schreibgeschützt, indem Sie den folgenden Befehl über die Befehlszeile ausführen:
mysql -u root -p -e "FLUSH TABLES WITH READ LOCK;"
Um die Datenbank zu entsperren, wenn Sie fertig sind, führen Sie diesen Befehl aus:
mysql -u root -p -e "UNLOCK TABLES;"
Die Optionen -e mit dem mysql client weist den Client an, die Abfrage in Anführungszeichen auszuführen, als ob sie mit mysql eingegeben worden wäre Schale.
Wenn Sie diese Befehle in einem Skript einrichten, können Sie das Passwort direkt nach -p in Anführungszeichen setzen ohne Leerzeichen zwischen den beiden, wie im folgenden Beispiel:
mysql -u root -p"password" -e "FLUSH TABLES WITH READ LOCK;"
mysql -u root -p"password" -e "UNLOCK TABLES;"
Hinweis: Stellen Sie sicher, dass Sie die Berechtigungen für diese Datei so einstellen, dass der Lesezugriff eingeschränkt wird, um das Passwort zu schützen.
mysqldump
Ein weiterer Ansatz zur Sicherung Ihrer Datenbank ist die Verwendung von mysqldump Werkzeug. Anstatt die Datenbankdateien direkt zu kopieren, mysqldump generiert eine Textdatei, die die Datenbank darstellt. Standardmäßig enthält die Textdatei eine Liste von SQL-Anweisungen, die Sie verwenden würden, um die Datenbank neu zu erstellen, aber Sie können die Datenbank auch in einem anderen Format wie CSV oder XML exportieren. Sie können den mysqldump lesen Manpage, um alle seine Optionen zu sehen.
Die von mysqldump generierten Anweisungen gehen Sie zur Standardausgabe. Sie möchten eine Datei angeben, in die die Ausgabe umgeleitet wird, wenn Sie sie ausführen. Zum Beispiel:
mysqldump -u root -p demodb > dbbackup.sql
Dieser Befehl teilt mysqldump mit um die demodb neu zu erstellen Datenbank-inSQL-Anweisungen zu speichern und in die Datei dbbackup.sql zu schreiben . Beachten Sie, dass die Optionen für Benutzername und Passwort genauso funktionieren wie bei mysql Client, sodass Sie das Passwort direkt nach -p einfügen können in einem Skript.
Aus mysqldump wiederherstellen
Wiederherstellen einer mit mysqldump kopierten Datenbank sieht ähnlich aus wie das, mit dem es erstellt wurde, aber Sie verwenden mysql statt mysqldump , wie im folgenden Befehl gezeigt:
mysql -u root -p demodb < dbbackup.sql
Sie wechseln auch von der Verwendung eines Größer-als- zu einem Kleiner-als-Zeichen, wodurch der Befehl von der Umleitung seiner Ausgabe auf die Anweisung wechselt, seine Eingabe aus der vorhandenen Datei zu lesen. Die Eingabe wird an mysql gesendet commandand bewirkt die Anweisungen in der mit mysqldump erstellten Kopie um die Datenbank neu zu erstellen.
Standardmäßig werden die generierten SQL-Anweisungen zu vorhandenen Datenbanktabellen hinzugefügt, ohne sie zu überschreiben. Wenn Sie eine Sicherung über eine vorhandene Datenbank wiederherstellen, sollten Sie zuerst die Tabellen der Datenbank löschen oder die Datenbank selbst löschen und neu erstellen. Sie können dieses Verhalten ändern, indem Sie die –add-drop-table verwenden Option mit dem Befehl, der mysqldump erstellt . Dies verursacht mysqldump um den Sicherungsdateien, die es schreibt, einen Befehl hinzuzufügen, der Tabellen löscht, bevor sie neu erstellt werden.
Datenbank-Engine
Das letzte Konzept, das in diesem Artikel behandelt wird, ist die Datenbank-Engine .Die Engine ist der Prozess, der hinter den Kulissen abläuft und in Dateien schreibt und aus ihnen liest. Normalerweise müssen Sie nichts weiter wissen, als dass es vorhanden ist, aber manchmal möchten Sie eine Anwendung ausführen, die für eine bestimmte Datenbank-Engine optimiert wurde.
Der Engine-Typ wird festgelegt, wenn eine Tabelle erstellt wird. Tabellen werden normalerweise von der Anwendung erstellt, die sie verwenden wird.
Um die Engine anzuzeigen, die von den Tabellen Ihrer Datenbank verwendet wird, können Sie den folgenden Befehl in der MariaDB-Shell ausführen und demodb ändern zum Namen Ihrer Datenbank:
SHOW TABLE STATUS FROM demodb;
Eine Engine auswählen
Im Idealfall müssen Sie sich nicht für eine Engine entscheiden. Wenn Sie mit MariaDB nicht sehr vertraut sind, ist dies der sicherste Weg. Überlassen Sie dies der Anwendung, und wenn Sie die Anwendung schreiben, verwenden Sie die Standard-Engine, bis Sie mit Ihren Optionen besser vertraut sind.
Die Datenbank-Engines, die am häufigsten mit MariaDB verwendet werden, sind MyISAM undInnoDB .
MyISAM
Da MyISAM seit einiger Zeit der Standard in MySQL ist, ist es am kompatibelsten mit MariaDB. Bestimmte Suchtypen funktionieren auf MyISAM besser als auf InnoDB. Nur weil es das ältere der beiden ist, heißt das nicht, dass es nicht das Beste für einen bestimmten Anwendungstyp sein kann.
InnoDB
InnoDB ist fehlertoleranter als MyISAM und handhabt Abstürze und Wiederherstellungen mit einer viel geringeren Wahrscheinlichkeit einer Datenbankbeschädigung. Das ist eine gute Sache.
Für eine optimale Leistung erfordert InnoDB jedoch eine Menge Optimierungen für Ihre Umgebung und Zugriffsmuster. Wenn Sie über aDBA verfügen, ist diese Arbeit möglicherweise kein Problem. Aber wenn Sie ein Entwickler sind, der eine Datenbank für einen Testserver einrichten und ausführen möchte, werden Sie sich wahrscheinlich nicht mit der Optimierung von InnoDB beschäftigen wollen.
Zusammenfassung
An dieser Stelle sollten Sie MariaDB gut verstehen. Weitere Informationen finden Sie auf der MariaDB-Dokumentationsseite.