0
1

AWS RDS MySQL 標準サポート終了に伴う対応

Last updated at Posted at 2024-07-19

はじめに

このドキュメントは、AWS RDS MySQL 5.7の標準サポート終了に伴い、MySQL 8.0へのアップグレードを実施するための手順をまとめたものです。
MySQLのバージョンアップに際して、事前準備から実行手順、検証、そして万が一のロールバック手順までを網羅しています。
特に、Railsを使用しているプロジェクトにおいて、互換性の確認や必要な設定変更についても触れています。MySQL 8.0への移行は、セキュリティの向上や新機能の利用など、多くのメリットがありますが、慎重な準備と計画が必要です。

事前準備

  1. バックアップの取得

    • 現在のAuroraクラスタのバックアップを取得します。アップグレード中に問題が発生した場合に備えて、データを保護するために必須のステップです。
    aws rds create-db-cluster-snapshot --db-cluster-identifier <cluster-identifier> --db-cluster-snapshot-identifier <snapshot-identifier>
    
  2. 互換性の確認

    • MySQL 8.0での変更点や廃止された機能を確認し、アプリケーションが問題なく動作するかを確認します。
    • MySQL 5.7から8.0への移行ガイドラインを公式ドキュメントで確認します。
    • 使用しているRailsのバージョンがMySQL 8.0に対応しているかを確認します。Rails 5.2以降はMySQL 8.0をサポートしています。
      https://github.com/brianmario/mysql2?tab=readme-ov-file#ruby-on-rails--active-record

手順

  1. パラメータグループの作成

    • MySQL 8.0用のパラメータグループを作成し、必要な設定を行います。
    aws rds create-db-cluster-parameter-group \
      --db-cluster-parameter-group-name my-aurora8-parameter-group \
      --db-parameter-group-family aurora-mysql8.0 \
      --description "My Aurora MySQL 8.0 parameter group"
    
    • 注釈: パラメータグループは、データベースの設定を定義するテンプレートです。新しいバージョンのMySQLに適した設定を行う必要があります。
  2. 新しいパラメータグループの設定

    • 新しいパラメータグループに適用する設定を変更します。例えば、特定の文字セットやタイムゾーンの設定など。
    aws rds modify-db-cluster-parameter-group \
      --db-cluster-parameter-group-name my-aurora8-parameter-group \
      --parameters "ParameterName=character_set_server,ParameterValue=utf8mb4,ApplyMethod=pending-reboot"
    
  3. クラスタのアップグレード

    • クラスタを停止して、新しいバージョンへのアップグレードを開始します。
    aws rds modify-db-cluster \
      --db-cluster-identifier <cluster-identifier> \
      --engine-version 8.0.mysql_aurora.3 \
      --db-cluster-parameter-group-name my-aurora8-parameter-group \
      --apply-immediately
    
    • 注釈: クラスタを停止してアップグレードするため、ダウンタイムが発生することを考慮してください。
  4. インスタンスのアップグレード

    • クラスタ内の各DBインスタンスも新しいバージョンにアップグレードします。
    aws rds modify-db-instance \
      --db-instance-identifier <instance-identifier> \
      --db-cluster-identifier <cluster-identifier> \
      --engine-version 8.0.mysql_aurora.3 \
      --apply-immediately
    
    • アップグレードによる再起動で、10~15分のアクセス不可時間が生じます。
    • 注釈: 本番のアップグレードの前に、利用者へメンテナンスの連絡および、当日はメンテナンスページを公開する準備を行い利用者への影響を最小減にします。

検証

  1. 接続テスト

    • アプリケーションや管理ツールを使用して新しいバージョンのデータベースに接続し、正常に動作することを確認します。
    • 注釈: 接続テストは、すべてのアプリケーション機能が期待通りに動作することを確認するために重要です。
  2. データ整合性の確認

    • データの整合性を確認し、必要に応じてスキーマやデータの修正を行います。特にデータ参照系(検索機能・並び替え機能など)に問題が出る可能性が高いため重点的に動作検証する必要あり。
    • 注釈: データ整合性のチェックは、データが正確で完全であることを確認するために行います。
  3. 監視とログの確認

    • CloudWatchやRDSのログを確認し、エラーや警告が発生していないかを確認します。
    • 注釈: ログの監視は、潜在的な問題を早期に発見するために重要です。

ロールバック

  • 何らかの理由で問題が発生した場合は、事前に取得したスナップショットから復元することができます。
    aws rds restore-db-cluster-from-snapshot \
      --db-cluster-identifier <new-cluster-identifier> \
      --snapshot-identifier <snapshot-identifier>
    
  • 注釈: ロールバック手順は、アップグレードが失敗した場合に元の状態に戻すための方法です。

備考

  • RDS ではデフォルトのユーザー認証方式は mysql_native_password のままであるため、特別な対応は不要です。
    スクリーンショット 2024-07-18 152809.png

  • 逆にローカル環境のユーザー認証方式がcaching_sha2_password となっていることがあるため、mysql_native_passwordへ変更する必要があります。(これで半日沼りました。)

まとめ

  • 以上が、RDS MySQL 標準サポート終了に伴う対応の基本的な手順です。必ず事前にバックアップを取得し、互換性の確認を行うことが重要です。また、使用しているRailsのバージョンがMySQL 8.0に対応していることを確認してください。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1