先日、ステージング環境がAmazon EC2からGCEへ移行されました。その際、データベースの移行をしたので手順を書いていきます。
EC2にssh接続
$ ssh -i 使用する鍵のパス ユーザ名@接続先のIPアドレス
例)
$ ssh -i ~/.ssh/hoge.pem ec2-user@xx.xx.xx.xx
DBをdumpする
ssh接続ができたら
[ec2-user@ip-xxx ~]$ mysqldump -u ユーザー名 -p -h DBホスト DB名 > 保存したいファイル名
例)
[ec2-user@ip-xxx ~]$ mysqldump -u hoge -p -h hoge.rds.amazonaws.com hoge_staging > hoge_staging.dump
そしてパスワードを聞かれるのでパスワードを入力すればdumpファイルがEC2上に作成されます。ここまでできたらEC2からはログアウトしてください。
ユーザー名等は自分のDB設定ファイルを参照してください。Railsならdatabase.ymlです。
EC2上に作成したdumpファイルをローカルへコピー
$ scp -i 使用する鍵のパス ユーザ名@接続先のIPアドレス:EC2上のコピー元のファイルのパス ローカルのコピー先のパス
例)
$ scp -i ~/.ssh/hoge.pem ec2-user@xx.xx.xx.xx:/var/www/foo/bar/hoge_staging.dump /Users/mishikun/workspace/
これで、EC2上で作成したdumpファイルを手元のPCのworkspace配下まで持ってくることができました。次は移行先のGCEにこのファイルを持っていきます。
移行先ににdumpファイルを送信
sftpを使って送信します。
$ sftp -i 使用する鍵のパス ユーザ名@接続先のIPアドレス
sftpができたらputコマンドでローカルにあるdumpファイルをGCEに送ってあげましょう。場所は適当です。私はホームディレクトリに送信しました。
GCEにssh接続
GCEにssh接続します。コマンドは上記と同様なので割愛させていただきます。
移行先DBにdumpをインポート
[xxx@xxx ~]$ mysql -u ユーザ名 -p -h DBホスト dumpをインポートしたいDB名 < dumpファイルのパス
例)
[xxx@xxx ~]$ mysql -u hoge -p -h xx.xx.xx.xx hoge_staging < ~/hoge_staging.dump
これでDBの以降は完了です✌️
もし間違い等があればご指摘のほどよろしくお願いします。
参考
MySQL :: MySQL 5.6 リファレンスマニュアル :: 4.5.4 mysqldump — データベースバックアッププログラム
scpコマンド チートシート - Qiita