MySQLでダンプした大量データを、Cloud9でRDSに一括インポートする方法

mysqlのエクスポート RDSへインポート | idealive tech blog

【ターミナル(Linux,Mac)】scpコマンドでサーバとファイルのやり取りをする - Qiita

 

mysqlテーブル単位のエクスポート

mysqldump -u ユーザー -p データベース名 -t テーブル名 > エクスポートファイル名.sql

 

mysqlテーブルデータの一部をエクスポート

mysqldump -u ユーザー -p データベース名 -t テーブル名 --where="SQLの条件を記述(例udate < '2019-01-01 00:00:00')" > エクスポートファイル名.sql

 

 

Cloud9の storage/logs 配下にでも一時的にファイルをアップロード

mysql -h RDSのエンドポイント -P 3306 -u ユーザー名 -p データベース名 < インポートファイル.sql

 

10万件が1秒ほどのINSERT時間だった

 

 

 

具体的な手順

1. 本番DBに接続可能なサーバに入る

cd ~

 

2. mysqldump -u usernonamae -p -h xxxx.xxxxxx.ap-northeast-1.rds.amazonaws.com dbnonamae tablenonamae -w "jyouken>255 and jyouken<50000" > dumpfilenonamae.sql

 

3. DBパスワードを入力

 

4. dumpを取得したサーバに接続可能な開発サーバに入る

cd ~

 

5. scp -i "~/key/kaginonamae.pem"  ec2-user@xx.xx.xx.xx:/home/ec2-user/dumpfilenonamae.sql /home/ec2-user/

 

6. vimで、DROP TABLE や CREATE TABLE など、LOCK TABLESより上を削除

 

7. Ctrl + G
 UNLOCK TABLES;より下も削除
 5dd

 

8. mysql -h test-xxxxx-xxxxx.xxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u usernonamae -p dbnonamae < dumpfilenonamae.sql

 

9. DBパスワードを入力

 

10万件レベルであれば、1秒で終わる

1000万件レベルのインポートになると数分かかった。