私はAmazon RDSのデモが大好きです。リレーショナルデータベースを数分のうちに起動できたり、スケールアップ・ダウンやバックアップ・リストア、パッチや可用性をどのように管理する方法、それにより、アプリケーションの開発に集中できるようになることを皆さんにお見せできるのは本当にクールです。
デモの後、よくデータの移行についての質問をいただきます。デモをご覧いただいたお客様はRDSのパワーと価値を見て、既存のデータ(およびアプリケーション)をクラウドに移行することに興味を持ちます。しかし、ほとんどのデータベースは常に動き続けているので、一般的に、移行作業は一筋縄ではいきません。
本日、MySQLを実行しているAmazon RDSにデータを移行するプロセス、および再び戻すプロセスを簡単にする2つの新機能を導入いたしました。 2つの機能とも、MySQLのレプリケーション機能に依存しており、MySQL 5.5 (バージョン 5.5.33 およびそれ以降)と 5.6 (バージョン 5.6.13 およびそれ以降)と組みあわせて使用するよう設計されています。
ご存知のとおり、レプリケーションはマスター上で実行されたデータの変更操作(INSERT、DELETEなど)をスレーブにコピーし、スレーブ上で実行することにより動作します。マスターとスレーブが複製されたデータベースのテーブルの同一のコピーから始めている限り、2つは同期を維持します。
外部のMySQLインスタンスからRDSにデータを移行する
オンプレミスまたはEC2インスタンス上で実行している既存のMySQLインスタンスからデータを移行するためには、そのデータベースをレプリケーションのソースとして設定する必要があります。そして、データベースがオンプレミスの場合は企業ファイアーウォールに穴を空け、データベースがすでにAWS上でホストされている場合にはEC2インスタンスのセキュリティグループにエントリーを追加する必要があります。
次に、MySQLを実行するAmazon RDSを起動し準備をする必要があります。それから、 mysqldumpを使って、移行したいデータベースまたはデータベースのテーブルをダンプし、現在のログファイル名をメモしておきます。 そして、データベースのダンプデータを使って、RDSデータベースインスタンスを初期化します。
RDSインスタンスが初期化されたら、今回のリリースの一部として提供するレプリケーションストアドプロシージャを実行して、RDSインスタンスを、オンプレミスまたはEC2上で実行しているインスタンスのリードレプリカとして、設定します。 RDSインスタンスがマスターで起こっている変更に追いついたら、RDSインスタンスを既存のレプリカの代わりにアプリケーションで使いはじめることができます。
必要に応じて、RDS プロビジョンドIOPSを使用することもできますし、Multi-AZモードでRDSをセットアップすることもできます。(ただし、Multi-AZ機能は、インポートが完了するまで設定しないことをオススメいたします。)
完全なプロセスはもう少し複雑ですので、詳しくはドキュメントをご覧ください。
RDSから既存のMySQLインスタンスへデータを移行する
上記の処理とは反対に、RDSデータベースインスタンスからオンプレミスやEC2上で実行しているMySQLサーバーにデータを移行することもできます。
このプロセスは、マスターが通常より長くログファイルを保持するためにRDSのリードレプリカを使います。
このプロセスをナビゲートするのに役立つドキュメントも用意しています。
レプリケーションへの道
ここまで読み進めていて、MySQLのレプリケーションについての経験をお持ちであれば、「すばらしい! 既存のデータベースからクラウドにレプリケーションを設定して、簡単なフェイルオーバー用のホットスペアを作成できるじゃないか!」と考えるかもしれません。
この場合、レプリケーションを完全なソリューションとしてではなく、fail-to-cloud モデルのコンポーネントとして、考える方が正しいです。マスターとスレーブの間にはネットワーク接続があるので、堅牢なソリューションを構築するためには、接続を監視および維持する必要がありますし、レプリケーションの遅延を追跡する必要もあります。
そのデータを移行しましょう!
今すぐ皆様のデータを移行することができます。すぐにはじめるために必要なドキュメントとストアドプロシージャはこちらです。