MySQL設定ファイルの基本、アップグレード

Web開発プロジェクトでMySQLを扱う際、設定ファイルの構造を理解しておくとトラブルシューティングがスムーズになります。

目次

メインの設定ファイル

MySQLの設定はmy.cnf(Linux/Mac)またはmy.ini(Windows)で管理されます。これがメインの設定ファイルです。

追加で/etc/my.cnf.d/ディレクトリに個別の設定ファイルを配置することもできます。これにより設定を分割して管理しやすくなります。

インストール後の構成

MySQLをインストールすると、既存のディレクトリ内にMySQLのファイルが追加される形です。

Linux系

/
┣ etc/
┃ ┣ my.cnf (メイン設定ファイル)
┃ ┗ my.cnf.d/ (追加設定ファイル用ディレクトリ)
┃   ┗ custom.cnf
┣ var/
┃ ┣ lib/
┃ ┃ ┗ mysql/ (データディレクトリ)
┃ ┃   ┣ ibdata1 (InnoDBシステムテーブルスペース)
┃ ┃   ┣ mysql/ (システムデータベース)
┃ ┃   ┣ your_database/ (作成したデータベース)
┃ ┃   ┗ ib_logfile0, ib_logfile1 (トランザクションログ)
┃ ┗ log/
┃   ┗ mysqld.log (エラーログ)
┗ usr/
  ┗ bin/
    ┣ mysql (クライアント)
    ┗ mysqld (サーバー本体)
項目カテゴリ名前主なパス概要
データベースシステムinformation_schema/var/lib/mysql/information_schema/ (論理的)データベースやテーブルの定義情報を格納する標準的なスキーマ。
データベースシステムmysql/var/lib/mysql/mysql/ユーザー権限、パスワード、設定など、サーバーのコア動作情報を格納。
データベースシステムperformance_schema/var/lib/mysql/performance_schema/サーバーのパフォーマンス測定や実行時情報を格納。
データベースシステムsys/var/lib/mysql/sys/performance_schema の情報を扱いやすくしたビューや関数を提供。
システムファイルデータibdata1/var/lib/mysql/ibdata1InnoDBストレージエンジン全体の共有テーブルスペースファイル。
システムファイル接続mysql.sock/var/lib/mysql/mysql.sock (または /tmp/mysql.sock など)ローカル接続時に使用されるUnixソケットファイル。
システムファイルログbinlog.00000X/var/lib/mysql/binlog.000001 などデータベースの変更履歴(バイナリログ)を記録するファイル。
システムファイル設定auto.cnf/var/lib/mysql/auto.cnfサーバーのユニークID(UUID)が格納されているファイル。

Windows系

C:\Program Files\MySQL\MySQL Server 8.0\
┣ bin\ (実行ファイル)
┣ data\ (データディレクトリ)
┗ my.ini (設定ファイル)

設定ファイルの読み込み順序

複数の設定ファイルがある場合、後から読み込まれた設定が優先されます。どの順序で読み込まれるかは以下のコマンドで確認できます。

mysql --help --verbose | grep my.cnf

設定ファイルのセクション

設定ファイルは用途別にセクションで分かれています。主なセクションは以下の通りです。

  • [mysqld] – MySQLサーバーの設定
  • [client] – クライアント全般の設定
  • [mysql] – mysqlコマンドラインツールの設定

エラーログの確認

トラブル時にはエラーログを確認しましょう。デフォルトでは/var/log/mysqld.logなどに保存されています。

MySQLバージョンアップ

8    .    0    .    33
↑         ↑         ↑
メジャー  マイナー  パッチ
(Major)  (Minor)  (Patch)

パッチバージョンアップ(8.0.33 → 8.0.40)

パッチバージョンは後方互換性が高いですが、

リリースノートを確認
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-40.html

mysqldumpでバックアップ

mysqldump: [Warning] Using a password on the command line interface can be insecure.
bash-4.4# ls
backup_20251207.sql  boot  docker-entrypoint-initdb.d  etc   lib    media  opt   root  sbin  sys  usr
bin                  dev   entrypoint.sh               home  lib64  mnt    proc  run   srv   tmp  var
bash-4.4#
./vendor/bin/sail down
./vendor/bin/sail build --no-cache mysql
./vendor/bin/sail build up -d
セクション内容
C API Notes
C言語のAPIに関する変更。アプリケーション開発者向け。通常は無視してOK。
非同期インターフェースが安全でない静的ローカル変数を使用していた問題を修正
Compilation Notes
MySQLをソースからビルドする際の変更。使用ライブラリのバージョンアップ等。Dockerイメージ使用なら無視してOK。
・Fedora 41、Ubuntu 24.10でコンパイルできない問題を修正
・curl 8.9.1へアップグレード
・zlib 1.3.1へアップグレード
・lz4 1.10.0へアップグレード
・libfido 1.15.0へアップグレード
SQL Function and Operator Notes
SQL関数や演算子の変更・修正。例: DATABASE(), AES_ENCRYPT()等。使っている関数があれば確認必要。
DATABASE()関数がUNIONクエリ内で使用された際に出力が切り捨てられていた問題を修正
Performance Schema Notes
パフォーマンス監視機能の変更。ロック情報、クエリ統計等。パフォーマンス調査時に関係。
・data_locksとdata_lock_waitsテーブルのクエリパフォーマンスを改善
・SELECT * FROM sys.innodb_lock_waits; のパフォーマンスを改善
・DATA_LOCKSとDATA_LOCK_WAITSに主キーを追加
sys Schema Notes
sysスキーマ(パフォーマンス分析用のビュー)の改善。パフォーマンス分析時に関係。
innodb_lock_waitsビューのパフォーマンスを改善
Thread Pool Notes
スレッドプール(Enterprise版の機能)の変更。Community版使用なら無視してOK。
同時接続試行が正しく処理されない問題を修正
Functionality Added or Changed
新機能・変更された機能。必ず確認すべき。
重要: OpenSSLライブラリを3.0.15へ更新(セキュリティ修正)
mysqlクライアントに–system-commandオプションを追加
Bugs Fixed
修正されたバグ一覧。自分のアプリに影響ないか確認必要。
・InnoDBのJOINクエリのパフォーマンス問題を修正
・INSTANT algorithmでのDELETE/UPDATE時の予期しない停止を修正
・全文検索インデックスの最適化問題を修正
・パーティションテーブルのALTER TABLEの問題を修正
・Group Replicationのメモリリークを修正
・mysqldumpのSQL文エスケープ問題を修正
・AES_ENCRYPT()関数が正しい結果を返さない問題を修正
・CREATE TABLE … SELECT文の処理問題を修正
・外部キー付きCREATE TABLEの問題を修正

MySQLリリースノート

https://dev.mysql.com/doc/refman/8.0/ja

目次