こんにちは!中の人です。
先日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_IO_State | Waiting for master to send event |
Slave_IO_ | Running Yes |
Slave_SQL_ | Running Yes |
オンプレミス側のMySQLに対して何らかの更新を行うと、RDS側にも反映されていることが確認できます。
RDSをマスター化する場合
リプリケーション中はManagement Console上のRDSのステイタスは以下のようになっております。
で同期を終了させると、2-3分程度でmanagement consoleの「Replication State」も”-“に戻り、通常のRDSとなります。
次回はRDSからオンプレミスへの移行について紹介したいと思います。お楽しみに!
——————————————————————————————————
ナレコムクラウドのFacebookに『いいね!』をクリックして頂くと
最新のお役立ちレシピが配信されます★
┏━━━━━━━━━━━━━┓
┃ナレコムクラウド Facebook┃
┗━━━━━━━━━━━━━┛
——————————————————————————————————