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

佐藤将道 masamichi_sato @ ydc.co.jp
2014年 11月 14日 (金) 16:49:52 JST


佐藤様

お世話になります。佐藤です。

ご回答ありがとうございました。
お礼の返信がかなり遅くなりまして申し訳ありません。

教えて頂いた情報に加え、pg_xlogfile_name()を使用して
未適用のトランザクションログファイル名を割り出すことで、
やろうとしていたことが実現できそうです。本当に助かりました。
ありがとうございました。


以上、宜しくお願い致します。


2014年9月22日 19:38 Tomoaki Sato <sato @ sraoss.co.jp>:
> 佐藤です。
>
>> 佐藤と申します。
>>
>> 初投稿ですので、失礼がありましたらご指摘ください。
>>
>> 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 メーリングリストの案内