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はプログレスバーの変更効果を実現します

推薦する

js Promise同時制御メソッド

目次質問背景アイデアと実装質問次のように、同時実行 Promise の数を制御するメソッドを記述する...

JavaScriptプロトタイプとプロトタイプチェーンを徹底的に理解する

目次序文基礎を築くプロトタイプコンストラクタのプロパティ__プロト__プロトタイプチェーン改善する要...

MySQL 実験: explain を使用してインデックスの傾向を分析する

概要インデックス作成は、MySQL で習得しなければならないスキルであり、MySQL クエリの効率を...

Vue-CLI マルチページディレクトリパッケージ化手順の記録

ページディレクトリ構造 デフォルトの HTML テンプレート ファイル public/index.h...

MySQLのSQL文はインデックスを使用しません

インデックス集約を使用しない MySQL クエリご存知のとおり、インデックスを追加することはクエリ速...

HTML で div を非表示にする テーブルを非表示にする TABLE または DIV コンテンツの CSS スタイル

今夜、数日間悩まされていた問題を解決しました。本当に解決したかどうかはわかりませんが、解決されている...

JavaScript スクリプトが実行されるタイミングの詳細な説明

JavaScript スクリプトは HTML 内のどこにでも埋め込むことができますが、いつ呼び出され...

Vueは物流タイムライン効果を実現します

この記事では、物流タイムライン効果を実現するためのVueの具体的なコードを例として紹介します。具体的...

MySQL 最適化チュートリアル: 大規模なページングクエリ

目次背景制限の最適化最適化方法1. カバーインデックスを使用する2. サブクエリの最適化3. 遅延連...

SecureCRT に基づくリモート Linux ホストへのファイルのアップロードとダウンロードのグラフィカルな手順

wget や curl ツールを使用して、Linux サーバーで大規模なネットワーク ファイルを直接...

CentOS の環境変数と設定ファイルの詳細な説明

序文CentOS 環境変数設定ファイル システムは階層型システムであり、他のマルチユーザー アプリケ...

ネイティブ JS オブジェクト指向タイピング ゲーム

この記事では、JSオブジェクト指向タイピングゲームの具体的なコードを参考までに紹介します。具体的な内...

ES6スプレッド演算子の使用例

目次スプレッド演算子とレスト演算子とは何ですか?配列スプレッド演算子残り演算子(コレクション関数)ス...

Vuex環境の詳細な説明

目次Vuex環境を構築する要約するVuex環境を構築するsrcディレクトリにフォルダstoreを作成...