PostgreSQLスキルアップノート(自己啓発のための個人サイト)

pg_dumpスクリプトパーツ


【一覧に戻る】
マニュアルへのリンクは9.2としています。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■■■■ PostgreSQL スキルアップノート
■■■■
■◆■■ pg_dumpスクリプトパーツ
■■■■
■■■■
■■■■ 2012/11/10
■■■■ 使用環境:PostgreSQL9.1.4 (CentOS6.2)
                                                                   (C) 2012 ohdb
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

シェルスクリプトなどに組み込むベースとなるスクリプトのパーツ


【マニュアル】

・pg_dumpコマンド→●[マニュアル]pg_dump



■1■ pg_dumpスクリプトパーツ・基本形
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

データベース名、タイムスタンプをファイル名の一部にしたdumpファイルを出力。
同様のネーミングで実行ログを出力。
開始終了時刻とステータスをヒストリファイルに追記。

以下はそのままbashコマンドラインに貼り付けて確認することができます。

【□】 pg_dumpの実行

# ==== ここから ====
TARGETDB=database1    #対象のdbname
DUMPDIR="."           #出力先ディレクトリ
DUMPTIME=`date '+%Y%m%d_%H%M%S'`
DUMPFILE=$DUMPDIR/pgdump_${TARGETDB}_$DUMPTIME.dump
DUMPLOGF=$DUMPDIR/pgdump_${TARGETDB}_$DUMPTIME.log
DUMPHIST=$DUMPDIR/pgdump_${TARGETDB}_history.log
echo "START `date '+%Y/%m/%d %T'` DBNAME= $TARGETDB">>$DUMPHIST
(time -p pg_dump -v -Fc $TARGETDB -f $DUMPFILE) >$DUMPLOGF 2>&1
ST=$?
echo "END   `date '+%Y/%m/%d %T'` DBNAME= $TARGETDB STATUS= $ST">>$DUMPHIST
# 
# ==== ここまで ====



【□】 結果確認

ls -l $DUMPDIR
cat $DUMPLOGF
cat $DUMPHIST



作成されるファイル

-rw-rw-r-- 1 postgres postgres 9077252  2月 23 21:38 2013 pgdump_database1_20130223_213837.dump ダンプファイル
-rw-rw-r-- 1 postgres postgres    3268  2月 23 21:38 2013 pgdump_database1_20130223_213837.log  ログファイル
-rw-rw-r-- 1 postgres postgres     294  2月 23 21:39 2013 pgdump_database1_history.log          ヒストリファイル(永久保存用)



pg_dumpヒストリファイルの内容

[postgres@pg91 dmp]$ cat pgdump_database1_history.log
START 2013/02/23 21:38:37 DBNAME= database1
END   2013/02/23 21:38:41 DBNAME= database1 STATUS= 0
START 2013/02/23 21:39:19 DBNAME= database1
END   2013/02/23 21:39:23 DBNAME= database1 STATUS= 0
START 2013/02/23 21:39:43 DBNAME= database1
END   2013/02/23 21:39:43 DBNAME= database1 STATUS= 1



【参考】timeコマンドの結果をログに残す場合
目的のコマンドとセットでサブシェル(カッコで)にして実行したものをファイルにリダイレクトする必要がある。





以上 
inserted by FC2 system