EC2からRDSにDBを移行した

プライベートで作っているサービスが少しスケールしそうな未来が見えたので、これまでEC2で運用していたDBをRDSへ移行してみました。

やり方は割と簡単で、

  • ec2側でmysqldump
  • RDS側でインポート

基本はこれだけ。以下はログみたいな感じです。

EC2側

$FLUSH TABLES WITH READ LOCK;
$mysqldump -u username -p ec2dbname > for-rds.dump
$UNLOCK TABLES;

RDS側

$mysql -u username -p -h ***.rds.amazonaws.com  rdsdbname < for-rds.dump

はまったところ

■RDSのセキュリティグループ設定でこける。

こんなエラー。

ERROR 2003 (HY000): Can't connect to MySQL server on '****.rds.amazonaws.com' (110)

EC2からRDSに接するためのSecurity Groupの設定をする。RDS側のコンソールで設定。

この辺の記事に書いてる。

http://posaune.hatenablog.com/entry/2013/06/10/002800 http://blog.eumyang.net/2011/12/amazonrds%E3%81%ABec2%E3%81%8B%E3%82%89%E6%8E%A5%E7%B6%9A%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E3%80%82/

■特定のDBをインポートするときはDBを指定

#1044 - Access denied for user 

これは単純にぼくのmysql力が低かったからはまった。エラーみて「?」ってなったけど、DB全体のインポートじゃないときはDB名を指定しないといけなかったようだ。 だから、もしDB名がnewdbのときはこれでできる。

$mysql -u username -p -h ***.rds.amazonaws.com newdb < for-rds.dump

■Parameter Groupを変更したら、rebootが必要だった。

文字コードをutf8にしたりしようと思って、Parameter Groupを変更したら、ずっとpending-rebootになってた。どうもrebootしないといけないらしい。 http://bekkou68.hatenablog.com/entry/2013/03/31/112630

【参考】 http://d.hatena.ne.jp/k4200/20130718/1374108746