現在のMySQLのリリースモデルは、LTS
今回は新しいMySQLのリリースモデルのアップグレードパスと、レプリケーションを用いたダウングレード方法について紹介したいと思います。
アップグレードパス
MySQLではいくつかのアップグレード方法を提供しています。それぞれの方法の説明と、対応しているアップグレードパスを紹介します。
- インプレースアップグレード
- 論理的アップグレード
- レプリケーション
- MySQLクローンプラグイン
また、アップグレードパスには以下があります。
- LTSから同一LTS内へのアップグレード
- LTSから次のLTSへのアップグレード
- LTSから次のLTSよりも前のInnovation Releaseへのアップグレード
- Innovation Releaseから次のLTSへのアップグレード
- Innovation Releaseから次のLTSよりも前のInnovation Releaseへのアップグレード
以下のようなアップグレードパスはサポートされていません。
- LTSから2つ以上先のバージョンのLTSへのアップグレード
- LTSやInnovation Releaseから次のLTSより後のInnovation Releaseへのアップグレード
- MySQL 5.
7からLTSやInnovation Releaseへのアップグレード
MySQL 5.
LTSやInnovation Releaseからは、1つ先のバージョンのみサポートされています。バージョンを超えたアップグレードはサポートされていません。2つ先のバージョンへアップグレードするには、一度次のLTSへアップグレードした後に、希望する次のLTSまたはInnovation Releaseへアップグレードしなくてはいけません。
インプレースアップグレード
インプレースアップグレードは、古いMySQLをシャットダウンして、MySQLのバイナリを置き換え再起動することでアップグレードを行います。新しいバイナリで起動すると、データディクショナリテーブルなど自動でアップグレードされます。
また、MySQL 5.
論理的アップグレード
論理的アップグレードは、mysqldumpやmysqlshのダンプロードユーティリティを利用したアップグレード方式です。それらのツールからエクスポートを行い、新しいバージョンのMySQLへインポートします。詳しくはLogical Upgradeをご確認ください。これもすべてのアップグレードパスをサポートしています。
レプリケーション
レプリケーションでは、新しいバージョンのMySQLをアップグレード対象のMySQLのレプリカとして設定します。サービスをメンテナンスに入れるなどしてソースへの更新を停止させ、レプリカをソースへ変更することでアップグレードを行います。すべてのアップグレードパスをサポートしています。
MySQLクローンプラグイン
クローンプラグインを使用して、MySQLから別のMySQLへデータをクローニングすることでアップグレードします。このクローンプラグインは、MySQL 8.
この方法は以下のアップグレードパスのみサポートされています。
- LTSから同一LTS内へのアップグレード
レプリケーションを用いたダウングレード
MySQL 8.
現在のMySQLのリリースモデルでは同一LTS内、またはLTSから1つ前のLTSと、1つ前のLTS以降のInnovation Releaseへのレプリケーションは可能である、とMySQL公式ブログ に記載されています。ただし、これは前述したロールバック用途のみのサポートです。恒常的に運用することは推奨されていません。
また、新しいバージョンでサポートされたSQL構文などは古いレプリカではエラーになりますし、バイナリログ形式など大きな変更があるとエラーとなる可能性もあります。このようなケースがあるので、ロールバックのためのレプリケーションを検討する際は、そのバージョンのリリースノートやドキュメントをかならず確認し、事前検証を行ってから実施したほうがよいでしょう。
まとめ
今回は、新しいMySQLのリリースモデルのアップグレードパスと、レプリケーションを用いたダウングレード方法について紹介しました。以下の公式ドキュメントを参考に作成したので、より詳細を確認したい方はご参照ください。