DockerコンテナのローカルデータベースをAWSに移行する


この記事では、ローカルPostgresデータベースをAWS RDSに移行する方法を見ます.
ビデオバージョン:https://youtu.be/87G3iUl-tj0
定義するには、次の手順を実行します
Postgres ( PostgreSQL ):オープンソースのリレーショナルデータベースです.
Amazon Relational Database Service (RDS) : クラウド内のリレーショナルデータベースを設定、操作、およびスケールするサービス.アマゾンRDSはいくつかのデータベースインスタンスタイプをサポートします
  • アマゾンオーロラ
  • PostgreSQL
  • MySQL
  • マリアブ
  • データベース
  • SQL Server
  • この記事では、AWSデータベース移行サービスを使用してローカルPostgresデータベースを移行し、既存のデータベースをAmazon RDSに簡単に移行または複製する方法を見ていきます.
    ビデオバージョン:
    通常、我々は初期段階でテストするローカルデータベースです.しかし、その後、しばらくして、我々はクラウドにそれを持っていきたい.
    これは完全な手続きであり、Dockerと厳密には関連していません( Dockerをローカルマシンにインストールするのに役立つでしょうが).
  • リポジトリをクローンする
  • DockerのローカルインスタンスをDocker
  • データベースでいくつかのインサートを作成するPostman
  • Dockerを使用してデータベースのバックアップを作成するpsql
  • AWSでRDS Postgresのインスタンスを作成します
  • AWS CLIを使用してPostgresデータベースを復元する
  • ファイナルチェック

  • リポジトリをクローンする
    これを行うにはa project that we used in a previous article . (
    このリポジトリはon the official TinyStacks AWS Docker Express application repository on GitHub https://github.com/tinystacks/aws-docker-templates-express .
    リポジトリをクローン化するには、コマンドプロンプトを開き、次のように入力します.
    git clone https://github.com/FrancescoXX/crud-api-node-postgres
    
    次にフォルダを変更します.
    cd crud-api-node-postgres
    
    このフォルダをお気に入りのIDEで開きます.Visual Studioのコードがある場合は、次のコマンドを使用できます.
    code .
    

    Dockerを使用したサービスの実行
    我々のサービスを始める前に、見てみましょうdocker-compose.yml 前の記事で使用したファイル.(これらのコマンドについてもっと詳細に説明したい場合は、
    version: '3.8'
    
    services: 
      node_backend:
        container_name: node_backend
        image: node-test:1.0.0
        build: 
          context: .
        ports: 
          - '8080:80'
        environment:
          - PGUSER=francesco
          - PGPASSWORD=12345
          - PGDATABASE=defaultdb
          - PGHOST=db
        depends_on: 
          - db  
      db:
        container_name: db
        image: 'postgres:12'
        ports: 
          - 5432:5432
        environment:
          - POSTGRES_USER=francesco
          - POSTGRES_PASSWORD=12345
          - POSTGRES_DB=defaultdb
        volumes: 
          - pgdata1:/var/lib/postgresql/data
    
    volumes:
      pgdata1: {}
    
    
    私たちには2つのサービスがあります、そして、我々は我々のデータを格納するPGATATA 1と呼ばれるボリュームです.
    このコマンドでデータベースサービスを実行しましょう.
    docker compose up -d db
    
    それからノードバックエンドサービス:
    docker compose up -d node_backend
    
    実行中のコンテナをこのコマンドでチェックしましょう.
    docker ps -a
    

    さあ、データベースにインサートをする準備ができました.

    Postmanを使ったデータベース挿入
    別の方法でデータベースに挿入できます.この記事では、APIをテストするツールであるPostmanを使用します.
    バックエンドが稼働しているかどうかチェックしてください/ping ポート8080 :

    現在のユーザをチェックします/users ポート8080 .応答は、ステータス200でブランク応答体([])になります.

    このデータベースに新しいユーザを作成する/users ポート8080 :



    我々が再びユーザーをチェックするならば/users , 我々は、3つの新しいユーザーが表示されます.

    これでデータベースのバックアップを作成できますpg_dump コマンド.

    データベースダンプpg_dump Postgresデータベースをバックアップするユーティリティです.データベースが同時に使用されている場合でも、一貫したバックアップを行います.
    PGRANT dumpはデータベースにアクセスする他のユーザをブロックしません.
    良いニュースはDocker execを使ってデータベースをダンプできるということです.
    次のコマンドを実行します.
    docker exec db pg_dump -U francesco defaultdb > backup.sql
    
    それは簡単でした!
    現在、AWS UI上でRDSインスタンスを作成する準備ができています.

    AWS ( UI )上でRDSインスタンスを作成する
    AWS RDSインスタンスを作成しましょう.
    AWS UIコンソールでは、RDSを探します.

    データベースを作成する

    ここでは、驚くほど、データベースを選択することができます.postgres , version 12.5を選択します(ローカルで使用されているものと同じですが、AWSではフリー層もあります.フリー層.

    設定セクションでは、データベース名、ユーザー名、パスワードを選択できます.

    接続の下で、パブリックアクセスのためのはいを選択します(それはデフォルトでnoに設定されます)ので、我々は我々のローカルAWS CLIからそれにアクセスすることができます.
    また、セキュリティグループを公開するVPCが必要です.セキュリティグループの詳細についてはcheck out the AWS documentation .

    他のすべてをそのままにし、「データベースを作成」をクリックします.(私たちが無料の層にあるので、私たちは請求されません).

    データベース作成は通常数分かかります.

    データベース名をクリックすると、その概要が表示されます.

    ここで、実行中のPostgresインスタンスがAWS上で動作しているので、psql データベースを復元するコマンド.

    Dockerとpsqlを用いたデータベース移行
    まず、AWS Postgresデータベースへの接続テストを行いましょう.
    docker run -it --rm postgres psql --host database-2.c9nq6suhmqou.us-east-1.rds.amazonaws.com --port 5432 --username postgres
    

    それが動作しているかどうかを確認するには、次のコマンドコマンドを入力します(最後は忘れないでください!!)
    select 1;
    

    つまり、リモートPostgresインスタンスはローカルマシンからアクセス可能です.
    現在のpsqlプロセスをコマンドで終了します.
    \q
    
    さて、使いやすさのためにbackup.sql ファイルがあります.この場合、私たちのサービスをインストールしたのと同じフォルダーでした.


    データベース移行
    今では興味深い、最も重要な部分- AWSへの移行:
    これを行うには
    psql -f backup.sql --host database-2.c9nq6suhmqou.us-east-1.rds.amazonaws.com --port 5432 --username postgres
    


    最終テスト
    それでは、リモートインスタンスに戻りましょう.

    そら我々は、ローカルデータベースをRDSインスタンスに移行させました!
    ビデオバージョン:https://youtu.be/87G3iUl-tj0
    あなたがより多くを知っていて、tinystacksニュースで更新されるならば、.check out our Web site !