0
0

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 3 years have passed since last update.

MySQLの設定と機能を浅く狭く理解する

Last updated at Posted at 2020-05-03

はじめに

MySQLの設定を機能を踏まえてふんわり理解できればなと思います

メモリ

サーバ自体にも利用される重要な項目ですね。すごくざっくり分けると以下に分類されるかなと思います。

  • クライアント接続処理のサイズ (スレッドバッファサイズ)
  • サーバで利用されるデータキャッシュのサイズ (グローバルバッファサイズ)

ストレージエンジンにもよりますが、こんな感じで設定します。

innodb_buffer_pool_size=xxxM
read_buffer_size=xxM
read_rnd_buffer_size=xxM
sort_buffer_size=xxM
query_cache_size=xxM
query_cache_limit=xxM
max_allowed_packet=xxM
join_buffer_size=xxM

このあたりは別途深くやっていきたいですね。。。(遠目)

文字コード

MySQLでは、サーバ全体、データベース、クライアントのように各所で細かく設定する事が可能です。設定には character_set_server=文字コード のように設定します。(この例ではMySQLサーバの文字コードを設定します)

MySQL(5.7の場合)は「latin1」という文字コードがデフォルトで設定されており、日本語を取り扱う事ができません。そのため日本語を含むデータを取り扱う場合は、「サーバ」および「クライアント」側の文字コードを変更する必要があります。最近だと「utf8mb4」になるかと思います。

照合順序

文字(データ)の比較とかに必要になります。文字コードには複数に照合順序(collation)が存在しています。下記に例を記載します。

説明 collation名 補足
大文字小文字を区別しない utf8mb4_general_ci 末尾が ci (case insensitive)
文字のバイナリ値で比較 utf8mb4_bin 末尾が bin
大文字小文字を区別する utf8mb4_bin utf8_mf4_general_csというものはない

ログ

MySQLのログには6つの種類があります。

種類 拡張子 デフォルト出力
エラーログ .err 有効
バイナリログ .bin.xxxxx 無効
一般クエリログ .log 無効
スロークエリログ .slow.log 無効
リレーログ host_name-relay-bin.xxxxx 有効?(操作不能?)
DDL(メタデータ)ログ ddl_log.log 有効(操作不能)

ファイル名は明示的にシステム変数で設定する事が可能ですが、指定しない場合は一部にホスト名が利用されます。
少しですが、それぞれ掘り下げていきたいと思います。

エラーログ

サーバ起動・停止といった読んで字の如くではありますが、エラーに関するログです。

バイナリログ

更新系の処理や処理に要した時間などのメタデータを記録しているログです。このログは下記の重要な役割にも利用されています。

  • レプリケーション
    • マスターサーバはバイナリログに格納されている情報をスレーブサーバに送信します。スレーブサーバはその情報をリレーログに書き出し、処理を実行。
  • データリカバリ操作

こんな感じで有効化します。

log_bin
binlog_format = 'STATEMENT' {'STATEMENT'|'ROW'|'MIXED'}

一般クエリログ

クライアントからの接続や解除時に受け取ったSQLステートメントを記録します(MySQLの実行内容を記録しているログ)。このログはバイナリログとは違い、実行されたSQLステートメントとログに格納されている順序が異なる場合があります。バイナリログは実行された後にロックリリース前に書き込むため順序が異なる事はありません

こんな感じで有効化します。

general_log=1 {0|1}
general_log_file=ファイルパス

スロークエリログ

実行に要した時間がシステム変数(long_query_time)秒を超えたSQLステートメントを記録しているログです。

slow_query_log=1 {0|1}
slow_query_log_file=ファイルパス
long_query_time=xx (デフォルト10s)

ここには記載していないですが、記録する・しないといった制御がもっと細かく設定する事ができます。

リレーログ

バイナリログのレプリケーションの項目で説明しているはず。。。。なので割愛(いつかどこかで深くやりたいなと思っています)

DDLログ

データ定義ステートメント(データベースに対して発行されたオブジェクトの作成や変更)によって生成されるメタデータを記録しているログです。

まとめ

「collationとか全く意識せずに適当に設定していたな・・・・・・・」

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?