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

Tutorial zu XHTML-Webseiten

Dieser Artikel soll vor allem Anfängern einige gr...

Beispiel für die Integration von Kafka mit Nginx

Hintergrund nginx-kafka-module ist ein Plug-In fü...

Python schreibt die Ausgabe in den CSV-Vorgang

Wie unten dargestellt: def test_write(selbst): Fe...

Detaillierte Erklärung zur Verwendung von Standard in MySQL

NULL- und NOT NULL-Modifikatoren, DEFAULT-Modifik...

Lösung für den Fall, dass der Tomcat-Server tomcat7w.exe nicht öffnen kann

Beim Konfigurieren des Tomcat-Servers ist mir heu...

HTML-Tags: Sub-Tag und Sup-Tag

Heute stelle ich zwei HTML-Tags vor, die ich nich...

Implementierung des Imports und Exports von Docker-Images

Docker-Nutzung von Gitlab Gitlab Docker Startbefe...

So deinstallieren Sie das native OpenJDK von Linux und installieren Sun JDK

Siehe: https://www.jb51.net/article/112612.htm Üb...

Detaillierte Erklärung der Funktion und Verwendung der DOCTYPE-Deklaration

1. Browser-Rendering-Modus und Doctype Einige Web...

Installation und Verwendung von TypeScript und grundlegende Datentypen

Der erste Schritt besteht darin, TypeScript globa...

Einfaches Tutorial zu den Firewall-Einstellungen unter Ubuntu 20.04 (Anfänger)

Vorwort In der heutigen, immer bequemeren Interne...