はじめに
今年入社の文系出身の新卒エンジニアです。
研修として、図書アプリを作成しています。
その中で、180件ほどの図書データを蓄積させたローカル環境のデータベースを、
AWSにある本番環境のデータベースに移す(更新する)といった工程がありました。
そこで私はかなりつまずきました。
AWSのコンソール上で、
「マウスを右クリックしてデスクトップから切り取り、コンソールの方にコピペッ!!!と」
くらいでできるものだと思ったら大間違いでした。
初心者なりに、同じようなことでつまずいた人のためにまとめてみました。
前編と後編の2部構成です
また今回のテーマ
「ローカル開発環境のデータベースをAWS上の本番環境に移す」
については2部構成で書きたいと思います。(今回は前編です。)
1.ローカル開発環境のデータベースのdumpファイルをAWS上の本番環境の踏み台サーバに転送する(前編)
2.本番環境の踏み台サーバに転送したdumpファイルから本番環境のMySQLにリストアする(後編)
やりたいこと
ローカル開発環境のデータベースのdumpファイルをAWS上の本番環境の踏み台サーバに転送する
その作業工程のうちの
・AWS上の本番環境の踏み台サーバにユーザを作成
・公開鍵を設置
・ローカル環境から dump_file.txt を本番環境の踏み台サーバの新規登録ユーザのホームディレクトリに scp で転送
結論 まずdumpファイルを本番環境の踏み台サーバーにコピーする
ローカルからリモートサーバーにSSH接続できるようにする
+
$ scp -i [秘密鍵] [転送するファイルのパス] [EC2ユーザー名]@[パブリックDNS]:[コピー先のパス]
つまり本番環境の踏み台サーバーとSSH接続の設定を行い、SCPコマンドを叩く
概要
開発環境のデータベースを本番環境に移す
作業イメージ図
作業手順
- 事前準備
- データベースからdumpファイルを作成する
- リモートサーバー側
- ユーザー作成+鍵設定
- ローカル側
- ローカルからAWSのリモートサーバーにdumpファイルを移行する
作業内容
事前準備
- ローカルのデータベースからdumpファイルを作成する
コマンド(後で追記)
- ローカルとリモートサーバーを接続する
- リモートサーバーとSSH接続できるようにする
- ユーザー作成+公開鍵設定
- リモートサーバーとSSH接続できるようにする
リモートサーバー側での作業
停止しているインスタンスを、
詳細>インスタンスを開始
接続>セッションマネージャー
とクリックしていきます。
(通常踏み台サーバーは停止しているものであるため)
今回の場合はAWSコンソールに
アカウント:hoge
でログインし、
huga(本番環境の踏み台サーバー)
にスイッチロールしました。
リモート側(ユーザー作成+公開鍵設定)
sudo su
[root home]# useradd newuser
$ su newuser
[newuser ~]$ mkdir .ssh
[newuser ~]$ chmod 700 .ssh
[newuser ~]$ cd .ssh
[newuser .ssh]$ vim authorized_keys
[newuser .ssh]$ chmod 600 authorized_keys
ローカル側
EC2のバナーが表示されたので接続を確認できました!!
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
それでは作業に入る!(scpで転送)
https://qiita.com/Yorinton/items/df24281fcf07729fa0f9
こちらを参考にしました。
使うコマンドはこちら(ローカル側で操作します)
$ cd ./.ssh/keys
$ scp -i [秘密鍵] [転送するファイルのパス] [EC2ユーザー名]@[パブリックDNS]:[コピー先のパス]
相対パスの打ち方がわからず、調べるのが面倒だったので、dumpファイルを一時的にローカルの.ssh/に移した。
そのため、私が打つべきコマンドは
cd .ssh
scp -i id_rsa dump_file.txt newuser@ip : ~/
/c/Users/newuser/.ssh
$ scp -i id_rsa dump_file.txt newuserip : ~/
load pubkey "id_rsa": invalid format
Enter passphrase for key 'id_rsa':
dump_file.txt
コピーできている!
[ newuser]# ls -la
total 316
drwx------ 3 newuser newuser 118 Oct 13 09:53 .
drwxr-xr-x 5 root root 60 Oct 12 01:34 ..
-rw------- 1 newuser newuser 46 Oct 13 09:53 .bash_history
-rw-r--r-- 1 newuser newuser 18 Jan 16 2020 .bash_logout
-rw-r--r-- 1 newuser newuser 193 Jan 16 2020 .bash_profile
-rw-r--r-- 1 newuser newuser 231 Jan 16 2020 .bashrc
-rw-r--r-- 1 newuser newuser 306119 Oct 12 02:24 dump_file.txt
drwx------ 2 newuser newuser 29 Oct 12 01:50 .ssh
試行錯誤したこと
- AWSのコンソールからドラッグアンドドロップできないか試した。
- GitHubのdumpファイルのURLを書いてインストールしたら上手くダウンロードされるんじゃないかと試した。
- プルリクを出してマージしたら自動で反映されるんじゃないか
この後行うこと→(後編へ続く)
コピーしたdumpファイルをつかって本番環境のデータベースを最新版に更新する!!
参考にしたサイト:
https://qiita.com/Yorinton/items/df24281fcf07729fa0f9