【ハンズオン】MySQL5.0からMySQL5.7にデータベースを移行する


はじめに

移行元のMySQL5.0データベースのダンプをとって、移行先のMySQL5.7にインポートします。
前回までのサーバ移行計画のエントリはこちら

移行元サーバでのDBエクスポート

ここでは「SIPDB」という名前のDBをエクスポートします。

# mysqldump -u root -p SIPDB > SIPDB.dump

パスワードを入力すると作業ディレクトリにSIPDB.dumpが作られました。
ログテーブルは約100万レコードあるのですがサイズは46MBほどです(意外と小さい)
中身を見るとCREATE TABLEしてデータの中身をINSERTするSQLが書かれています。

移行先サーバでのDBインポート

WinSCPなどでdumpファイルを持ってきます。
まずはインポートする前にDBの箱を作っておきます。

mysql> create database SIPDB;
mysql> use SIPDB
mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

インポートします。

# mysql -u root -p TEST < SIPDB.dump

パスワードを入力するとインポート完了です。
mysqlにつないで「show tables」でテーブルが作られていること、
「select * from テーブル名」で中身が入っていることを確認します。

さいごに

データベース移行はあっさり終わりました。
ダンプファイルがGB単位になると思ってたので、EBSで新規ボリュームアタッチ→ファイルシステムをフォーマット→マウントとやってたのですがそんな必要なかったです。
この後、さらに以下のことをやりました。

  • PHPからMySQLへの接続確認
  • EC2インスタンスのElastic IPの付け替え(Classic→VPC)
  • sip.confの修正(グローバルIPを指定している部分)
  • CloudWatch(CPU&ネットワーク監視)の再設定

そして、

相談電話のAndroidアプリから接続することができました!
これで旧世代のt1.microで月3000円ほどかかってたサーバ費用が、t2.nanoで月600円程度に抑えられます!
ただサーバ側の動作がかなりもっさりなのでやっぱ、t2.microくらいにしておいたほうがいいかも。

参考にしたサイト