はじめに
フローは大体思い浮かんだのですが、個々のコマンドを調べながら実行していくのに時間がかかってしまいました。
今後も使うだろうと思ったので、こちらにまとめておこうかなと思います。
目次
- EC2からMySQL(RDS)に接続する方法
- MySQL(RDS)からEC2にバックアップをとる方法
- EC2からローカルにバックアップデータを転送する方法
- バックアップデータをローカルMySQLに復元する方法
EC2からMySQL(RDS)に接続する方法
# EC2へssh接続(ローカル上で実行)
$ ssh -i "******.pem" ec2-user@***ip_address***
# EC2 上から本番環境の MySQL へ接続(EC2上で実行)
$ mysql -h *******endpoint********.ap-northeast-1.rds.amazonaws.com -P 3306 -u ***db_username*** -p
# パスワード入力
> *********
# MySQL から抜ける(接続できることを確認できればok)(本番環境のMySQL上で実行)
> exit
MySQL(RDS)からEC2にバックアップをとる方法
# MySQL からデータをバックアップ (EC2上/tmp/mysqldump_all_database.dumpにバックアップをとる)
$ mysqldump --single-transaction -h *******endpoint********.ap-northeast-1.rds.amazonaws.com -P 3306 -u ***db_username*** -p ***password*** > /tmp/mysqldump_all_database.dump
EC2からローカルにバックアップデータを転送する方法
# EC2から抜ける
$ exit
# EC2 -> ローカル へファイル転送(ローカル上で実行)
$ scp -i /Users/***username***/.ssh/*******.pem -r ec2-user@***ip_address***:/tmp/mysqldump_all_database.dump /Users/***username***/Downloads
バックアップデータをローカルMySQLに復元する方法
# 開発環境の MySQL へ接続(ローカル上で実行)
$ mysql -h db -u root -p
# MySQL に復元するファイルの容量を一時的に大きくする(開発環境のMySQL上で実行)
$ set global max_allowed_packet = 200000000;
# 開発環境の MySQL に復元(ローカル上で実行)
$ mysql -h db -u root -ppassword -D ***development_db_name*** < /Users/***username***/Downloads/mysqldump_all_database.dump
まとめ
意外とつまづくことなく、シンプルに実行できました。