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