2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HerokuからAWSへ移行する(DBエクスポート・インポート)

Posted at

 やりたいこと

Herokuで運用していたアプリケーションをAWSへ移行する。
今回はDB関連の作業を対象に備忘として残す。

 環境

MySQL5.7
Heroku JawsDB
RDB
MacOS

JawsDBからエクスポート

基本形
mysqldump --set-gtid-purged=OFF -uユーザ -h ホスト -p データベース > dump.sql

一応説明。
--set-gtid-purged=OFFはgtid関連のWarning抑止。
--single-transactionは、バックアップなどではよく使われるけど、今回は移行なので未使用。(業務的にデータ更新を止めれたので。)

基本形で一発でいければ楽なのだけど、データが多いと以下が返却される。
mysqldump: Error 1317: Query execution was interrupted when dumping table xxx at row: xxx

その場合は重量級テーブルとそれ以外のエクスポートを分ける必要がある。

重量級以外
mysqldump -t --set-gtid-purged=OFF -uユーザ -h ホスト -p データベース --ignore-table=データベース.除外したいテーブル > dump_other_tables.sql

--ignore-tableで重量級テーブルを除外する。重量級が複数ある場合は--ignore-tableごと複数書く。

重量級については、一発でエクスポートできない場合はwhereオプションでさらに分割する。

重量級(whereで分割)
mysqldump -t --set-gtid-purged=OFF -uユーザ -h ホスト -p データベース 対象テーブル --where "id < 100000" > dump_XXX.sql

ちなみに-tはcreate table含めない。なので、移行先でいちいちDDLを叩きたくない場合は-dで定義だけエクスポートも必要。

EC2にDumpファイルコピー

RDSはインターネットからは繋げない(設定にした方が良い)のでEC2を踏み台に接続する。
そのため事前にEC2にDumpファイルをコピーしておく。参考

/Users/XXX/.ssh
scp -i aws-eb コピーしたいファイル ec2-user@IPアドレス:/home/ec2-user dump_XXX.sql 

EC2にsshでログインしてインポート

cd プロジェクトディレクトリ
eb ssh

[ec2-user@xxx ~]$ mysql -uユーザ -h エンドポイント -p データベース < dump_XXX.sql 
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?