MySQL の起動オプションとシステム変数の例の詳細な説明

MySQL の起動オプションとシステム変数の例の詳細な説明

この記事では、MySQL の起動オプションとシステム変数について説明します。ご参考までに、詳細は以下の通りです。

MySQL 構成情報は 2 つの方法で実装できます。1 つはコマンド ライン形式です。これは、MySQL サービスを開始した後に関連する構成パラメータを取得します。この方法は、MySQL を再起動すると無効になります。もう 1 つの方法は、my.cnf などの構成ファイルに書き込むことです。これは、MySQL サービスを起動または再起動すると有効になります。この方法は永続的です。

ブートオプション

コマンドライン

MySQLサービスコマンドを起動するときに、設定パラメータを設定します。

起動方法については、こちらの記事を参照してください:MySQLの起動と接続方法

コマンド形式:
起動コマンド --startup オプション 1 [= 値 1] --startup オプション 2 [= 値 2] ... --startup オプション n [= 値 n]
例えば:
mysqld --default-storage-engine=MyISAM //デフォルトのストレージエンジンを設定する
間違った例:
mysqld --default-storage-engine = MyISAM //デフォルトのストレージエンジンを設定する理由:
スタートアップ項目の等号と値の間にスペースを入れることはできないため

パラメータの長い形式と短い形式

構成パラメータには長い形式と短い形式があります。 機能は同じでも書き方が異なるものもあります。
--host => -h //ホスト--port => -P //ポート--user => -u //ユーザー--password => -p //パスワード--version => -V //バージョン......
例:
mysqld --port=3306
mysqld -P3306
mysqld -P 3306
知らせ:
パスワードにはスペースを含めることはできません。mysqld -proot

設定ファイル

設定ファイル my.cnf の場所は次のようになります。MySQL サービスの起動時に設定ファイルが指定されていない場合は、次の場所から検索、読み取り、初期化されます。
* /etc/my.cnf 
* /etc/mysql/my.cnf
* defaults-extra-file // 指定された追加の構成ファイル パス* SYSCONFDIR/my.cnf // cmake のコンパイルとインストール状況* $MYSQL_HOME/my.cnf // 環境変数の設定、デフォルトのインストール パス* ~/.my.cnf // ユーザー固有のオプション、ホーム ディレクトリ* ~/.mylogin.cnf // ユーザー固有のログイン パス オプション (クライアントのみ)、mysql_config_editor によって変更され、純粋なファイルではない

知らせ

1. 設定ファイルで指定する起動オプションには -- をプレフィックスとして付けることはできません。また、1 行に 1 つのオプションのみ指定でき、= の前後に空白文字を置くことができます。
2. 複数の設定ファイルで同じ起動オプションを設定した場合、最後の設定ファイルが優先されます。
3. コマンドラインと構成ファイルの両方に同じ起動オプションが指定されている場合は、コマンドラインの起動オプションが優先されます。
4. mysqld --defaults-file=/tmp/myconfig.txt
// プログラムが起動すると、/tmp/myconfig.txt パス内の構成ファイルのみが検索されます。ファイルが存在しないかアクセスできない場合はエラーが発生します

構成グループ

設定ファイルには、mysqld、mysqld_safe、mysql.server、mysql、mysqladmin、mysqldump などのグループを設定できます。また、異なるグループに対して設定することもできます。

コンテンツ形式
[サーバ]
(特定の起動オプション...)
[mysqld]
(特定の起動オプション...)
[mysqld_safe]
(特定の起動オプション...)
[クライアント]
(特定の起動オプション...)
[mysql]
(特定の起動オプション...)
[mysqladmin]
(特定の起動オプション...)
例:
[mysqld]
pid ファイル = /var/run/mysqld/mysqld.pid
ソケット = /var/run/mysqld/mysqld.sock
データディレクトリ = /var/lib/mysql
ログエラー = /var/log/mysql/error.log
#構成を最適化 wait_timeout=10
バックログ=600
キーバッファサイズ = 2048M
読み取りバッファサイズ = 100M
最大許容パケット = 1000M
スレッドスタック = 192K
スレッドキャッシュサイズ = 4
myisam-recover-options = バックアップ
最大接続数 = 4000
最大ユーザー接続数 = 0
最大接続エラー数 = 65535
オープンファイル制限 = 10240
......

