動作確認するときは、テスト環境用のDBを使いたい(本番のデータに影響を与えたくない)
んだけど、本番/テスト用と分けられないほどお金に困ってるので、
ローカル環境に本番環境のデータを移して動作確認をすることにした。今日はその方法をば。
※AWSは従量課金だから起動している時間ごとにお金かかっちゃうけどローカルならEC2の起動時間でまかなえるからちょっと節約。
1.ローカルにmysqlをインストール
$> sudo yum remove mysql51 mysql51-common mysql51-libs mysql51-server
$> sudo yum install mysql55 mysql55-common mysql55-libs mysql55-server
※mysqlがインストールされていない場合はremoveしなくても大丈夫
2.my.conf書き換え
innodb_buffer_pool_size=32M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
character-set-server=utf8
default-time-zone='+9:00'
skip-character-set-client-handshake
collation-server=utf8_general_ci
init-connect = SET NAMES utf8
[client]
default-character-set=utf8
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql]
default-character-set=utf8
3.mysql起動
$> sudo mysqld_safe &
4.本番DBからdumpデータを取得
$>
mysqldump -h mydb.domain -uuser_name -ppass -t db_name > dump.sql
5.dumpしたデータをローカルDBにインポート
$> mysql -ulocal_user_name -plocal_pass local_db_name < dump.sql
※もしインポートするデータの容量が大きすぎると接続時間タイムアウトエラーが発生することがある。その場合はmy.confのmax_allowed_packetを最大(16Mに設定する)
6. confing/database.yamlのdevelopmentをローカルDBに向ける
development: adapter: mysql2 encoding: utf8 reconnect: false database: local_dbname pool: 5 username: local_user_name password: local_pass host: localhost socket: /var/lib/mysql/mysql/mysql.sock
これでばっちり。
【参考】