MySQL 8.
本記事では、MySQL 8.
バージョン8.4で削除された構文
MySQL 8.
MySQL 8.
以下は、バージョン8.SHOW SLAVE STATUS
を実行した際のエラーメッセージの例です。
削除された構文とその代替
以下の表は、削除された構文とその代替となる構文を示しています。
削除された構文 | バージョン8. |
---|---|
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 |
SHOW MASTER LOGS | SHOW BINARY LOGS |
オプション名の変更
また、CHANGE MASTER TO
で使用されていた各種オプション名も変更されています。以下に代表的な変更を示します。
バージョン8. |
バージョン8. |
---|---|
MASTER_ |
SOURCE_ |
MASTER_ |
SOURCE_ |
MASTER_ |
SOURCE_ |
MASTER_ |
SOURCE_ |
MASTER_ |
SOURCE_ |
MASTER_ |
SOURCE_ |
MASTER_ |
SOURCE_ |
構文が削除された背景
これらの構文が置き換わった背景には、以下の理由があります。
MySQLのレプリケーションでは長年
また、MySQL非同期レプリケーションは変更ストリームを扱う技術であり、レプリケーション構成では
詳細については、MySQL Terminology Updatesをご確認ください。
対応方法の検討
MySQL 8.SHOW SLAVE STATUS
を例に解説します。
MySQLコメントを利用する
第54回 SQLコメントを使ってみようで説明されている通り、MySQLではコメント文にバージョン番号を記載することで、特定のバージョン以降でのみコマンドを実行する制御が可能です。
たとえば、MySQL 8.SHOW REPLICA STATUS
を実行するには、以下のように記述します。
mysql> /*!80400 SHOW REPLICA STATUS */;
ただしこの方法では、8.SHOW REPLICA STATUS
を使用し、8.SHOW SLAVE STATUS
を使用するような細かい切り替えはできません。この場合は、他の方法を検討する必要があります。
prometheus/mysqld_exporterの場合
監視ツールとして有名なprometheus/
- 最初に
SHOW SLAVE STATUS
を実行。 - エラーが返された場合、
SHOW REPLICA STATUS
を実行。
具体的なコードは以下のプルリクエストで確認できます。
この方法により、バージョン8.
Percona Toolkitの場合
Percona Toolkitは、バージョン3.
- すべてのSHOW SLAVE STATUSを
SHOW ${replica_
という変数に置き換え。name} STATUS - バージョンが8.
1以上であれば ${replica_
にreplicaを代入。name} - それ以前のバージョンでは
${replica_
にslaveを代入。name}
具体的なコードは以下のコミットで確認できます。
PT-2340 - Support MySQL 8.
4 -percona-toolkit@5cc999ca -GitHub [PT-2340] Support MySQL 8.
4 -Percona Toolkit -perconadev. atlassian. net
まとめ
今回は、MySQL 8.SHOW SLAVE STATUS
のようにレプリケーション関連の構文がSHOW REPLICA STATUS
に置き換わるなど、Master/
バージョンアップを検討する際は、現在使用しているツールやスクリプトを確認し、必要に応じて修正や移行計画を立てることが重要です。また、今後のMySQLの変更にも対応できるよう、公式ドキュメントやツールの更新情報を定期的にチェックすることをお勧めします。
より詳細について知りたい場合は、公式ドキュメントの リリースノートの