Der Artikel behandelte ein grundlegendes MySQL®-Server-Setup auf dem Ubuntu®-Betriebssystem. Es wurde beschrieben, wie man das Root-Passwort festlegt, eine Datenbank erstellt und einen Benutzer für die Datenbank hinzufügt. Dieser Artikel untersucht die MySQL-Konfiguration ein wenig detaillierter, damit Sie ihre Konfiguration anpassen und vorbereitet sein können, falls etwas schief geht.
Finde die Konfigurationsdateien
Standardmäßig finden Sie die MySQL®-Konfigurationsdateien in:
/etc/mysql
Wenn sie jedoch nicht vorhanden sind, können Sie mysqld
verwenden um die Konfiguration zu finden. Führen Sie den folgenden Befehl aus:
$ /usr/sbin/mysqld --help --verbose
Der erste Teil der langen Antwort beschreibt die Optionen, die Sie an den Server senden können, wenn Sie ihn starten. Der zweite Teil zeigt die während der Serverkompilierung eingestellte Konfiguration.
Suchen Sie am Anfang der Ausgabe ein paar Zeilen, die dem folgenden Beispiel ähneln:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
Der Server untersucht diese Liste, bis er eine Konfigurationsdatei findet.
my.cnf-Konfigurationsdatei
Öffnen und prüfen Sie die Datei /etc/mysql/my.cnf Datei.
Kommentarzeilen beginnend mit # , dokumentieren Sie die Verwendung der verschiedenen Einstellungen. Sie zeigen Details zum Speicherort von Protokolldateien, Datenbankdateien und anderen Details an.
Konfigurationsgruppen
Die Konfigurationsdatei enthält Zeilen mit einem einzelnen Wort in eckigen Klammern, wie [client] oder [mysqld] .Diese Abschnitte sind Konfigurationsgruppen. Sie machen wichtige Konfigurationselemente für die Programme, die die Konfigurationsdatei lesen, besser sichtbar.
Der Abschnitt zur Serverkonfiguration ist technisch gesehen eine Sammlung von Tools. Dazu gehört der Server (mysqld
), der Client (mysql
) und andere Tools. Diese Programme finden Sie in my.cnf um zu sehen, wie sie sich verhalten sollten.
Der Client-Konfigurationsabschnitt steuert mysql
Client und mysqld
Abschnitt steuert die Serverkonfiguration.
Protokolldateien
Protokolldateien sind der beste Ort, um mit der Fehlerbehebung eines Programms zu beginnen. Standardmäßig speichert MySQL seine Protokolldateien im folgenden Verzeichnis:
/var/log/mysql
Möglicherweise müssen Sie sudo
verwenden um eine Liste der Dateien in diesem Verzeichnis zu erhalten.
Wenn Sie die MySQL®-Protokolle nicht im Standardverzeichnis finden, überprüfen Sie die MySQL-Konfiguration. Sehen Sie sich die my.cnf an Datei und suchen Sie nach einem log_error
Zeile, wie in:
log_error = /var/log/mysql/error.log
Wenn Sie keine solche Zeile sehen, erstellen Sie eine in mysqld Abschnitt, damit MySQL® sein eigenes Fehlerprotokoll verwenden kann. Verwenden Sie den Speicherort im Beispiel und erstellen Sie /var/log/mysql Verzeichnis, falls es noch nicht existiert. Starten Sie dann MySQL neu, um die Änderung vorzunehmen.
Stellen Sie sicher, dass der Benutzer in das ausgewählte Protokollverzeichnis schreiben kann, indem Sie mysql
steuern Prozess. Der Benutzer, der den Prozess ausführt, wird in der Benutzerkonfiguration definiert Wert für mysqld in my.cnf .
Netzwerkeinstellungen
Möglicherweise gibt es eine „Port“-Einstellung sowohl unter dem Client und Server Konfigurationsabschnitte. Der Port unter dem Server steuert, auf welchem Port der Server lauscht. Der Standardport ist 3306
aber Sie können es ändern.
Der Port im Client teilt dem Client mit, zu welchem Port er sich standardmäßig verbinden soll. Im Allgemeinen möchten Sie, dass beide Porteinstellungen übereinstimmen.
Wenn Sie die Standardeinstellungen verwenden, werden die Porteinträge in der Konfigurationsdatei nicht angezeigt. Wenn Sie den Port ändern möchten, fügen Sie die folgenden Zeilen in den entsprechenden Kategorien hinzu:
[client]
port = 3306
[mysqld]
port = 3306
Die andere zu suchende Netzwerkeinstellung ist die bind-address Wert. Das wird normalerweise auf die Adresse für localhost gesetzt, 127.0.0.1 . Durch die Bindung an localhost stellt der Server sicher, dass sich niemand von außerhalb des lokalen Computers mit ihm verbinden kann.
Wenn Sie Ihren MySQL-Server auf einem anderen Computer als Ihre Anwendung ausführen, sollten Sie eine Bindung an eine remote zugängliche Adresse statt an den lokalen Host binden. Ändern Sie die Einstellung für die Bindungsadresse so, dass sie mit Ihrer öffentlichen IP-Adresse übereinstimmt. Aus Sicherheitsgründen sollten Sie in einem Netzwerk eine Back-End-IP-Adresse verwenden.
Wenn Sie keine Bind-Adresse sehen -Eintrag, sollten Sie einen in mysqld einfügen Kategorie, um den Zugriff auf den Server zu kontrollieren:
[mysqld]
$ bind-address = 127.0.0.1
Denken Sie daran, den Hostnamen des Clients zu berücksichtigen, wenn Sie Ihre Datenbankbenutzer einrichten, und Firewall-Zugriff bereitzustellen, wenn Sie iptables
erneut ausführen .
mysqld und mysqld_safe
Hinter den Kulissen gibt es zwei Versionen des MySQL-Servers, mysqld
und mysqld_safe
. Beide lesen die gleichen Konfigurationsabschnitte. Allerdings mysqld_safe
startet mit mehr aktivierten Sicherheitsfunktionen, um die Wiederherstellung nach der Fehlerbehebung zu erleichtern.
Sowohl mysqld
und mysqld_safe
Konfigurationseinträge in mysqld lesen Sektion. Wenn Sie eine mysqld_safe Abschnitt, dann nur noch mysqld_safe verwendet diese Werte.
Standardmäßig startet der MySQL-Dienst mysqld_safe
, was angemessen ist.
mysqladmin
Der mysqladmin
Mit dem Tool können Sie einige Verwaltungsfunktionen über die Befehlszeile ausführen, die in diesem Artikel nicht behandelt werden. Sie können das Tool später genauer untersuchen, um zu sehen, was es kann, insbesondere, wenn Sie Skripts erstellen müssen, die Funktionen wie das Überprüfen des Serverstatus oder das Erstellen und Löschen von Datenbanken ausführen müssen.
Sicherungen
Neben der üblichen Sicherung des gesamten Computers haben Sie folgende Möglichkeiten, Ihre Datenbanken zu sichern Ansatz. Die beiden wichtigsten Optionen sind das Kopieren der Datenbankdateien oder die Verwendung von mysqldump
.
Dateikopie
Standardmäßig erstellt MySQL ein Verzeichnis für jede Datenbank in seinem Datenverzeichnis /var/lib/mysql .
Nachdem Sie das Datenverzeichnis gefunden haben, warten Sie einen Moment, bevor Sie eine Kopie davon erstellen. Wenn der Datenbankserver aktiv ist, schreibt er neue Werte in Tabellen. Unterbrechen Sie diesen Vorgang nicht, um eine potenzielle Beschädigung Ihres Backups zu vermeiden.
Um sicherzustellen, dass Sie die Datenbankdateien sauber kopiert haben, sollten Sie den MySQL-Server vor dem Kopieren vollständig herunterfahren.
Sie können die Datenbank als schreibgeschützt sperren für die Dauer der Kopie. Wenn Sie fertig sind, lösen Sie die Sperre. 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;"
Führen Sie den folgenden Befehl aus, um die Datenbank zu entsperren, wenn Sie fertig sind:
$ mysql -u root -p -e "UNLOCK TABLES;"
Die MySQL-Client-Option -e
, weist den Client an, die Abfrage in Anführungszeichen auszuführen, als ob wir sie in die MySQL®-Shell eingegeben hätten.
Wenn Sie diese Befehle in einem Skript schreiben, können Sie das Passwort direkt nach -p
in Anführungszeichen setzen ohne Leerzeichen zwischen den beiden, ähnlich den folgenden Beispielen:
$ mysql -u root -p"password" -e "FLUSH TABLES WITH READ LOCK;"
$ mysql -u root -p"password" -e "UNLOCK TABLES;"
Stellen Sie sicher, dass Sie die Berechtigungen für diese Datei so einstellen, dass der Lesezugriff aus Gründen der Passwortsicherheit eingeschränkt wird.
mysqldump
Ein weiterer Ansatz zum Sichern 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 zum Neuerstellen der Datenbank, aber Sie können die Datenbank auch in einem anderen Format wie .CSV exportieren oder .XML . Sie können die Manpage für mysqldump
lesen um alle Optionen anzuzeigen.
Die von mysqldump
generierten Anweisungen gehe direkt zur Standardausgabe. Sie können einen angeben, um die Ausgabe umzuleiten, indem Sie den folgenden Befehl in der Befehlszeile ausführen:
$ mysqldump -u root -p demodb > dbbackup.sql
Dieser Befehl teilt mysqldump
mit um die demodb neu zu erstellen Datenbank in SQL-Anweisungen zu speichern und in die Datei dbbackup.sql zu schreiben . Beachten Sie, dass die Optionen für Benutzername und Passwort genauso funktionieren wie beim MySQL-Client, sodass Sie das Passwort direkt nach -p
einfügen können in einem Skript.
Aus mysqldump wiederherstellen
Wiederherstellen eines mysqldump
Die Datenbank ähnelt der Erstellung des Dumps, aber Sie verwenden mysql
statt mysqldump
,wie im folgenden Wiederherstellungsbefehl gezeigt:
$ mysql -u root -p demodb < dbbackup.sql
Beachten Sie außerdem, dass <
Die spitze Klammer ändert die Richtung. Dadurch wird der Befehl von der Umleitung seiner Ausgabe auf das Extrahieren der Eingabe aus der vorhandenen Datei umgeschaltet. Diese Eingabe wird an mysql
gesendet Befehl, wodurch die Anweisungen die Datenbank neu erstellen.
Standardmäßig werden die generierten SQL-Anweisungen zu bestehenden Datenbanktabellen hinzugefügt und nicht überschrieben. Wenn Sie eine Sicherung über eine vorhandene Datenbank wiederherstellen, sollten Sie zuerst die Datenbanktabellen löschen oder die Datenbank selbst löschen und neu erstellen. Sie können dieses Verhalten ändern, indem Sie $ --add-drop-table
verwenden Option mit dem Befehl, der mysqldump
erstellt . Das verursacht mysqldump
um einen Befehl zu den Sicherungsdateien hinzuzufügen, die er schreibt, der Tabellen löscht, bevor sie neu erstellt werden.
Datenbank-Engine
Die Datenbank-Engine ist der Prozess, der hinter den Kulissen abläuft, das Schreiben und Lesen von Daten aus Dateien. Sie müssen dies nur wissen, wenn Sie eine Anwendung ausführen möchten, die für eine bestimmte Datenbank-Engine optimiert wurde.
Anwendungen, die Tabellen benötigen, erstellen diese nach Bedarf und erstellen den Engine-Typ automatisch. Um zu sehen, welche Engine die Tabellen Ihrer Datenbank verwenden, können Sie den folgenden Befehl in der MySQL-Shell ausführen und demodb ändern zum Namen Ihrer Datenbank.:
$ SHOW TABLE STATUS FROM demodb;
Wählen Sie eine Engine aus
Im Idealfall müssen Sie sich nicht für eine Engine entscheiden. Wenn Sie mit MySQL nicht sehr vertraut sind, lassen Sie die Anwendung standardmäßig einen auswählen. Wenn Sie die Anwendung schreiben, verwenden Sie die Standard-Engine, bis Sie mit Ihren Optionen besser vertraut sind.
Befolgen Sie die Anweisungen Ihres Datenbankadministrators (DBA), falls vorhanden.
Die beiden Datenbank-Engines, die am häufigsten mit MySQL verwendet werden, sind MyISAM
und InnoDB
. Die Standard-Datenbank-Engine für MySQL-Version 5.1 und früher ist MyISAM
, während InnoDB
ist die Standard-Datenbank-Engine ab MySQL-Version 5.5.
MyISAM
Denn MyISAM
seit einiger Zeit der Standard in MySQL, ist es die kompatibelste Wahl der beiden Haupt-Engines. Bestimmte Suchtypen funktionieren besser auf MyISAM
als InnoDB
. Obwohl es das ältere der beiden ist, ist es möglicherweise die beste Wahl für einen bestimmten Anwendungstyp.
InnoDB
HINWEIS: Ein DBA kann Ihnen helfen, die beste InnoDB
zu erreichen Leistung, weil InnoDB
erfordert viele Anpassungen an Ihre Umgebung und Zugriffsmuster. Die Standardkonfiguration ist optimal für den täglichen Einsatz in der Softwareentwicklung.
InnoDB
ist fehlertoleranter als MyISAM
und bewältigt Abstürze und Wiederherstellungen mit einem viel geringeren Risiko einer Datenbankbeschädigung.
Wenn Ihre Anwendung InnoDB erfordert und Sie MySQL 5.1 oder früher verwenden, sind möglicherweise noch keine Einstellungen in my.cnf vorhanden Konfigurationsdatei. Das kann ein Problem sein, wenn Sie auf einem Server laufen, der nicht viel Arbeitsspeicher hat.
Mit den folgenden Einstellungen können Sie mit InnoDB auf einem gemeinsam genutzten Server mit 256 MB RAM beginnen:
innodb_buffer_pool_size = 32M
innodb_log_file_size = 8M
innodb_thread_concurrency = 8
innodb_file_per_table
Fügen Sie diese zu [mysqld] hinzu Abschnitt der Konfigurationsdatei. Auch dies sind nur grobe Richtwerte. Sie können Ihnen den Einstieg erleichtern, sind aber nicht optimiert. Wenden Sie sich an Ihren DBA oder experimentieren Sie im Laufe der Zeit mit inkrementellen Änderungen, um die Leistung zu verbessern.
Verwandte Artikel
- Installieren Sie den MySQL®-Server auf dem Ubuntu-Betriebssystem
- Ein MySQL®-Root-Passwort zurücksetzen