• 検索結果がありません。

ユーティリティ使用方法

ドキュメント内 PostgreSQL Internals(1) (ページ 159-164)

8. ユーティリティ

8.1 ユーティリティ使用方法

特徴的なコマンドの使用方法について説明します。

8.1.1 pg_basebackup コマンド

pg_basebackup コマンド12は、データベース・クラスタの完全なコピーを作成するため

に開発されました。使用には以下の点に注意します。内部的にはオンライン・バックアッ プと同じ処理を実施しています。

 -xオプションを指定して、バックアップ完了後にログスイッチを実施します。

 データベース・クラスタ以外のテーブル空間ディレクトリは同一パスに保存されま す。パスを変更するためには--tablespace-mappingパラメータで新旧のパスを指定 する必要があります(PostgreSQL 9.4から指定可能)。

 バックアップ先のディレクトリは空にしておく必要があります。

 WAL書込みディレクトリは{PGDATA}/pg_xlogになります。異なるディレクトリを 指定する場合は--xlogdirパラメータを指定します(PostgreSQL 9.4から指定可能)。 例 122 pg_basebackupコマンド実行

8.1.2 pg_archivecleanup コマンド

pg_archivecleanup コマンドは、contrib モジュール13に含まれます。バックアップが完

了し、不要になったアーカイブログ・ファイルを削除します。

通 常 は ス ト リ ー ミ ン グ ・ レ プ リ ケ ー シ ョ ン 環 境 で recovery.conf フ ァ イ ル の

archive_cleanup_commandのパラメータ値として使用します。最初のパラメータにはアー

カイブログ出力ディレクトリを、2番目のパラメータには最終のWALファイルを示す「%r」

12 マニュアルはhttp://www.postgresql.org/docs/9.4/static/app-pgbasebackup.html

13 マニュアルはhttp://www.postgresql.org/docs/9.4/static/pgarchivecleanup.html

$ pg_basebackup -D back -h hostsrc1 -p 5432 -x -v Password: << パスワード >>

transaction log start point: 0/7E000020 transaction log end point: 0/7E0000A8 pg_basebackup: base backup completed

$

を指定します。

例 123 recovery.confファイルの指定

pg_archivecleanupコマンドはスタンドアロン環境でも使用できます。第2パラメータに

は、オンライン・バックアップで作成されたラベル・ファイルを指定します。以下のよう なプログラムを作成することで、最終のラベル・ファイルを取得することができます。

例 124 pg_archivecleanupコマンド実行スクリプト

8.1.3 psql コマンド

psqlコマンドは会話的にSQL文を実行するクライアント・ツールです。psqlコマンド14

が使用する環境変数は以下の通りです。

14 マニュアルはhttp://www.postgresql.org/docs/9.4/static/app-psql.html

archive_cleanup_command = 'pg_archivecleanup /opt/PostgreSQL/9.4/arch %r'

#! /bin/sh

. /opt/PostgreSQL/9.4/pg_env.sh

ARCHDIR=/opt/PostgreSQL/9.4/arch

LASTWALPATH=`/bin/ls $ARCHDIR/*.backup | /bin/sort –r | /usr/bin/head -1`

if [ $LASTWALPATH = '' ]; then echo 'NO label file found.' exit 1

fi

LASTWALFILE=`/bin/basename $LASTWALPATH`

pg_archivecleanup $ARCHDIR $LASTWALFILE stat=$?

echo 'Archivelog cleanup complete' exit $stat

表 61 psqlコマンドが使用する環境変数

環境変数 説明 デフォルト

COLUMNS 改行幅の制限値

¥pset columnsのデフォルト

ターミナルの幅から計算

PAGER ページャ・コマンド名 Cygwin環境ではless

それ以外では more

PGCLIENTENCODING クライアント・エンコード auto

PGDATABASE デフォルト・データベース名 OSユーザ名

PGHOST デフォルト・ホスト名 localhost

PGPORT デフォルト・ポート番号 5,432

PGUSER デフォルト・ユーザ名 OSユーザ名

PSQL_EDITOR EDITOR

VISUAL

¥e コマンドで使用するエデ ィタ名。リストを上から検索 する。

Linux / Unixではvi Windowsではnotepad.exe

PSQL_EDITOR_LINEN UMBER_ARG

エディタに行番号を渡すコマ ンド

Linux / UNIX では'+' Windowsではなし

COMSPEC ¥! コ マ ン ド 用 シ ェ ル

(Windows)

cmd.exe

SHELL ¥!コマンド用シェル(Linux /

UNIX)

/bin/sh

PSQL_HISTORY 履歴保存ファイル Linux / UNIXでは

{HOME}/.psql_history Windowsでは

{HOME}¥psql_history

PSQLRC 初期化コマンド用ファイルの

パス

Linux / UNIXでは {HOME}/.psqlrc Windowsでは

{HOME}¥psqlrc.conf

TMPDIR ファイル編集用一時ディレク

トリ

Linux / UNIX では /tmp Windows では GetTempPath APIによる取得

8.1.4 pg_resetxlog コマンド

pg_resetxlog コマンド15はWAL ファイルの再作成を行います。このコマンドはインスタ

ンス起動中には実行できません。マニュアルにあるとおり、{PGDATA}/postmaster.pid フ ァイルの存在をチェックしています。存在のみをチェックしており、インスタンスの起動 をチェックしているわけではありません。

pg_resetxlogコマンドは以下の処理を行っています。

① オプションのチェック

② データベース・クラスタのチェックと、ディレクトリ移動

③ postmaster.pidファイルの存在チェック

④ pg_controlファイルの読み込み

a. 読込不可→プログラム終了

b. バージョン・チェックとCRCのチェック

⑤ pg_controlファイルに不整合があった場合は正しい値を予測

⑥ pg_xlogディレクトリから最終のWALファイルを検索

⑦ 直前のインスタンスが正常終了(DB_SHUTDOWNED (1))かどうかをチェックし、

正常終了では無い場合-fオプションが指定されていなければ終了。

⑧ pg_controlファイルの削除と再作成

⑨ WALファイルの削除

⑩ archive_statusディレクトリ内のファイル削除

⑪ 新規WALファイルの作成

以下は、pg_resetxlogコマンド実行前後でpg_controldataコマンドの出力結果の比較例で す。表示が異なる部分のみ記載しています。

15 マニュアルはhttp://www.postgresql.org/docs/9.4/static/app-pgresetxlog.html

表 62 pg_controldataコマンドの比較

項目 pg_resetxlog実行前 pg_resetxlog実行後

pg_control last modified Mon 30 Jun 2014 03:38:37 PM JST

Mon 30 Jun 2014 05:45:09 PM JST

Latest checkpoint location

2/A4000028 2/AC000028

Prior checkpoint location 2/A3002D20 0/0 Latest checkpoint's

REDO location

2/A4000028 2/AC000028

Latest checkpoint's REDO WAL file

0000000100000002000000A 4

0000000100000002000000A C

Time of latest checkpoint Mon 30 Jun 2014 03:38:36 PM JST

Mon 30 Jun 2014 05:43:46 PM JST

Backup start location 0/E1000028 0/0

ドキュメント内 PostgreSQL Internals(1) (ページ 159-164)