知らせ
1. [server] グループの起動オプションは、mysqld、mysqld_safe、mysql.server などのすべてのサーバー プログラムに適用されます。
2. [client]グループの起動オプションは、mysql、mysqladmin、mysqldumpなどのすべてのクライアントプログラムに適用されます。
3. 同じ設定ファイル内の複数のグループの優先順位は、最後に表示されるグループの起動オプションに基づいて決定されます。

システム変数

MySQL サーバー プログラムは、動作中にプログラムの動作に影響を与える多くの変数を使用します。これらは MySQL システム変数と呼ばれます。

例えば:
1. 同時に接続できるクライアントの数は、システム変数max_connectionsで示されます。
2. テーブルのデフォルトのストレージエンジンは、システム変数default_storage_engineで表されます。
3. クエリキャッシュのサイズはシステム変数query_cache_sizeで表されます。
......

チェック

形式:
SHOW VARIABLES [LIKE 一致パターン];
例えば:
'default_storage_engine' のような変数を表示します。 

設定

スタートアップ設定経由

コマンドライン設定
mysqld --default-storage-engine=MyISAM --max-connections=10
プロフィール設定
[mysqld]
デフォルトのストレージエンジン = MyISAM
最大接続数 = 10
......

知らせ:
スタートアップ オプションの場合、スタートアップ オプション名が複数の単語で構成されている場合は、単語をハイフン - またはアンダースコア _ で接続できますが、対応するシステム変数の単語はアンダースコア _ で接続する必要があります (つまり、show で表示する場合、または set で設定する場合)。

サーバープログラムの実行中に設定

システム変数の優れた点は、ほとんどのシステム変数では、サーバーを停止して再起動することなく、サーバーの実行中にその値を動的に変更できることです。

ただし、システム変数にはグローバル スコープと現在のセッション スコープがあります。

範囲

GLOBAL: サーバーの全体的な操作に影響するグローバル変数。
SESSION: クライアント接続の操作に影響するセッション変数。 (別名: LOCAL)
形式:
1. SET [GLOBAL|SESSION] システム変数名 = 値;
2. SET [@@(GLOBAL|SESSION).]var_name = XXX;
グローバル
例えば:
1. GLOBAL default_storage_engine = InnoDB を設定します。
2. @@GLOBAL.default_storage_engine を InnoDB に設定します。
セッション
例えば:
1. SET SESSION default_storage_engine = InnoDB;
2. @@SESSION.default_storage_engine = InnoDB を設定します。
3. SET default_storage_engine = InnoDB; //デフォルトセッション
チェック
形式: SHOW [GLOBAL|SESSION] VARIABLES [LIKE 一致パターン];
1. 'default_storage_engine' のようなセッション変数を表示します。
2. 'default_storage_engine' のようなグローバル変数を表示します。
知らせ:
クライアントがGLOBALスコープ内のシステム変数の値を変更した場合、現在接続しているクライアントのSESSIONスコープ内のシステム変数の値には影響しませんが、後続のクライアントのSESSIONスコープ内のシステム変数の値にのみ影響します。
追加メモ
すべてのシステム変数に GLOBAL および SESSION スコープがあるわけではありません。

* 一部のシステム変数は、グローバルスコープのみを持ちます。たとえば、max_connectionsは、サーバープログラムが同時に接続できるクライアントプログラムの最大数を示します。
* 一部のシステム変数には、AUTO_INCREMENT 列を含むテーブルに挿入するときに列の初期値を示す insert_id など、SESSION スコープのみがあります。
* 一部のシステム変数には、先ほど使用したdefault_storage_engineのようにGLOBALとSESSIONの両方のスコープがあり、実際ほとんどのシステム変数は次のようになります。

一部のシステム変数は読み取り専用であり、設定できません。

たとえば、version は現在の MySQL バージョンを示します。クライアントはその値を設定できず、SHOW VARIABLES ステートメントでのみ表示できます。

起動オプションとシステム変数の関係
起動オプションは、プログラムの起動時にプログラマーが渡すパラメータであり、システム変数はサーバー プログラムの実行動作に影響を与える変数です。

