Compatibility changes#

概要#

PGDバージョン6.4には、5.xおよびその他の以前のバージョンと互換性のない変更がいくつかあります。 4.xのユーザーの場合、 version 5.x compatibility の変更は引き続き適用されます。

接続マネージャー#

PGD 6では、 PGD 5のプロキシソリューションを、バックグラウンドワーカーを使用して緊密に統合されたアプローチで置き換える新しい接続マネージャーを導入し、PGDの読み書き、読み取り専用、およびhttpステータスネットワークインターフェイスを公開します。これは、管理する個別のPGD-プロキシインスタンスがなくなり、接続マネージャーがグループ構成を使用するため、古いプロキシ機能がすべて削除されたことを意味します。

さらに、 bdr.proxy_conifg テーブルとbdr.proxy_config_summary ビューが削除されました。接続マネージャーの構成にbdr.node_group_config_summary を使用する必要があります。これには、ルーティングを含む他のすべてのグループ設定も含まれます。

詳細については、 Connection Manager Authentication を参照してください。

DDLロックの変更#

新しいグローバルロックタイプddl_locking = leader があり、グローバルDMLロックの代わりにデフォルトでPGDバージョン6.4で使用されます。このロックにより、テーブルがすべてのグループリーダーですべてのノードではなくで排他的にロックされます。 LOCK TABLE およびTRUNCATE TABLE は、デフォルトでこの新しいロックタイプを使用するようになりましたデフォルトの動作がオリジンノードの外部でロックしない前に。

LOCK TABLE は、 ACCESS SHARE 、ROW SHARE 、ROW EXCLUSIVE 、SHARE UPDATE EXCLUSIVE にDDLロックを使用し、SHARE ROW EXCLUSIVE 、EXCLUSIVE 、およびACCESS EXCLUSIVE にDMLロックを使用するようになりました。これは、 SHARE+ はDMLをブロックしますが、下位レベルはブロックしないことを意味しますこれは、Postgresでこれらのレベルが動作する方法とより密接に連携しています。 LOCK TABLE は、常にDMLロックを使用していました。

結合/部分動作#

ファンクションとノードの状態の変更#

bdr.part_node の場合

  • wait_for_completion はローカルノードで動作します

  • force オプションは非推奨であり、bdr.drop_node(force:=true) と同じ動作をします。

bdr.drop_node の場合

  • cascade オプションは削除されました

  • force は、常に即時にノードをローカルにドロップし、以前のカスケード動作も想定するようになりました

bdr.join_node_group の場合

  • pause_in_standby オプションは削除されました

  • ノードがスタンバイかどうかは、 bdr.create_node の実行時にnode_kind によって決定されます

新しいノード状態PART_CLEANUP が追加されました。これは、グループスロットが分離ノードに関連するレコードを通過するのを待機し、ノードに関連する元のレコードをクリーンアップします。

シーケンス変換#

PGDクラスターを作成するときに、既存の Sequences は分散されたものに自動的に変換されます。

ノードを分割するとドロップします#

ノードが分離されると、最終的にドロップされ、分離の最後にノードはPARTED 状態では表示されません。したがって、ノードがPARTED 状態に到達するのを待機するスクリプトは変更が必要になる場合があります。また、このオペレーションは、一貫性を保証するために分割ノードからの最後のトランザクションのすべてのクロスのグループスロットまで待機するため、以前のバージョンよりも時間がかかる場合があります。

管理機能の変更#

  • enable_proxy_routing ノードグループオプションはenable_routing になりましたが、 bdr.alter_node_group_option は下位互換性のため古い構文をサポートしています。ビューには、新しい名前のみが表示されます。

  • すでに非推奨であるbdr.alter_node_group_config() は削除されました。代わりにbdr.alter_node_group_option() を使用してください。

  • bdr.autopartition() のmanaged_locally オプションは削除されました。ローカルに管理されるパーティションのみがサポートされるようになりました。同時にap_is_local はbdr.autopartition_rules カタログから削除されました。

その他#

レプリカID#

  • レプリカIDはデフォルトでFULLになりました。

  • これにより、ノードのクラッシュと復旧にわたる挿入、更新、および削除間の競合検出におけるいくつかのエッジケースが削除されます。

すべての書き込みで実行#

  • Run on (all) writeはレプリケートされなくなりました。

  • bdr.xact_replicate はデフォルトでoff に設定され、run on (all) nodesコマンドを介して送信されるコマンドのレプリケーションでの偶発的な問題の可能性が減少します。

  • 一部のログメッセージを理解しやすいように言い換えました。

  • 一部の内部ログメッセージのログレベルがLOG からDEBUG に低下したため、ログに表示されない場合があります。

一般的なUIの改善#

  • ’pglogical’を含まないように名前変更されたワーカー

  • 以前に非推奨だった構成パラメーターGUCが削除されましたこれには、たとえば、pg論理的なプレフィックスが付いているすべてのGUCが含まれます。

  • デフォルトでは、競合はPostgresログまたはconflict_history テーブルのいずれにもログに記録されません

デフォルトの変更#

グローバルロックタイムアウト#

bdr.global_lock_timeout は、デフォルトで1分に設定されています。

自動同期#

bdr.enable_auto_sync_reconcile はデフォルトでONに設定されています。この機能は 自動同期との関係 で文書化されています。これにより、ダウンノードからの変更を他のすべてのノードと同期できます。