LoginSignup
8
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-12-18

はじめに

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

研修として、図書アプリを作成しています。
その中で、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コマンドを叩く

概要

開発環境のデータベースを本番環境に移す

作業イメージ図

図書管理アプリのDB restore.jpg

作業手順

  • 事前準備
    • データベースからdumpファイルを作成する
  • リモートサーバー側
    • ユーザー作成+鍵設定
  • ローカル側
    • ローカルからAWSのリモートサーバーにdumpファイルを移行する

作業内容

事前準備

  • ローカルのデータベースからdumpファイルを作成する

コマンド(後で追記)

  • ローカルとリモートサーバーを接続する
    • リモートサーバーとSSH接続できるようにする
      • ユーザー作成+公開鍵設定

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

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

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

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

8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1