Conflict logging#
PGD 6.0以降、競合ログはデフォルトで有効になっていません。ノードごとに競合ログを有効にできます。これにより、特定のノードで発生した競合のログを記録できます。これは、デバッグやモニタリングの目的に役立ちます。
名前付けノードでこのコマンドを実行して、その特定のノードでのすべての競合のログを有効にします。すべてのノードでロギングを有効にする場合は、 PGDグループの各ノードでこのコマンドを実行します。
SELECT bdr.alter_node_set_log_config(`nodename`, false, true, NULL, NULL);
ノード名コントロールの後の他のパラメーターは、それぞれ、競合をPGDログファイルに記録するかどうか、および競合をbdr.conflict_history
テーブルに記録するかどうかを指定します。最後の2つのパラメーターは、ログに記録する競合タイプと競合の解決を指定する文字列の配列を受け取ります。両方の完全なリストについては、リファレンスセクションの Conflicts を参照してください。これらのパラメーターをNULL
に設定すると、PGDはすべての競合タイプと解決策をログに記録します。
PGDは、すべての競合のログをbdr.conflict_history
テーブルに記録します。
bdr.alter_node_set_log_config を使用して、この動作をより詳細に変更できます。
競合報告#
レポートのテーブルに記録された競合を要約できます。レポートにより、アプリケーションの所有者は競合を特定、理解、解決し、競合を防ぐためのアプリケーションの変更を導入できます。
SELECT nspname, relname
, date_trunc(day, local_time) :: date AS date
, count(*)
FROM bdr.conflict_history
WHERE local_time > date_trunc(day, current_timestamp)
GROUP BY 1,2,3
ORDER BY 1,2;
nspname | relname | date | count
- --------+---------+------------+-------
my_app | test | 2019-04-05 | 1
(1 row)