[pgsql-jp: 41732] Re: 【質問】 スタンバイDBにリストア済みのアーカイブログのxidを知る方法

Tomoaki Sato sato @ sraoss.co.jp
2014年 9月 22日 (月) 19:38:24 JST


佐藤です。

> 佐藤と申します。
> 
> 初投稿ですので、失礼がありましたらご指摘ください。
> 
> PostgreSQL 9.3 × Red Hat Linux 6 (64bit)を使用しています。
> レプリケーションのうち、ホットスタンバイとウォームスタンバイを使用しています。
> つまりストリーミングレプリケーションを使っていない状態です。

ログシッピング (アーカイブリカバリ) + ホットスタンバイですね。

> 現在スタンバイDBにはどのアーカイブログまで
> リストアできているのかを判断する方法を探しています。

プライマリサーバで pg_current_xlog_location 関数を実行すると、現在のト
ランザクションログの書き込み位置が分かります。

=# select pg_current_xlog_location();
 pg_current_xlog_location
--------------------------
 0/8CC51F0
(1 row)

スタンバイサーバで pg_last_xlog_replay_location 関数を実行すると、適用
された最後のトランザクションログの位置が分かります。

=# select pg_last_xlog_replay_location();
 pg_last_xlog_replay_location
------------------------------
 0/8000000
(1 row)

これらのトランザクションログの位置の差 = 同期の遅れをバイト単位で取り出
すには pg_xlog_location_diff 関数を実行します。

=# select pg_xlog_location_diff('0/8CC51F0', '0/8000000');
 pg_xlog_location_diff
-----------------------
              13390320
(1 row)

そのほかにもスタンバイサーバでどこまでトランザクションログを受けとった
かを調べる関数などもあります。詳しくは以下のページを読んでみてください。

  9.26. システム管理関数
  http://www.postgresql.jp/document/9.3/html/functions-admin.html

> たとえば、何らかのSQLでリストア済みアーカイブログのxidがわかって、
> さらに何らかのSQLでxidとアーカイブログのファイル名の紐付きがわかれば
> うれしいと思っています。
> 
> 良い方法をご存知の方はいらっしゃいませんか。
> 
> 不足している情報などがございましたら
> ご指摘ください。


----
Tomoaki Sato <sato @ sraoss.co.jp>
SRA OSS, Inc. Japan


pgsql-jp メーリングリストの案内