8 . 0 . 33
↑ ↑ ↑
メジャー マイナー パッチ
(Major) (Minor) (Patch)
パッチバージョンアップ(8.0.40 → 8.4.6)ではどのリリースノートの確認すればいいか
8.0.40から8.4.6へのアップグレードについて、以下のリリースノートを確認します。
- MySQL 8.4 Release Notes(8.0から8.4の変更点)
※8.1、8.2、8.3の変更は8.4に統合済みのため個別確認不要 - 8.4.0から8.4.6までの各バージョンのリリースノート
For additional MySQL 8.4 documentation, see the MySQL 8.4 Reference Manual, which includes an overview of features added in MySQL 8.4 (What Is New in MySQL 8.4 since MySQL 8.0), and discussion of upgrade issues that you may encounter while upgrading.
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-40.html
リリースノートのセクションの説明
| セクション | 内容 |
|---|---|
| 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の問題を修正 |
8.4.0
Deprecation and Removal Notes
重要な変更 mysql_native_password
Important Change: The deprecated
mysql_native_passwordauthentication plugin is now disabled by default. It can be enabled by starting MySQL with the new--mysql-native-password=ONserver option, or by addingmysql_native_password=ONto the[mysqld]section of your MySQL configuration file.
パラメーターグループをパラメーターグループファミリーmysql8.4で作成し そのパラメーターグループでmysql_native_password on
AWS RDSのパラメーターグループとは
[mysqld]
max_connections = 100
innodb_buffer_pool_size = 1G
mysql_native_password = ON
character_set_server = utf8mb4
```
これをRDSではパラメータグループとして管理
```
パラメータグループの中身:
├─ max_connections: 100
├─ innodb_buffer_pool_size: 1073741824
├─ mysql_native_password: ON
└─ character_set_server: utf8mb4
- 1つのパラメータグループを複数のRDSインスタンスに紐付けることが可能
- 各インスタンスで再起動しない限り、静的パラメータは反映されません。
パーティショニング
- Partitioning: Silent omission of columns with index prefixes as part of a table’s partitioning key was deprecated in MySQL 8.0.21, and generated a warning. In this release, the use of any such columns in the proposed partitioning key is now expressly disallowed, and causes the
CREATE TABLEorALTER TABLEstatement in which it occurs to be rejected with an error.For more information, see Column index prefixes not supported for key partitioning, and KEY Partitioning. (WL #16054)References: See also: Bug #31100205.
「インデックスプレフィックスを持つカラムをパーティショニングキーとして使用すること」が禁止されました。
インデックスプレフィックスとは
カラムの一部分だけにインデックスを作成する機能。 特に長い文字列カラムでインデックスのサイズを小さくするために使われる。インデックス = データベースの検索を速くするための索引
パーティショニングキーとは
テーブルをパーティション(複数の物理的な部分)に分割する際の基準となるカラム。
Replication: Syntax for a number of features relating to MySQL Replication that was deprecated in previous versions of MySQL has now been removed. These features include aspects of SQL statement syntax as well as several system status variables in the MySQL server. These changes are detailed following.
SQL statements removed. The following SQL statements have been removed (replacements in brackets):
START SLAVE(START REPLICA);STOP SLAVE(STOP REPLICA);SHOW SLAVE STATUS(SHOW REPLICA STATUS);SHOW SLAVE HOSTS(SHOW REPLICAS);RESET SLAVE(RESET REPLICA);CHANGE MASTER TO(CHANGE REPLICATION SOURCE TO);RESET MASTER(RESET BINARY LOGS AND GTIDS);SHOW MASTER STATUS(SHOW BINARY LOG STATUS);PURGE MASTER LOGS(PURGE BINARY LOGS); andSHOW MASTER LOGS(SHOW BINARY LOGS).The statements just listed have also been removed from all MySQL test programs and files, and elsewhere, where used internally.
Statement options removed. The following options formerly supported by
CHANGE REPLICATION SOURCE TOandSTART REPLICAhave been removed and are no longer accepted by the server. They are listed here for each of these statements, with their replacements in brackets:
レプリケーション関連の旧構文が完全に削除されています。
以前のバージョンのMySQLでサポートされていた多くのサーバーオプションと変数は、このリリースで削除されました。MySQL 8.4でこれらを設定しようとするとエラーが発生します。これらのオプションと変数は以下のとおりです。
弱い暗号化方式のサポートが削除されました。つまり、暗号化接続を設定する際に、MySQLでは以下の条件を満たさない暗号化方式を指定できなくなりました。
MySQLでは、非一意キーや部分キーを外部キーとして使用することは非推奨です。このリリース以降、このような非標準キーは、以下のいずれかの方法で明示的に有効にする必要があります。
グループレプリケーションの設定変更について
- グループ レプリケーション: システム
group_replication_allow_local_lower_version_join変数は非推奨となり、設定すると警告 (ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT) が発生します。この変数はMySQLの将来のバージョンで削除される予定です。互換性のないメンバーをグループに参加させる理由がなくなったため、この機能の代替機能は予定されていません。(WL #16018)
グループレプリケーションを使用していなければ影響なし
グループレプリケーションとは
複数のMySQLサーバーを自動的に同期させる機能です。
下記で確認できます。
SELECT * FROM performance_schema.replication_group_members;
削除されたサーバーオプションと変数
以前のバージョンで非推奨だった設定項目が、MySQL 8.4で完全に削除されました。これらを設定するとエラーになります。
レプリケーション関連
binlog_transaction_dependency_tracking→ 削除(機能は自動的に適用される)group_replication_recovery_complete_at→ 削除(最も安全な動作がデフォルトに)
古い時刻型関連
avoid_temporal_upgrade、show_old_temporals→ 削除(すでに効果なし)
アップグレード関連
--no-dd-upgrade→--upgrade=NONEを使用
古いオプション
--old、--new、--language→ 削除
SSL/TLS関連
--ssl、--skip-ssl、have_sslなど →--tls-versionを使用
認証関連
default_authentication_plugin→authentication_policyを使用
対応が必要かの確認方法
SHOW VARIABLES LIKE '%binlog_transaction_dependency%';
SHOW VARIABLES LIKE '%group_replication_recovery%';
SHOW VARIABLES LIKE '%avoid_temporal_upgrade%';
SHOW VARIABLES LIKE '%show_old_temporals%';
SHOW VARIABLES LIKE '%authentication_plugin%';
SHOW VARIABLES LIKE '%ssl%';
RDSではパラメータグループで確認
variablesとは
MySQLサーバーの**設定値(システム変数)**のことです。
EXPLAIN出力の改善
EXPLAIN コマンドの出力で、テーブルにエイリアス(別名)を付けた場合、不要なスキーマ名(データベース名)が表示されなくなりました。
対応は不要
INFORMATION_SCHEMA.TABLESPACES の削除
INFORMATION_SCHEMA.TABLESPACES テーブルが削除されました。
下記で確認
SELECT * FROM INFORMATION_SCHEMA.TABLESPACES;
LOCK TABLES での LOW_PRIORITY 削除
LOCK TABLES ... WRITE で使われていた LOW_PRIORITY オプションが削除されました。
FLOAT/DOUBLE での AUTO_INCREMENT 削除(重要)
FLOAT や DOUBLE 型のカラムに AUTO_INCREMENT を使用できなくなりました。
通常は整数型(INT、BIGINT)で使うため、一般的な使い方では影響なさそうです
AUTO_INCREMENT とは
新しいレコードを挿入する際に、自動的に連番を割り当てる機能です。
8.4.2
8.4.3
8.4.4
8.4.5
8.4.6
この2つを組み合わせると、データの整合性やパフォーマンスに問題が起きる可能性があったため、MySQLが明示的に禁止した。
確認
パーティション化されたテーブルで、パーティショニングキーになっているカラムにプレフィックス付きのインデックスが設定されていないか確認する。
バージョンアップ後のテスト
テスト仕様書の作成・起票
「簡易動作確認(CRUD)」を手動で実施した内容を、正式なドキュメントとして整備する作業です。
(例)
| No | テスト項目 | 確認手順 | 期待結果 | 実施日 | 結果 | エビデンス |
|---|---|---|---|---|---|---|
| 1 | 物件データ登録 | Tinkerで新規作成 | 正常登録 | 12/11 | OK | screenshot_01.png |
| 2 | 物件データ取得 | API経由で取得 | データ取得成功 | 12/11 | OK | log_02.txt |
| No | 機能 | 操作 | 確認内容 | エビデンス |
|---|---|---|---|---|
| 1 | 物件登録 | 登録画面から登録 | DB登録確認 | 画面キャプチャ + phpMyAdmin画面 |
| 2 | 物件一覧 | 一覧表示 | データ表示確認 | 画面キャプチャ |
| 3 | 物件編集 | 編集して保存 | DB更新確認 | 画面キャプチャ + phpMyAdmin画面 |
| 4 | 物件削除 | 削除実行 | DB削除確認 | phpMyAdmin画面 |
エビデンス取得
テスト実施の証跡を残す作業です。
エビデンスの例
- スクリーンショット(画面表示結果)
- ログファイル(SQL実行ログ、エラーログ)
- APIレスポンス(JSON出力)
- DBのデータ確認結果(SELECT結果)
リリースノートに準拠した影響調査
MySQLの公式リリースノートを確認し、システムに影響がある変更を洗い出す作業です。
調査項目の例
- 非推奨になった関数・構文 → 使っていないか確認
- デフォルト値の変更 → 既存動作に影響ないか確認
- パフォーマンス変更 → 遅くなる可能性のあるクエリの特定
- 新機能 → 活用できるものがあるか検討
成果物イメージ
| リリースノート項目 | 影響有無 | 影響箇所 | 対応要否 |
|---|---|---|---|
| utf8mb4がデフォルトに変更 | なし | – | 不要 |
| GROUP BY の動作変更 | あり | 物件検索API | 要修正 |
アクション
- MySQL 8.4のリリースノートを確認
- 8.0 → 8.4の非互換性リストを確認
- Deprecated Features
- Removed Features
- 御社システムで使用しているSQL構文を洗い出し
- Laravelのマイグレーションファイル
- 生SQLを使っている箇所
- ストアドプロシージャ
参考
https://github.com/idw-coder/mysql-upgrade/tree/main
リリースノート
https://dev.mysql.com/doc/refman/8.0/ja
リリースノートPDF
https://docs.oracle.com/cd/E17952_01/mysql-8.0-relnotes-en/mysql-8.0-relnotes-en.pdf