スナップショットを使用してRDSをMySQLからAuroraへ移行する

2014.12.28

ウィスキー、シガー、パイプをこよなく愛する大栗です。 最近、既存のRDS on MySQLからAuroraへ移行したいと考えているという話をよく伺います。Auroraには既存のRDS on MySQLからAuroraへデータ移行ができる仕組みがあるのでご紹介します。

2014年12月22日の時点でAuroraはLimited Previewです。本番環境での使用は控える方が良いと思われます。

MySQLでスナップショットを取得する

まずMySQL側でスナップショットを取得する必要があります。そのスナップショットには以下の要件があります。

  • 取得元のMySQLは5.6である。
  • ストレージエンジンはInnoDBである。
  • innodb_file_per_tableが無効である。

※:RDSのスナップショット取得は、1つのAWSアカウント当り同時に1つしか実行できません。

Aurora側でスナップショットを取り込む

スナップショットの取り込みはAurora側のManagement Consoleで"Import Snapshot into Aurora Preview"をクリックします。

RDS_AWS_Console_Migrating_Data_to_an_Amazon_Aurora_DB_Cluster_-_Amazon_Relational_Database_Service_www_aterm_jp_uq_support_manual_pdf_nad11_torisetsu_shousai_rev3_pdf_Default

MySQL 5.6のスナップショットの一覧からAuroraへ移行するスナップショットを選択します。

 

RDS_·_AWS_Console_と_Amazonでリレーショナルデータベースサービス_-_アマゾンオーロラDBクラスタへのデータの移行_と_www_aterm_jp_uq_support_manual_pdf_nad11_torisetsu_shousai_rev3_pdf_と_Default

Aurora側のスナップショットの一覧に表示されます。しかし、"DB Engine"はmysqlとなっています。 対象のスナップショットを選択して"Migrate Database"

RDS_·_AWS_Console

普通のRDSでスナップショットをリストアする時と同様に入力をします。既存RDSと異なり"License Model"、"Multi-AZ Deployment"、"Storage Type"の項目はありません。

RDS_·_AWS_Console

スナップショットの移行を行うと、以下の4ステップで行われます。DBクラスタの作成後にデータ移行の準備、実際のデータ移行を行うため移行時間がかかります。

  1. Create DB Cluster
  2. Prepare data for migration
  3. Migrate data to DB Cluster
  4. Complete DB Instance creation

RDS_·_AWS_Console_と_Amazonでリレーショナルデータベースサービス_-_アマゾンオーロラDBクラスタへのデータの移行_と_www_aterm_jp_uq_support_manual_pdf_nad11_torisetsu_shousai_rev3_pdf_と_Default

RDS_·_AWS_Console_と_Amazonでリレーショナルデータベースサービス_-_アマゾンオーロラDBクラスタへのデータの移行_と_www_aterm_jp_uq_support_manual_pdf_nad11_torisetsu_shousai_rev3_pdf_と_Default

 

移行が完了すると通常のAuroraインスタンスとして利用可能になります。

 

 

 

 

 

RDS_·_AWS_Console

さいごに

スナップショットの移行は簡単な手順で実施することが可能です。しかし、データ欠損無しで移行するためにはRDSの書き込み停止後にスナップショットを取得してから移行完了までサービスを停止する必要があります。サービスの停止時間を短くするためには他の方法も検討すべきでしょう。 他にMySQLからAuroraへ移行する方法は、mysqldumpを使用する方法や既存MySQLからレプリケーションする方法もあるようです。 次は既存MySQLからの移行方法を比較したいと思います。