コンテンツに移動
データベース

Cloud SQL のインプレース メジャー バージョン アップグレードでデータベースのアップグレードが簡単に

2024年1月23日
Google Cloud Japan Team

※この投稿は米国時間 2024 年 1 月 13 日に、Google Cloud blog に投稿されたものの抄訳です。

Google のフルマネージド リレーショナル データベース サービスである Cloud SQL の使用は、データベースの運用を合理化してイノベーションに集中できる優れた方法です。Cloud SQL が複雑なデータベース管理を担い、スケーラビリティと可用性に優れた堅牢で安全なリレーショナル データベース プラットフォームを提供すると同時に、管理タスクを簡素化し、運用費用を削減します。

オープンなフルマネージド データベース サービスである Cloud SQL では、データベース エンジンの複数のバージョンがサポートされており、ニーズに最適なバージョンの MySQL、PostgreSQL、Microsoft SQL Server を選択できます。Cloud SQL は旧バージョンのデータベース エンジンを維持するためにこのような柔軟性を提供していますが、最新リリースを使用して最新の状態に保つことには大きな利点があります。新しいバージョンでは、パフォーマンスの強化、セキュリティのアップグレード、機能セットの拡張が行われていることが多く、アプリケーションの最適化やデータの保護が可能になります。Cloud SQL の利点を最大限に活用し、アプリケーションの長期的な安定性とセキュリティを確保するには、サポートが終了(EOL)したバージョンのデータベース エンジンから移行することが不可欠です。

このブログ投稿では、Cloud SQL のインプレース メジャー バージョン アップグレード機能を利用して、新しいバージョンの MySQL および PostgreSQL に移行する主な利点とベスト プラクティスについて説明します。また、プライマリ インスタンスとレプリカ インスタンスでメジャー バージョン アップグレードを正常に完了するための戦略についても説明します。

Cloud SQL のインプレース メジャー バージョン アップグレード機能とは

Cloud SQL のインプレース メジャー バージョン アップグレード機能とは、Cloud SQL プラットフォーム内で MySQL または PostgreSQL データベース インスタンスを新しいメジャー バージョンに直接アップグレード(インプレース アップグレード)できるようにする組み込みの機能です。これを使用すると、手動でのデータ移行や複雑な構成変更が不要になり、それに伴う長時間のダウンタイムも発生しません。さらに、このアプローチの最大の利点の一つは、アップグレード後も現在のインスタンスの名前、IP アドレス、その他の設定を保持できることです。

メジャー バージョン アップグレードを徹底的に計画してテストすることをおすすめします。テストする戦略の一つは、現在のプライマリ インスタンスのクローンを作成し、クローン上でメジャー バージョン アップグレードを行うことです。これにより、問題を事前に解決し、自信を持って本番環境のアップグレードを行うことができます。

Cloud SQL のメジャー バージョン アップグレード機能は、MySQL と PostgreSQL で若干異なります。詳しくは、以降のそれぞれのセクションをご覧ください。

Cloud SQL for MySQL

MySQL コミュニティ バージョン 5.7 は、2023 年 10 月にサポートが終了しました。まだ MySQL 5.6 または 5.7 を実行している場合は、MySQL 8.0 にアップグレードすることをおすすめします。この新しいバージョンは次世代のクエリ機能を備え、パフォーマンスの向上、セキュリティの強化が行われています。次に例をご紹介します。

  • MySQL 8.0 のインスタント DDL は、同時 DML 変更を可能にしながら、テーブル変更を大幅に高速化します。
  • InnoDB は、読み書き、IO バウンド、競合率の高いシナリオなど、さまざまなワークロードに合わせて最適化されています。
  • SKIP LOCKED オプションと NOWAIT オプションによって、ロック待機を防止できます。
  • ウィンドウ関数でクエリロジックが簡素化され、また CTE では再利用可能な一時結果セットを使用できます。
  • MySQL 8.0 では JSON 機能が強化され、堅牢なセキュリティ機能が追加されています。
  • レプリケーションのパフォーマンスが大幅に向上しており、データの同期が高速化されます。並列レプリケーションはデフォルトで有効になっています。
  • 降順インデックスや不可視インデックスなどの新機能により、さらにパフォーマンスが向上します。

