MySQL の pid とソケットの詳細な説明

MySQL の pid とソケットの詳細な説明
  • ソケット ファイル: Unix ドメイン ソケット方式を使用して接続するときに必要なファイル。
  • pid ファイル: MySQL インスタンスのプロセス ID ファイル。

1. pidファイルの紹介

MySQL の pid ファイルには、現在の mysqld プロセスの pid が記録されます。pid はプロセス ID とも呼ばれます。 pid ファイルのパスとファイル名は、pid-file パラメータで設定できます。この変数が指定されていない場合、pid ファイルはデフォルトで host_name.pid に設定され、MySQL データ ディレクトリにデフォルトで保存されます。

pid ファイル名とパスを指定することをお勧めします。また、pid ディレクトリの権限は、mysql システム ユーザーに解放する必要があります。具体的な構成は、次のようになります。

# my.cnf 設定ファイル [mysqld]
pid ファイル = /data/mysql/tmp/mysqld.pid

# mysqldプロセスを表示 [root@localhost ~]# ps -ef | grep mysqld
ルート 8670 1 0 6月09日 ? 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 6月9日 ? 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

# pidファイルの内容を表示する
 [root@localhost ~]# cat /data/mysql/tmp/mysqld.pid
9353

pid ファイルには、mysqld プロセスの ID を記録する 1 行のみが含まれていることがわかります。 mysqld プロセスが開始されると、create_pid_file 関数によって新しい pid ファイルが作成され、getpid() によって現在のプロセス番号が取得され、プロセス ID が pid ファイルに書き込まれます。プロセスの実行後、pid ファイルにファイル ロックが追加されます。pid ファイルへの書き込み権限を取得したプロセスのみが正常に起動し、ファイルに独自の PID を書き込むことができます。同じプログラムの他の冗長プロセスは自動的に終了します。したがって、pid ファイルの目的は、プロセスの複数のコピーが開始されるのを防ぐことです。

場合によっては、pid ファイルの問題により起動に失敗することがあります。次の種類のエラーが発生した可能性があります。

サーバーを起動できません: PID ファイルを作成できません: そのようなファイルまたはディレクトリはありません

エラー! MySQL サーバーの PID ファイルが見つかりませんでした

エラー! サーバーは PID ファイルを更新せずに終了しました

上記の種類の pid 関連エラーの解決方法は、実際には似ています。まず、エラー ログを見て特定のエラーを見つけ、次に構成ファイルをチェックして、pid ファイルのディレクトリ パスが正しく、権限とスペースがあることを確認します。次に、mysqld プロセスが存在するかどうかを確認します。存在する場合は、手動で強制終了できます。残っている pid ファイルがある場合は、最初にそれらを削除することもできます。すべてを確認した後、再起動します。通常は成功します。

2.ソケットファイルの紹介

ソケットは Unix ソケット ファイルです。Unix ライクなプラットフォームでは、クライアントが MySQL サーバーに接続する方法は TCP/IP とソケット ファイルの 2 つあります。 Unix ソケット ファイル接続は TCP/IP よりも高速ですが、同じコンピューター上のサーバーへの接続にのみ使用できます。

ソケット ファイルのパスと名前は、socket 変数を設定することで設定できます。デフォルト値は /tmp/mysql.sock です (一部の配布形式ではディレクトリが異なる場合があります)。参照構成は次のとおりです。

# my.cnf 設定ファイル [mysqld]
ソケット = /data/mysql/tmp/mysql.sock
[クライアント]
ソケット = /data/mysql/tmp/mysql.sock

# 対応するディレクトリのソケットファイルを表示します。root@localhost tmp]# ls -lh
合計 8.0K
srwxrwxrwx 1 mysql mysql 0 6月10日 15:19 mysql.sock
-rw------ 1 mysql mysql 6月10日 15:19 mysql.sock.lock

# -S コマンドでソケットログインを指定します [root@localhost ~]# mysql -uroot -pxxxx -S /data/mysql/tmp/mysql.sock
mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。
MySQL モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは12です
サーバーバージョン: 8.0.22 MySQL コミュニティサーバー - GPL

Copyright (c) 2000, 2020, Oracle およびその関連会社。無断複写・転載を禁じます。

OracleはOracle Corporationおよびその関連会社の登録商標です。
その他の名称は各社の商標である場合があります。
所有者。

ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。

mysql> ステータス
--------------
x86_64 上の Linux 用 mysql Ver 8.0.22 (MySQL コミュニティ サーバー - GPL)

接続ID: 12
現在のデータベース:
現在のユーザー: root@localhost
SSL: 使用されていません
現在のページャ: stdout
出力ファイルの使用: ''
区切り文字の使用: ;
サーバーバージョン: 8.0.22 MySQL コミュニティサーバー - GPL
プロトコルバージョン: 10
接続: UNIX ソケット経由のローカルホスト
サーバー文字セット: utf8mb4
Db 文字セット: utf8mb4
クライアントの文字セット: utf8mb4
接続文字セット: utf8mb4
UNIX ソケット: /data/mysql/tmp/mysql.sock
バイナリデータ: 16進数
稼働時間: 1時間27分31秒

