BLOG ブログ


2024.02.13 TECH

PostgreSQL DBをダンプからリストアした話

最近、スキーマを削除し、ダンプファイルからリストアする作業を行いました。

本番環境ではなく、開発環境でしたがとても恐ろしい作業でしたので、後人の参考に少しでもなればと思い記載します。

今回やったこと

linuxサーバで稼働中のDBを1度削除し、デイリーで作成しているダンプファイルから、DBを作り直しました。
手順はこちらです。

  • 開発環境(Linuxサーバ)でDBを削除
  • スキーマの作成
  • リストアの実施

開発環境でDBを削除

まずは環境を使用している各チームに周知を必ずしましょう。突然サービスが動かなくなります。

linuxサーバに接続

linuxサーバに入り、さっそくPostgreSQLに接続し、ドロップコマンドを実行します。

psql -U ユーザ名 -d データベース名
  drop schema スキーマ名 cascade;

ERROR:  must be owner of schema スキーマ名

はい。エラーが起きました。
スキーマを削除する際はスキーマの所有者じゃないとダメでした。
一度PostgreSQLを抜けてスキーマの所有者で入りなおします。

スキーマのユーザ名を所有者に変更し再度実施

psql -U ユーザ名(所有者) -d データベース名
  drop schema スキーマ名 cascade;

今度はスキーマの削除ができました。

※今回は所有者で入り直しスキーマの削除を行いましたが、
他にスキーマの所有者を変更するやり方もあります

alter schema スキーマ名 owner to ユーザ名; 

スキーマの作成

create schema スキーマ名 ;

今回はユーザ名の指定を行いませんでした。この場合、コマンド実行者が所有者となります。

リストアの実施

サーバーにダンプファイルを置きます。
私はworkディレクトリを用意しそこにファイルを置きました。

~/work/ダンプファイル

ダンプファイルの準備ができたので、以下でダンプファイル内のコマンドを読み込み実行します。

cd ~/work
  psql -U ユーザ名(所有者) -d スキーマ名 -f ダンプファイル

無事に実行が終わるとリストア完了です。
サービスが正常に稼働するか動作確認し、使用している各チームへ完了報告を行いましょう。


一覧に戻る


LATEST ARTICLE 最新の記事

CATEGORY カテゴリー