Detaillierte Erklärung von PID und Socket in MySQL

Detaillierte Erklärung von PID und Socket in MySQL
  • Socket-Datei: Die Datei, die bei der Verbindung mit der Unix-Domain-Socket-Methode erforderlich ist.
  • pid-Datei: Die Prozess-ID-Datei der MySQL-Instanz.

1. Einführung in die PID-Datei

Die PID-Datei in MySQL zeichnet die PID des aktuellen MySQLD-Prozesses auf. Die PID wird auch als Prozess-ID bezeichnet. Der PID-Dateipfad und -dateiname können über den Parameter pid-file konfiguriert werden. Wenn diese Variable nicht angegeben ist, lautet die PID-Datei standardmäßig host_name.pid und wird standardmäßig im MySQL-Datenverzeichnis gespeichert.

Es wird empfohlen, den PID-Dateinamen und -Pfad anzugeben und die Berechtigungen für das PID-Verzeichnis an den MySQL-Systembenutzer freizugeben. Die spezifische Konfiguration kann wie folgt abgerufen werden:

# my.cnf Konfigurationsdatei [mysqld]
pid-Datei = /data/mysql/tmp/mysqld.pid

# Den mysqld-Prozess anzeigen [root@localhost ~]# ps -ef | grep mysqld
root 8670 1 0 Jun09 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/data --pid-file=/data/mysql/tmp/mysqld.pid
mysql 9353 8670 0 Jun09 ? 00:01:23 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/logs/error.log --pid-file=/data/mysql/tmp/mysqld.pid --socket=/data/mysql/tmp/mysql.sock

# Den Inhalt der PID-Datei anzeigen
 [root@localhost ~]# cat /data/mysql/tmp/mysqld.pid
9353

Sie können sehen, dass die PID-Datei nur eine Zeile enthält, die die ID des MySQL-Prozesses aufzeichnet. Nachdem der mysqld-Prozess gestartet wurde, wird über die Funktion create_pid_file eine neue PID-Datei erstellt, die aktuelle Prozessnummer wird über getpid () abgerufen und die Prozess-ID wird in die PID-Datei geschrieben. Nachdem der Prozess ausgeführt wurde, wird der PID-Datei eine Dateisperre hinzugefügt. Nur der Prozess, der die Berechtigung zum Schreiben der PID-Datei erhalten hat, kann normal starten und seine eigene PID in die Datei schreiben. Andere redundante Prozesse desselben Programms werden automatisch beendet. Der Zweck der PID-Datei besteht also darin, zu verhindern, dass mehrere Kopien eines Prozesses gestartet werden.

Manchmal kann es aufgrund von Problemen mit PID-Dateien zu Startfehlern kommen. Möglicherweise sind Ihnen die folgenden Fehlertypen begegnet:

Server kann nicht gestartet werden: PID-Datei kann nicht erstellt werden: Keine solche Datei oder kein solches Verzeichnis

FEHLER! Die PID-Datei des MySQL-Servers konnte nicht gefunden werden

FEHLER! Der Server wurde beendet, ohne die PID-Datei zu aktualisieren

Die Lösungen für die oben genannten Arten von PID-bezogenen Fehlern sind eigentlich ähnlich. Sehen Sie sich zuerst das Fehlerprotokoll an, um den spezifischen Fehler zu finden, und überprüfen Sie dann die Konfigurationsdatei, um sicherzustellen, dass der Verzeichnispfad der PID-Datei korrekt ist und über Berechtigungen und Speicherplatz verfügt. Dann können Sie überprüfen, ob der mysqld-Prozess vorhanden ist. Wenn er vorhanden ist, können Sie ihn manuell beenden. Wenn noch PID-Dateien vorhanden sind, können Sie diese auch zuerst löschen. Nachdem alles überprüft wurde, starten Sie erneut, was normalerweise erfolgreich ist.

2. Einführung in Socket-Dateien

Socket ist eine Unix-Socket-Datei. Auf Unix-ähnlichen Plattformen gibt es für einen Client zwei Möglichkeiten, eine Verbindung zu einem MySQL-Server herzustellen: TCP/IP und Socket-Datei. Unix-Socket-Dateiverbindungen sind schneller als TCP/IP, können aber nur für Verbindungen mit Servern auf demselben Computer verwendet werden.

Der Socket-Dateipfad und -name können durch Festlegen der Socket-Variable konfiguriert werden. Der Standardwert ist /tmp/mysql.sock (das Verzeichnis kann bei einigen Distributionsformaten anders sein). Die Referenzkonfiguration sieht wie folgt aus:

# my.cnf Konfigurationsdatei [mysqld]
Socket = /data/mysql/tmp/mysql.sock
[Kunde]
Socket = /data/mysql/tmp/mysql.sock

# Zeigen Sie die Socket-Datei im entsprechenden Verzeichnis root@localhost tmp]# ls -lh an
insgesamt 8.0K
srwxrwxrwx 1 mysql mysql 0 Juni 10 15:19 mysql.sock
-rw------ 1 mysql mysql 6. Juni 10 15:19 mysql.sock.lock

