はじめに
弊社で運用しているシステムのリプレイスを行った際に、旧システムのデータベースを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)
今回はここまでです。