概要

PostgreSQLに付属しているpg_dumpというツールを使って、復元SQLを作成します。

あるサーバ上のPostgreSQLのデータベースと同一の内容を他のサーバ 上に再現したい場合に、有効な方法です。

pg_dumpの本来の使い方は・・・

 

参考記事→http://blog.nnasaki.com/entry/2013/03/20/230740

 

コマンド使用方法

/pg_dump [DB名] -U [ユーザ名]  > [出力SQLファイル名]

詳細→https://www.postgresql.jp/document/8.0/html/app-pgdump.html

 

/pg_dump org001 -U aipo_postgres  > clone.sql

clone.sql を別のPostgreSQL に対して実行する

▼ clone.sql の取得

scp <サーバ上のパス> <ローカルパス> -i SSH秘密鍵

 

下準備

DB作成

pgAdminでの操作

  1. pgAdmin → オブジェクトブラウザ → ログインロールを右クリック → 新しいログインロール →して「aipo_postgres」というユーザを作成
  2. 上記のユーザをオーナーとした任意のDB名のデータベースを作成

 

SQLの実行

CREATE ROLE <ユーザ名> LOGIN
VALID UNTIL ‘infinity’;

 

CREATE DATABASE <DB名>
WITH ENCODING=’UTF8′
OWNER=<ユーザ名>
CONNECTION LIMIT=-1;

 

復元作業

スタートメニュー → プログラムjとファイルの検索 → psqlを検索 → SQL Shell を起動

Server [localhost]: <localhostなら空エンター>
Database [postgres]: <DB名>
Port [5432]: <ポート番号>
Username [postgres]: <先ほどのユーザ名>
Client Encoding [SJIS]: <空エンター>

<DB名>=> i C:/Path/To/restore.sql

※ pg_dumpで生成した復元SQLを指定して実行
org001=> i C:/Users/root/Desktop/clone.sql

・・・ メッセージが表示される・・・

org001=>q

 

pgAdminからデータベースを確認すると、テーブルなどが作成されていることが確認できるはずです。