# Socket-Login per -S-Befehl angeben [root@localhost ~]# mysql -uroot -pxxxx -S /data/mysql/tmp/mysql.sock
mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein.
Willkommen beim MySQL-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MySQL-Verbindungs-ID ist 12
Serverversion: 8.0.22 MySQL Community Server – GPL

Copyright (c) 2000, 2020, Oracle und/oder seine Tochtergesellschaften. Alle Rechte vorbehalten.

Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer
Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen
Eigentümer.

Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.

mysql> Status
--------------
mysql Ver 8.0.22 für Linux auf x86_64 (MySQL Community Server – GPL)

Verbindungs-ID: 12
Aktueller Datenbestand:
Aktueller Benutzer: root@localhost
SSL: Nicht in Verwendung
Aktueller Pager: stdout
Outfile wird verwendet: ''
Trennzeichen verwenden: ;
Serverversion: 8.0.22 MySQL Community Server – GPL
Protokollversion: 10
Verbindung: Localhost über UNIX-Socket
Server-Zeichensatz: utf8mb4
Db-Zeichensatz: utf8mb4
Client-Zeichensatz: utf8mb4
Conn.-Zeichensatz: utf8mb4
UNIX-Socket: /data/mysql/tmp/mysql.sock
Binärdaten als: Hexadezimal
Betriebszeit: 1 Stunde 27 Minuten 31 Sekunden

Threads: 3 Fragen: 27 Langsame Abfragen: 0 Öffnungen: 135 Tabellen leeren: 3 Offene Tabellen: 56 Durchschnittliche Abfragen pro Sekunde: 0,005

Aus dem obigen Verbindungsstatus können wir erkennen, dass MySQL lokal über einen Socket verbunden werden kann. Wenn beim lokalen Anmelden der Abschnitt [client] in der Konfigurationsdatei my.cnf keinen Socket-Dateipfad angibt, sucht MySQL standardmäßig nach /tmp/mysql.sock. Wenn sich die beim Starten des mysqld-Dienstes generierte Socket-Datei daher nicht im Standardpfad befindet, kann die Anmeldung fehlschlagen (FEHLER 2002 (HY000): Verbindung zum lokalen MySQL-Server über Socket '/tmp/mysql.sock' nicht möglich). Tatsächlich können Sie dieses Problem vermeiden, indem Sie in den Teilen [mysqld] und [client] bestimmte Pfade konfigurieren. Sie können auch einen Softlink im temporären Pfad erstellen, beispielsweise: ln -s /data/mysql/tmp/mysql.sock /tmp/mysql.sock. Ebenso müssen dem MySQL-Systembenutzer die Berechtigungen für das Socket-Dateiverzeichnis erteilt werden.

Zusammenfassen:

Dieser Artikel stellt die spezifische Konfiguration und Funktion von PID- und Socket-Dateien in MySQL vor. Tatsächlich sind diese beiden Parameter relativ einfach zu verwalten. Konfigurieren Sie sie einfach am Anfang und ändern Sie sie nicht. Wenn beim Neustart ein Fehler auftritt, überprüfen Sie langsam das Fehlerprotokoll. Wenn Sie sorgfältig vorgehen, werden Sie das Problem immer finden.

Oben finden Sie eine ausführliche Erläuterung zu PID und Socket in MySQL. Weitere Informationen zu MySQL PID und Socket finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detaillierte Analyse des Problems des Fehlens von mysql.sock
  • Detaillierte Erläuterung der Funktion der MySQL-Socket-Datei
  • Probleme bei der Installation von MySQL und mysql.sock unter Linux
  • Lösen Sie die Probleme mit dem Selbststart von XAMPP und MySQL.sock
  • So vermeiden Sie MySQL-Startfehler und analysieren die Funktion von Sock-Dateien

<<:  So starten Sie ein Vue-Projekt mit dem M1 Pro-Chip

>>:  Detaillierte Erklärung der CSS-Stil-Kaskadierungsregeln

Artikel empfehlen

Zusammenfassung der Unterschiede zwischen Get- und Post-Anfragen in Vue

Die Betriebsumgebung dieses Tutorials: Windows 7-...

Der Unterschied zwischen den Feldtypen char, varchar und Text in MySQL

In MySQL können alle Felder der Typen char, varch...

So zeigen Sie den Status von Remote-Serverdateien in Linux an

Wie unten dargestellt: Der Testbefehl stellt fest...

mysql: [FEHLER] unbekannte Option '--skip-grant-tables'

MySQL-Datenbank meldet FEHLER 1045 (28000): Zugri...

2 Methoden und Vorsichtsmaßnahmen zum Hinzufügen von Skripten in HTML

So fügen Sie ein <script>-Skript in HTML ein...

Implementierungscodebeispiel für die lokale Verzeichniszuordnung von Nginx

Manchmal müssen Sie auf einige statische Ressourc...

Allgemeine Befehle zum Bereitstellen von InfluxDB und Mongo mit Docker

Bereitstellen einer Datenbank basierend auf Docke...

Verstehen Sie JavaScript-Prototypen und Prototypenketten gründlich

Inhaltsverzeichnis Vorwort Den Grundstein legen P...