データを移行してデータベースのメジャー バージョンをアップグレードする

ここでは、新しいバージョンの MySQL を実行しているインスタンスにデータを移行する方法を説明します。 このメソッドを続行する前に、データベースのメジャー バージョンのインプレース アップグレードを検討してください。

Cloud SQL for MySQL インスタンスのデータベースのメジャー バージョンをアップグレードする場合、データを移行する方法が 2 つあります。

  • オプション 1: Database Migration Service(DMS)を使用します。DMS では、Cloud SQL MySQL インスタンスからの移行がサポートされています。MySQL のバージョンをアップグレードすることもできます。
  • オプション 2: 現在のインスタンスからデータをエクスポートし、新しいバージョンのインスタンスを実行する MySQL にデータをインポートすることにより、MySQL のバージョン間でデータを移動します。このプロセスにはダウンタイムが伴います。エクスポートを始める前に、現在のインスタンスを読み取り専用モードにします。

このページでは、2 つ目のオプションについて説明します。

メジャー バージョン アップグレードの計画

  1. 対象のメジャー バージョンを選択します。

    Cloud SQL でサポートされているバージョンのリストをご覧ください。

  2. MySQL のバージョンごとに提供される機能を検討し、非互換性に対処します。

    新しいメジャー バージョンでは、互換性のない変更が導入され、データベース インスタンスをアップグレードする前に、アプリケーション コード、スキーマ、またはデータベース設定の変更が必要になる場合があります。対象メジャー バージョンのリリースノートを確認して、対処が必要な非互換性を特定します。メジャー バージョンをいくつかスキップする場合は、スキップする各バージョンの非互換性に対処します。

  3. MySQL 5.7 から 8.0 にアップグレードする場合は、MySQL 8.0 でユーザー権限の変更を確認します。

    Cloud SQL for MySQL バージョン 8.0 では、partial_revokes という新しいシステムフラグを使用します。このフラグはデフォルトで ON に設定されています。MySQL 5.7 とは異なり、このフラグを使用すると、データベースの GRANT コマンドでワイルドカード文字を使用できなくなります。データベース ユーザーが正しいデータベース スキーマにアクセスできるようにするには、MySQL 8.0 にアップグレードする前にデータベース ユーザーの権限を変更します。ワイルドカード文字を使用する代わりに、必要なデータベース スキーマの完全な名前を使用するためにユーザーの権限を更新します。

    MySQL 8.0 のこのフラグの機能の詳細については、MySQL 8.0 の partial_revokes をご覧ください。

  4. ドライランでアップグレードをテストします。

    本番環境データベースをアップグレードする前に、テスト インスタンスを使用してエンドツーエンドのアップグレード プロセスのドライランを実行します。本番環境ワークロードのエクスポートによるパフォーマンスへの影響を避けるため、本番環境データベースの代わりにクローンを使用してアップグレードをテストすることをおすすめします。

    アップグレードが正常に完了することを検証するだけでなく、アップグレードされたデータベースでアプリケーションが期待どおりに動作することをテストします。ストレージの自動増量をまだ有効にしていない場合は、アップグレード後のドライラン インスタンスによるディスク ストレージの使用量をメモし、アップグレード前に本番環境インスタンスのストレージ容量を増やす必要があるかどうかを判断します。

  5. アップグレードのタイミングを決めます。

データの移行

新しいバージョンのデータベースを実行している Cloud SQL インスタンスにデータを移行する手順は次のとおりです。

  1. 移行先データベースのメジャー バージョンでインスタンスを作成します。

    移動先インスタンスが次のものを備えていることを確認します。

    • 現在のインスタンスのすべてのデータを保持するのに十分なストレージ。
    • 現在のインスタンスと同じ承認済みネットワーク。詳細については、こちらをご覧ください。
    • 同じユーザー アカウント(MySQL 権限とパスワードが同じ)。

    詳細については、インスタンスの作成をご覧ください。

  2. ローカル MySQL ツールで新しいインスタンスに接続できることを確認し、必要な場合はツールを更新します。

  3. read_only データベース フラグを On に設定して、現在の Cloud SQL インスタンスを読み取り専用モードにします。

    詳細については、データベース フラグを構成するをご覧ください。

  4. Cloud SQL にインポートするデータをエクスポートするの手順で、現在のインスタンスのデータを SQL ダンプファイルにエクスポートします。

    mysql システム データベースはエクスポートしないでください

  5. 必要に応じて Cloud Storage バケットを作成し、SQL ダンプファイルをバケットにアップロードします。

  6. Cloud Storage からの MySQL データベースのインポートに記載された手順に沿って、移動先インスタンスにデータをインポートします。

  7. 省略可。アップグレード プロセスが完了したら、外部サーバーを使用して移行元と移行先のインスタンス間のレプリケーションを設定し、最初のダンプの開始以降に行われたすべての変更を移行先に反映します。2 つのインスタンスが同期されたら、移行先のインスタンスを昇格できます。

    外部サーバーを使用して継続的なレプリケーションを実装する方法については、外部サーバーからのレプリケーションをご覧ください。

  8. 新しいインスタンスに接続するようにアプリケーションを更新します。

  9. 新しいインスタンスが正常に動作していることを確認し、古いインスタンスを削除します。

次のステップ