ローカル環境のデータベースを、本番環境のデータベースに移す方法(前編)


はじめに

今年入社の文系出身の新卒エンジニアです。

研修として、図書アプリを作成しています。
その中で、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接続できるようにする
      • ユーザー作成+公開鍵設定

リモートサーバー側での作業

停止しているインスタンスを、
詳細>インスタンスを開始
接続>セッションマネージャー
とクリックしていきます。
(通常踏み台サーバーは停止しているものであるため)

リモートサーバー側の作業は下の画像のところから入ります。

今回の場合は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