積極的なタプル凍結を実行しても影響の少ない、業務負荷の低い時間帯を決定します。
積極的なタプル凍結を実施するスクリプトを複製し、接続情報、多重度、タイムアウト値のパラメータを設定します。
ストリーミングレプリケーション構成の場合は、PGHOST、PGPORTに接続先を複数記載し、PGTARGETSESSIONATTRSに“read-write”または“primary”を指定してプライマリサーバに接続するように設定してください。
スクリプトは、Fujitsu Enterprise Postgresのインストールディレクトリ配下の以下に格納されています。
インストールディレクトリ/share/execute_freeze.sh.sample
手順2.のスクリプトをジョブスケジューラに登録します。
計画した時間帯に合わせて実行タイミングを指定してください。
例: cronを利用し、execute_freeze.shというスクリプトを午前2時5分に実行する
5 2 * * 0 sh /path/to/execute_freeze.sh
スケジュールの見直しが必要な場合
積極的なタプル凍結のスケジュール後も、引き続きトランザクションIDの使用量の推移を監視します。凍結処理が間に合っていないと判断した場合は、スケジュールの見直しが必要です。見直しに必要な統計情報を収集するため、以下の手順で積極的なタプル凍結のための拡張機能を有効化します。
postgresql.confのshared_preload_librariesパラメータを修正
shared_preload_libraries = 'pgx_stat_vacuum_freeze'
以下のSQLを実行
SELECT datname FROM pg_database WHERE datallowconn = true;
出力されるデータベースすべてに対して以下のCREATE EXTENSIONを実行し、拡張を定義
CREATE EXTENSION pgx_stat_vacuum_freeze;
トランザクションIDの使用量の推移を監視し、凍結処理が間に合っていないと判断した場合は、“9.7.3 積極的なタプル凍結の割当て時間のチューニング”を参照してタプル凍結に必要な時間を算出し、割当て時間を追加してください。