詳細については、こちらをクリックしてください。

MySQL 8.0 にアップグレードするにはどうすればよいですか?

Cloud SQL のメジャー バージョン アップグレード機能を利用して 8.0 にアップグレードできます。事前チェックはすでにワークフローに組み込まれていますが、個別に行うオプションも用意されています。MySQL シェルで Upgrade Checker Utility を使用して事前チェックを行うことができます。アップグレードする前に、現在のプライマリ / レプリカ トポロジを確認し、それに応じて計画を立ててください。

メジャー バージョン アップグレードを使用したアップグレード: プライマリ インスタンスにリードレプリカがない場合は、Cloud SQL のメジャー バージョン アップグレード機能を使用してインスタンスをインプレースでアップグレードできます。MySQL では、下位メジャー バージョンから上位メジャー バージョンへのレプリケーションが可能です。リードレプリカがある場合は、リードレプリカをアップグレードしてからプライマリ インスタンスをアップグレードできるため、この方法が役立ちます。

下の図は、メジャー バージョン アップグレードの段階を示したものです。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_Cloud_SQL_Major_Version_upgrade.max-1400x1400.png

: このシナリオでは、IP アドレスは維持されます。

カスケード レプリカを使用したアップグレード: 以下のシナリオでは、メジャー バージョン アップグレードでカスケード レプリカを利用できます。この方法では、以下のことが可能です。

  • トポロジ全体をそのままにして古いプライマリにフォールバックする
  • 現在のデプロイに加えて、新しいゾーンまたは新しいリージョンに新しいスタック全体をセットアップする

たとえば、パートナー マーケティング プラットフォームを作成している Google Cloud のお客様、Everflow は、カスケード レプリカとインプレース メジャー バージョン アップグレードを活用して、ユーザーのダウンタイムや中断を最小限に抑えながら、MySQL 8.0 にスムーズにアップグレードしました。

カスケード レプリカを使用してメジャー バージョン アップグレードを行うには、図を参考に以下の手順を行ってください。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_Cloud_SQL_Major_Version_upgrade.max-1500x1500.png
  1. 現在の 5.7 プライマリ インスタンスから新しいまたは既存のゾーン / リージョンへのリードレプリカを作成します。
  2. メジャー バージョン アップグレード機能を使用して、レプリカを 8.0 にアップグレードします。
  3. レプリケーションを有効にし、新しい 8.0 リードレプリカの下に必要に応じてレプリカを作成します。
  4. ダウンタイムを最小限に抑えるために、IP アドレスの変更に備えてアプリケーションを準備します。
  5. 新しいマスターに切り替えるために、トラフィックをルーティングし、アプリケーションを準備します。Cloud Load Balancing を使用すると、これを効率的に行えます。

注: これを移行期間とみなして、バージョンの不一致が生じる時間を短くするようにしてください。

  1. 準備ができたら、8.0 リードレプリカをプロモートします。
  2. 古いプライマリ MySQL 5.7 インスタンスを削除します。

注: 前述したように、上述のプロセスではアプリケーションの IP アドレスを変更する必要があります。理想的には、カットオーバー実行時の中断を最小限に抑えるために、IP アドレスを変更してから新しいリードレプリカをプロモートすることをおすすめします。

Cloud SQL for PostgreSQL