スレッド: 3 質問: 27 遅いクエリ: 0 オープン: 135 フラッシュテーブル: 3 オープンテーブル: 56 1秒あたりのクエリ数平均: 0.005

上記の接続ステータスから、MySQL はソケット経由でローカルに接続できることがわかります。ローカルにログインする場合、my.cnf 構成ファイルの [client] セクションでソケット ファイル パスが指定されていない場合、MySQL はデフォルトで /tmp/mysql.sock を検索します。したがって、mysqld サービスの起動時に生成されたソケット ファイルがデフォルトのパスにない場合、ログインが失敗する可能性があります (ERROR 2002 (HY000): ソケット '/tmp/mysql.sock' を介してローカル MySQL サーバーに接続できません)。実際、[mysqld] と [client] の両方の部分に特定のパスを設定することで、この問題を回避できます。また、tmp パスにソフト リンクを作成することもできます (例: ln -s /data/mysql/tmp/mysql.sock /tmp/mysql.sock)。同様に、ソケット ファイル ディレクトリの権限を mysql システム ユーザーに付与する必要があります。

要約:

この記事では、MySQL の pid ファイルとソケット ファイルの具体的な構成と機能を紹介します。実際、これら 2 つのパラメータはメンテナンスが比較的簡単です。最初に設定するだけで、変更しないでください。再起動エラーが発生した場合は、エラー ログに従ってゆっくりと確認してください。慎重に操作すれば、必ず問題を見つけることができます。

以上がMySQLのPIDとソケットの詳しい説明です。MySQLのPIDとソケットについての詳細は、123WORDPRESS.COMの他の関連記事もご覧ください。

以下もご興味があるかもしれません:
  • mysql.sock 欠落問題の詳細な分析
  • mysqlソケットファイルの機能の詳細な説明
  • Linux での mysql および mysql.sock のインストールに関する問題
  • xampp のセルフスタートと mysql.sock の問題を解決する
  • MySQL の起動エラーと SOCK ファイル関数の分析を回避する方法

<<:  M1 ProチップでVueプロジェクトを開始する方法

>>:  CSSスタイルのカスケーディングルールの詳細な説明

推薦する

マインスイーパゲームを実装するための jQuery プラグイン (2)

この記事では、jQueryプラグインを使用してマインスイーパゲームを実装する2番目の記事を参考までに...

Linuxカーネルスケジューラソースコード初期化の分析

目次1. はじめに2. スケジューラの基本概念2.1. 実行キュー (rq) 2.2 スケジューリン...

Vue3 でモバイル ログインおよび登録モジュールをエレガントに実装する方法

目次序文入力ボックスコンポーネントレイアウトvモデルデータ検証ルール設計形状サブコンポーネントは検証...

MySQLクエリの文字セットの不一致の問題を解決する方法

問題を見つける最近、仕事で問題が発生しました。MySQL データベースにテーブルを作成するときに、ラ...

MySQLのページング制限のパフォーマンス問題についての簡単な説明

MySQL ページング クエリは通常、制限を通じて実装されます。 limit は 1 つまたは 2 ...

スタイル属性 (element.style) で定義されたインライン スタイルを削除する方法

Magento を頻繁に変更する場合、element.style に遭遇することがあります。 これは...

Web デザイン スキル: iframe の適応高さの問題

おそらく、この問題にまだ遭遇していない人もいるでしょうから、まずは適応高さとは何かを説明しましょう。...

Mysql接続数の設定と取得方法

接続数を取得する --- 最大接続数を取得します。SHOW VARIABLES LIKE '...

JS に依存せずにレスポンシブ レイアウトを実現する CSS3 モバイル vw+rem メソッド

1. はじめに(1)vw/vhの紹介使用する前に、vw と rem とは何か、その機能について簡単に...

Dockerでrabbitmqをデプロイする際に発生した2つの問題

1. 背景DockerでRabbitMQをデプロイする際に、次の2つの問題が発生します。問題1: ス...

CSS3 のディスプレイのグリッドレイアウトとフレックスレイアウトの詳細な説明

Gird レイアウトは Flex レイアウトといくつかの類似点があり、どちらもコンテナーの内部項目を...

MySQL クエリ キャッシュとバッファ プール

1. キャッシュ - クエリキャッシュ次の図は、MySQL 公式サイトから提供されています: MyS...

jsはタイトルと説明のキーワードを検出し、見つかった場合は置換するか他のページにジャンプします。

キーワード 一般タイトルには、クラック、キー、シリアル番号、キージェネレータなどの単語を含めることは...

Tencent Cloud Server での Jenkins の設定方法の詳細

目次1. Tencent Cloud Serverに接続する2. 環境整備Jenkinsのデプロイメ...

Nginx 設定ファイルの詳細な説明と最適化の提案ガイド

目次1. 概要2. nginx.conf 1) 設定ファイルの場所2) ワーカープロセス3) イベン...