業務で使っているECサイトについて、日次バックアップを行っているが、いざ緊急時となった時のリストア手順についてよく分かっていなかったので、ここにまとめておく。

バックアップファイルをpostgresホームへ移動

リストアの際、パーミッションの関係でうまく行えないことがあるので、まずはバックアップファイルをpostgresユーザーのホームディレクトリへ移動しておく。

通常、Linuxユーザーのホームディレクトリは「/home/user/」として作られるが、postgresユーザーディレクトリはデフォルトで「/var/lib/pgsql/」にあるようだ。

cpコマンド(またはmvコマンド)でバックアップファイルを下記のとおり移動する。

cp /home/user/bkfile /var/lib/pgsql/bkfile

ユーザー・データベースを用意しリストア実行

まずはバックアップデータの受取用として、ユーザーとデータベースを作成する。

# postgresユーザーに切替
su - postgres
※postgresユーザーのパスワードを入力

# ユーザー追加
createuser -P username

# 確認
psql -c 'select usename from pg_user;'

# シェルにログイン
psql
 
# データベース作成
create database dbname owner username;
 
# 確認
\l

# シェルからログアウト
\q

ここまでの用意ができたらリストアを実行する。

# リストア実行
psql dbname < /var/lib/pgsql/bkfile

リストアが無事に終わったらシェルにログインし、出来上がったテーブルを確認する。

psql

# データベース選択
\c dbname

# テーブル一覧を確認
\d

先程作成したデータベースに、バックアップから復元したテーブルが一覧として表示されるはずだ。