PostgreSQL はメジャー バージョンを毎年更新しており、5 年間のサポート期間を設けています。PostgreSQL 11 は 2023 年 11 月にサポートが終了しました。PostgreSQL 12 または 13 にアップグレードすることもできますが、PostgreSQL のサポート終了ポリシーを考慮して、PostgreSQL 14 以降のバージョンにアップグレードすることをおすすめします。PostgreSQL 14 以降のバージョンでは、大きなメリットをもたらす数々の新機能や拡張機能が導入されています。以下に、そのいくつかをご紹介します。

  • GROUP BY および JOIN オペレーションの並列クエリ実行、VACUUM および REINDEX オペレーションの高速化などのパフォーマンスの向上。
  • フィルタリング、行レベルの再生、複数の宛先へのレプリケーションのサポートにより論理レプリケーションが強化され、より柔軟かつスケーラブルにさまざまなユースケースに対応。
  • セキュリティの強化と、JSON 機能の改善やテーブル パーティショニングの強化などの高度な機能。

詳細については、こちらをクリックしてください。

PostgreSQL 14 以降へのアップグレードに関する考慮事項と戦略

データベースが古いバージョンの場合は、新しいバージョンにアップグレードすることをおすすめします。これを行うには、さまざまな手法を使用できます。PostgreSQL はバージョン間のレプリケーションをサポートしていないため、インスタンスをリードレプリカにレプリケーションしながらプライマリ インスタンスをアップグレードすることはできません。また、プライマリ インスタンスをアップグレードする前にリードレプリカをアップグレードするのは現実的でない場合があります。そのため、アップグレード フローの最初に、プライマリ インスタンスのアップグレードを行います。続行する前に、既存のレプリカのレプリケーションを無効にしておく必要があります。プライマリ インスタンスのアップグレード後、リードレプリカを 1 つずつアップグレードしてから、レプリケーションを再度有効にできます。あるいは、リードレプリカを削除し、プライマリ インスタンスのアップグレード後に再作成することもできます。

MVU によるアップグレード: PostgreSQL の新しいバージョン(14.0 以降)にアップグレードするには、Cloud SQL のメジャー バージョン アップグレード機能を利用することをおすすめします。インプレース アップグレードでは、アップグレード後も現在のインスタンスの名前、IP アドレス、その他の設定を保持できます。Cloud SQL for PostgreSQL のインプレース アップグレード オペレーションは、pg_upgrade ユーティリティを使用します。続行する前に、必ず最初にベータ環境またはステージング環境でアップグレードをテストするか、前述したようにインスタンスのクローンを作成してください。Cloud SQL for PostgreSQL のメジャー バージョン アップグレードは、ユーザーに代わって事前検証手順とバックアップを行います。

Enterprise Plus で可用性とコスト パフォーマンスの向上を実現

MySQL 8.0 または PostgreSQL 14 以降にアップグレードすることで、高度な機能を備えた Cloud SQL Enterprise Plus エディションへの迅速なインプレース アップグレードを行えるようになります。Cloud SQL Enterprise Plus エディションでは、以下が実現されます。

  • 99.99% の可用性 SLA(メンテナンスを含む)
  • 計画的なメンテナンスによるほぼゼロのダウンタイムでインスタンスのダウンタイムが 10 秒未満
  • 大規模で最適なパフォーマンスを実現する、オプションのデータ キャッシュと高速なハードウェアによる最大 3 倍高速なスループット
  • 最大 128 個の vCPU と 864 GB のメモリを備えた大規模なマシン構成のサポート(Enterprise エディションでは 96 個の vCPU と 624 GB のメモリ)
  • 最大 35 日のポイントインタイム リカバリ(PITR)のサポート(Enterprise エディションでは 7 日)

Cloud SQL Enterprise Plus エディションへのインプレース アップグレードにかかる時間はわずか数分で、ダウンタイムは 60 秒未満です。詳細については、こちらをクリックしてください。

最後に

アップグレードが有用である理由を再確認しましょう。アップグレードは、データベース インフラストラクチャのセキュリティ、パフォーマンス、機能への投資です。最新の進歩を取り入れることで、データを保護し、アプリケーションを最適化し、組織を強化できます。Cloud SQL のインプレース メジャー バージョン アップグレード機能を使用すれば、データベースを合理的かつ効率的にアップグレードして、最新バージョンにスムーズに移行できます。開始するには、こちらをクリックしてください。

ー カスタマー エンジニア / データベース スペシャリスト Neha Bhatnagar

投稿先