RDS MySQL 5.5からAmazon Auroraにオンライン移行する方法

2017.06.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

AWSチームのすずきです。

Amazon RDS DB for MySQL(以下、RDS MySQL)、DBエンジンとして5.6を利用している場合、 AWSコンソールを利用して、Amazon Aurora のリードレプリカを作成出来ます。

今回、RDS MySQL 5.5 のDBを、RDS MySQL 5.6 の多段リードレプリケーション経由で、 Amazon Aurora にオンライン移行する機会がありましたので、紹介させて頂きます。

概要図

mysql55-rr-aurora-09

手順

リードレプリカの作成

  • 移行元となるMySQL5.5のDBを指定して、リードレプリカを作成します。

mysql55-rr-aurora-01

  • 所要時間は主にDB容量、スペックに依存しますが、今回のDB容量8GB弱の環境では10分程度で完了しました。

レプリカノードのアップグレード

  • リードレプリカノードのDBエンジン、Auroraレプリケーションに対応するバージョン5.6に変更します。
  • 今回、DBエンジンのバージョンは、5.6.27を利用しました。

mysql55-rr-aurora-02

  • DBインスタンスの変更「すぐに適用」のチェックを行い、即時変更としました。

mysql55-rr-aurora-03

  • パラメータグループ設定はデフォルトを利用しました。カスタマイズが必要な場合、事前にMySQL5.6用のDBパラメータグループを用意します。

  • 所要時間は7分程でした。

レプリカノードの自動バックアップ設定

  • レプリカノードからの多段リードレプリカを設定するため、自動バックアップを有効とします
  • レプリカノードで取得したバックアップ(DBスナップショット)は初期同期のみに利用し長期保持する必要性はない為、保存期間は1日としました。
  • DBインスタンスの変更「すぐに適用」のチェックを行い、即時変更としました。

mysql55-rr-aurora-04

  • 所要時間は7分程でした。

Aurora リードレプリカの作成

  • MySQL5.6、自動バックアップを有効にしたリードレプリカから、Auroraリードレプリカを作成します。

mysql55-rr-aurora-05

  • 今回の利用用途は検証環境、インスタンスタイプは「t2.small」、マルチAZ配置は実施しない設定としました。
  • パラメータグループ設定はカスタマイズが必要な場合、事前にAurora用の設定を用意します。

mysql55-rr-aurora-08

  • 所要時間は45分程でした。

レプリケーションの動作確認

MySQL 5.6 ノード

中継環境となるRDS MySQL5.6環境の稼動状態を確認します

  • レプリケーションの状態が「レプリケーション中」
  • リードレプリカのソース、意図したレプリカ元(MySQL5.5のマスタDB)である事。
  • レプリケーションエラーが発生していない事

mysql55-rr-aurora-12

レプリケーションの詳細で、レプリカ元のDB、レプリカ先のAuroraを確認します。

mysql55-rr-aurora-13

Aurora

DB クラスターの詳細

  • レプリケーションソースの確認を行います。

mysql55-rr-aurora-11

SHOW SLAVE STATUS 情報

  • 「mysql」コマンド等を利用し、DB管理者ユーザでDB接続します
  • 「SHOW SLAVE STATUS」を実行し、「Slave_IO_Running」「Slave_SQL_Running」が「Yes」である事を確認します
mysql>  show slave status \\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.7.15.0
                  Master_User: rdsrepladmin
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin-changelog.000168
          Read_Master_Log_Pos: 95945
               Relay_Log_File: relaylog.000034
                Relay_Log_Pos: 96118
        Relay_Master_Log_File: mysql-bin-changelog.000168
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

Aurora 昇格

  • Auroraのレプリケーションを解除して本番DBとして利用する場合、「リードレプリカへの昇格」を実施します。
  • 不要となったリードレプリカ環境を削除する場合にも、リードレプリカの昇格が必要です。

mysql55-rr-aurora-10

  • 検証用のDBが必要な場合、リードレプリカのAuroraからクローンを作成する事も可能です。

mysql55-rr-aurora-07

まとめ

RDS MySQL 5.6の多段レプリカを経由する事で、RDS MySQL 5.5からAuroraのリードレプリカを作成し、 DB移行を短時間の停止で実現する事ができました。

MultiAZで構成されたRDSであれば、リードレプリカの追加はマスタDBへの動作影響なく実施する事が可能です。

ダウンタイムのないパッチ適用や、本番環境のDBから検証環境を手軽に複製できるデータベースのクローン機能など、 クラウドネィティブなRDBMSとして進化を続けるAmazon Aurora。 RDS MySQL環境からの移行の際には、レプリケーション機能をご活用ください。

参考

AWS公式

MySQL公式

ブログ

  • Developers.IO

https://dev.classmethod.jp/cloud/aws/replication-from-rds-mysql57-to-aurora/

[新機能]Amazon Auroraで高速にクローンを作成できます

Amazon RDSの多段リードレプリカを試してみた