* ほとんどのシステム変数は起動オプションとして渡すことができます
* auto_increment_offset、character_set_client など、一部のシステム変数はプログラム実行中に自動的に生成され、起動オプションとして設定することはできません。
* 一部の起動オプションはシステム変数ではありません。例えば、defaults-file

状態変数

サーバー プログラムの動作をよりよく理解できるように、MySQL サーバー プログラムは、プログラムの実行ステータスに関する多くの変数 (ステータス変数と呼ばれる) を保持しています。

たとえば、Threads_connected は現在サーバーに接続しているクライアントの数を示し、Handler_update は更新された行の数を示します。

ステータス変数はサーバープログラムの実行状態を表示するために使用されるため、その値はサーバープログラム自体によってのみ設定でき、私たちプログラマーが設定することはできません。

チェック

形式:
SHOW [GLOBAL|SESSION] STATUS [LIKE matched_pa​​ttern];
例えば:
'thread%' のようなステータスを表示します。

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL 共通関数の概要」、「MySQL ログ操作スキル」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキル」、および「MySQL データベース ロック関連スキルの概要」

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQL マルチインスタンス構成ソリューション
  • MySQLデータベース入門:マルチインスタンス構成方法の詳しい説明
  • MySQL 8.0 のインストールと設定のチュートリアル
  • MySQL5.7 シングルインスタンス自動起動サービスの設定プロセス

<<:  Alibaba Cloud Server の詳細な展開 (グラフィック チュートリアル)

>>:  Vueはプログレスバーの変更効果を実現します

推薦する

WeChat アプレット開発フォーム検証 WxValidate の使用

個人的には、WeChat アプレットの開発フレームワークは VUE と概ね似ていると感じていますが、...

Vue プロジェクトで axios をカプセル化する方法 (http リクエストの統合管理)

1. 要件Vue.js フレームワークを使用してフロントエンド プロジェクトを開発する場合、サーバ...

JavaScript の差異を利用して比較ツールを実装する

序文仕事では、毎週従業員が提出した資料を数える必要がありますが、それを一つずつコピーして貼り付けるの...

jQueryはシャトルボックス機能を実現する

この記事では、シャトルボックス機能を実現するためのjQueryの具体的なコードを参考までに紹介します...

MySQL 5.7.21 履歴データディレクトリからデータを復元するチュートリアルの解凍バージョン

状況の説明: データベースが異常に起動およびシャットダウンしたため、サービスを再度起動したときに「起...

MySQL でよく使用される SQL 文を表示する (詳細な説明)

#mysql -uroot -pパスワードを入力してくださいmysql> show full...

CSS 8 目を引く HOVER 効果のサンプル コード

1. エフェクトHTMLを送信する <div id="送信ボタン">...

JavaScript マクロタスクとマイクロタスクの実行順序についての簡単な説明

目次1. JavaScriptはシングルスレッドです1. 同期タスク2. 非同期タスク2. タスクキ...

Docker データ管理 (データ ボリュームとデータ ボリューム コンテナー) の詳細な説明

実稼働環境で Docker を使用する場合、多くの場合、データを複数のコンテナ間で永続化または共有す...

MySQLの日付加算と減算関数の詳細な説明

1. 追加時間()指定した秒数を日付に追加する select addtime(now(),1); -...

Dockerコンテナのホスト間マルチネットワークセグメント通信ソリューションの詳細説明

1. マックヴラン前回のブログ投稿で紹介した Docker コンテナのホスト間通信を実現するための ...

CSS の子要素の Z インデックスと親要素の兄弟ノードの階層問題を解決する

1. 問題の出現フラット リストを作成しました。リストの一部には、マウスをホバーすると表示されるポッ...

Vueウォッチの監視方法の概要

目次1. Vueにおけるwatchの役割はその名の通り、監視の役割です。 2. このオブジェクトのプ...

Vue.js と MJML でレスポンシブなメールを作成する

MJML は、開発者が美しく、応答性に優れ、あらゆるデバイスやメール クライアントで動作する魅力的な...

MySQL テーブルをコピーする 3 つの方法 (要約)

テーブル構造とそのデータをコピーする次のステートメントは、データを新しいテーブルにコピーします。注:...