1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MySQLの設定周りを整理

Last updated at Posted at 2022-07-10

はじめに

MySQLの設定周りについて整理してみました。

MySQLの設定について

変数

MySQLには、システム変数とステータス変数の2種類があります。

システム変数

操作を構成する多くのシステム変数を保持しています。
各システム変数にはデフォルト値があり、コマンド行のオプションを使用するか、オプションファイルでサーバー起動時に設定できます。
SETステートメントを使っても変更でき、サーバーを停止・再起動が不要です。

また、システム変数にはグローバル変数とセッション変数の2種類があります。
変数によっては、グローバルとセッションで両方を持つことができるものもあります。

グローバル変数

グローバル変数はサーバー全体の操作に影響します。
グローバル変数にはデフォルト値があり、すべてのグローバル変数はサーバーの起動時にデフォルト値に初期化されます。

セッション変数

セッション変数は、個々のクライアント接続の操作に影響します。
クライアントとの接続時に、対応するグローバル変数の現在の値で初期化されます。

使用できるオプション・システム変数を一覧

$ mysqld --verbose --help

使用されているシステム変数を一覧

mysql> SHOW VARIABLES;

ステータス変数

操作に関する情報となる多くのステータス変数を保持しています。
統計情報など、サーバの状況を示す変数。

サーバーステータス変数を一覧

mysql> SHOW STATUS;

オプションファイル

MySQLでは、設定ファイルをオプションファイルと呼びます。

オプションファイルの種類

/etc/my.cnf

グローバルオプションファイル

/etc/mysql/my.cnf

グローバルオプションファイル

SYSCONFDIR/my.cnf

グローバルオプションファイル
「SYSCONFDIR」はコンパイル時にcmakeのオプションの「-DSYSCONFDIR」で指定します。
デフォルトではetc。

$MYSQL_HOME/my.cnf

サーバ専用のオプションファイル

$MYSQL_HOMEは、ユーザが指定する環境変数です。
$MYSQL_HOMEを設定していない場合、mysqld_safeでMySQLを起動していればインストールディレクトリを設定します。

defaults-extra-file

--defaults-extra-fileで指定して使用するオプションファイル。
グローバルオプションファイルの後に読み取ります。
※Unixの場合はユーザーオプションファイルの前、すべてのプラットフォームの場合はログインパスファイルの前に読み取ります

~/my.cnf

ユーザー固有のオプションファイル

~/.mylogin.cnf

認証情報を保存するファイル。
設定するとログインパスを指定するだけでMySQLにログインできるようになります。

暗号化されたファイルでmysql_config_editorユーティリティを使用して作成します。

DATADIR/mysqld-auto.cnf

SET PERSIST、またはSE PERSIST_ONLYで永続化されたシステム変数を設定するJSON形式のファイル。
そのため、手動で修正しない。

使用例
mysql> SET PERSIST max_connections=200;

オプションファイルの書き方

設定対象のプログラムを示すグループごとにオプションを列挙していく。
手動で設定しない.mylogin.cnf、mysqld-auto.cnfは対象外

オプションを指定する構文

オプションを指定する構文は、コマンドで指定する際と同様ですが、
先頭の2つのダッシュを省略し、1行で1つのオプションのみを指定します。

例えば

$ mysql --quick --host=localhost

とあれば、

quick
host=localhost

となります。

また、--loose-opt-nameといったプリフィクス形式の場合も

loose-opt-name

となります

スペース

= 文字の周囲にスペースを置くことができます。これはコマンド行ではできません。 オプションで、値を一重引用符または二重引用符で囲むことができます。

グループ

[group]

上記のように括弧で囲んで記述します。
groupにはオプションを設定するプログラム、またはグループ名を指定します。

コメント

オプションファイルのコメントは「#」「;」で記載します。
「#」であれば、行の途中からでも指定できます。

; コメント1
# コメント2
host=localhost # コメント3

インクルード

以下のように別のオプションファイルを指定することで対象のファイルをインクルードすることが出来ます。

!include /home/mydir/myopt.cnf

また、指定したディレクトリからオプションファイルを読み取るようにすることも出来ます。

!includedir /home/mydir

良く使うオプション

datadir

MySQLがデータを格納するディレクトリ

tmpdir

テンポラリファイルやテンポラリテーブルを作成するためのディレクトリ

port

MySQLが使用するポート番号

socket

MySQLが使用するUNIXドメインソケット

max_connections

最大接続数

max_allowed_packet

クライアントとの通信できるパケットの最大サイズ。
BLOBやTEXTのサイズやSQL文の最大長に合わせる。

character_set_server

サーバが利用するデフォルトの文字コード

lower_case_table_names

テーブル名がケース・センシティブか決めるオプション
※ケース・センシティブ:大文字・小文字の区別をすること

注意

リソースの競合

MySQLサーバは、1つのホストで複数のインスタンスを実行できます。
そのため、オプションによってはリソースが競合しないようにする必要があります。
・datadir
・socket
・port
など。

※各インスタンスは、それぞれでシステムリソース(CPU、メモリ、ディスク)を消費するため、
 リソースの割り当て過ぎにも注意。

参考文献

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?