Amazon RDS~MySQL オンプレ⇒AWS移行編~


こんにちは!中の人です。

先日AWSの新機能として『【AWS発表】 オンプレミスのMySQLデータをAmazon RDSへ移行する(その逆も) 』が発表されました。
この機能により、オンプレミス⇔AWS間でリプリケーションが出来るようになり、オンプレミス⇔AWS間のMySQLの移行が容易となりました。

実際にこの機能を使ってオンプレミス環境からRDSに対してMySQLのデータベースを移行してみます。

RDS側

RDSのデータベースインスタンスを立ちあげます。
唯一気をつける点は、MySQL 5.5 (バージョン 5.5.33 およびそれ以降)と 5.6 (バージョン 5.6.13 およびそれ以降)にする必要があるので、バージョンを間違えないように注意して起動させます。

オンプレミス側

my.cnfを編集し、通常のMySQLのリプリケーションと同じく、サーバIDの設定とバイナリログの取得の設定をします。

※server-idはリプリケーション元・先が異なる必要がありますが、AWS側は
server_id {ServerId}
となっているため、任意のサーバIDで問題ないようです。

1. MySQLに対してリプリケーション用アカウントを作成します。

◯1行目:リプリケーション用アカウントの作成

項目名 説明
repl リプリケーション用のユーザー名 任意の名称でOKです。
***.ap-northeast-1.rds.amazonaws.com 新しく起動したRDSの料金となる。
repl用パスワード リプリケーション用ユーザーのパスワード

◯2行目:1行目で作成したユーザーに対して、リプリケーションのスレーブユーザーとしての権限を付与

2. マスターサーバの情報を取得し、テーブルをロックします。
※dumpが完了するまでの間、停止が発生します。

File Position Binlog_Do_DB Binlog_Ignore_DB
mysql-bin.000003 9453

の様に表示されるので、FileとPositionの内容を控えます。

3. データベースをdumpします。
※ 一旦mysqlからでます。

4. dumpが終了したらテーブルのロックを解除します。

RDS側

※操作対象はRDSですが、RDSには直接入れないので、サーバから操作を行う。
上記サーバからであれば、dumpデータの移行が無いので楽です。
1. dumpデータのインポートをします。

2. RDSにログインします。

でslave設定ができたことを確認。

3. RDS側でリプリケーションの開始

4. RDS側でリプリケーションの開始

でslave設定ができたことを確認。
20131023_04_01.png

項目名 ステイタス
Slave_IO_State Waiting for master to send event
Slave_IO_ Running Yes
Slave_SQL_ Running Yes

オンプレミス側のMySQLに対して何らかの更新を行うと、RDS側にも反映されていることが確認できます。

RDSをマスター化する場合
リプリケーション中はManagement Console上のRDSのステイタスは以下のようになっております。
20131023_04_02 .png

で同期を終了させると、2-3分程度でmanagement consoleの「Replication State」も”-“に戻り、通常のRDSとなります。
20131023_04_03.png

次回はRDSからオンプレミスへの移行について紹介したいと思います。お楽しみに!

——————————————————————————————————
ナレコムクラウドのFacebookに『いいね!』をクリックして頂くと
最新のお役立ちレシピが配信されます★

┏━━━━━━━━━━━━━┓
┃ナレコムクラウド Facebook┃
┗━━━━━━━━━━━━━┛
——————————————————————————————————