dumpファイルをDockerで動いているPostreSQLでリストアしてみた

2024/3/1

データベース
dump
PostreSQL

はじめに

弊社で運用しているシステムのリプレイスを行った際に、旧システムのデータベースをdumpファイルとして出力していました。
dumpファイルの中身を確認する必要性が出てきたので、DockerでPostgreSQLをインストールしたコンテナを作成し、dumpファイルをリストアしました。

Docker

作業用のディレクトリを作成し、その中にDockerfileとdocker-compose.ymlを作成します。

Dockerfile
FROM postgres:14-alpine
ENV LANG ja_JP.utf8
docker-compose.yml
version: '3'
services:
  db:
    build: .
    ports:
      - 5432:5432
    environment:
      POSTGRES_USER: root
      POSTGRES_PASSWORD: P@$$w0rd

コンテナを起動します。

> docker compose up -d
[+] Building 0.0s (0/0)                                                        docker:desktop-linux
[+] Running 2/2
 ✔ Network postgresql_default  Created                                                         0.0s 
 ✔ Container postgresql-db-1   Started   

PostgrSQL

作業用のディレクトリにdumpファイルを置き、リストアします。

> cat mydb.dump | docker compose exec -T db psql --username root
SET
SET
SET
SET
SET
 set_config 
------------
 
(1 row)

・・・

コンテナに入ってPostgreSQLに接続します。

> docker compose exec db bash
# psql -U root
psql (14.11)
Type "help" for help.

テーブルの一覧を出力してデータベースが正常にリストアしていることを確認します。

# \dt
               List of relations
 Schema |         Name         | Type  | Owner 
--------+----------------------+-------+-------
 public | admins               | table | root
 public | ar_internal_metadata | table | root
 public | banks                | table | root
 public | billings             | table | root
 public | channels             | table | root
 public | delayed_jobs         | table | root
 public | forms                | table | root
 public | groups               | table | root
 public | interview_datetimes  | table | root
 public | movies               | table | root
 public | notices              | table | root
 public | payments             | table | root
 public | player_accounts      | table | root
 public | players              | table | root
 public | projects             | table | root
 public | reviews              | table | root
 public | schema_migrations    | table | root
 public | songs                | table | root
 public | sound_to_alls        | table | root
 public | tasks                | table | root
 public | transfers            | table | root
 public | users                | table | root
(22 rows)

今回はここまでです。