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

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


 やりたいこと

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  

コメント

このブログの人気の投稿

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-04-30 23:37:32 RSSフィード2021-04-30 23:00 分まとめ(42件)

投稿時間:2023-02-05 02:09:04 RSSフィード2023-02-05 02:00 分まとめ(9件)