LoginSignup
0
0

More than 5 years have passed since last update.

VPC外にあるRDS for MySQLインスタンスをVPCに移行する

Posted at

これは何?

VPC外で立てられた古いRDS for MySQL のインスタンスが稼働中で、VPC上に移行しないといけない要件が出てきた。
可能な限り少ないダウンタイムで移行したかったが、苦戦したので記事にまとめたい。

RDSインスタンスのスペック

インスタンスタイプ: db.m3.medium
マルチ AZ: Yes
エンジンバージョン: 5.5.53

RDS for MySQL はSSL経由のレプリケーションをサポートしていない

まず前提として、RDS for MySQLではSuper権限を持ったユーザを作成できず、そういう操作が必要な場合はストアドプロシージャ経由で行うらしい。
リードレプリカの設定はmysql.rds_set_external_masterでできる。

ただしこれはMySQL DB インスタンスではSSLがサポートされない旨が書いてある。

※なぜかAuroraでは実装されている。

平文での通信は非常に困るので、レプリケーション案は見送らざるを得なかった。

シングルAZに変更してからVPCに移行させる

↓の記事を読むと、「VPC 外のマルチ AZ DB インスタンスの VPC への移行は現在サポートされていません」とある。

Amazon Virtual Private Cloud (VPC) および Amazon RDS

したがって、一旦シングルAZに切り替えれば移行ができる。
データベースの「変更」を選ぶと、サブネットグループが選択できるようになっている。

スクリーンショット 2019-03-28 14.47.44.png

mysqldumpをとってVPC上に立てた新しいインスタンスにインポートする

説明不要な気がする。

インスタンスのスナップショットから復元する

スクリーンショット 2019-03-28 15.36.54.png

コンソールだけで完結し、工程もスナップショットの取得と復元だけなので、最もお手軽な方法に思える。
ただしスナップショットから復元したEBSはI/Oのレイテンシが著しく増えるらしい。

Amazon EBS ボリュームの初期化

どれが良さそうなのか

今回の要件は可能な限り少ないダウンタイムなので、mysqldumpからのリストアが良さそう。
ダンプデータが1.6GBくらいなので、そんなに時間がかからなかった(約15分)。

実データのサイズが大量になってくるとシングルAZの変更を挟むやり方の方が良いように思う。

備考

上記の3つの方法はAWSビジネスサポートからの回答なので信憑性はあります。
(完全に個人の見解というわけでは)ないです。

まるごとの引用でないのはAWSからやめてほしい旨の連絡があったのと、セキュリティ的に公開したくない情報を含むためです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0