全部產品
Search
文件中心

PolarDB:polar_create_table_with_full_replica_identity

更新時間:Jul 06, 2024

當您通過邏輯複製的方式將PolarDB PostgreSQL版中的無主鍵表同步到其它資料庫時,可能導致該表上的操作報錯,您可以通過設定polar_create_table_with_full_replica_identity參數解決該問題。

PolarDB PostgreSQL版的邏輯複製採用“發布-訂閱”模式,可以將發布端的操作以類似SQL的形式在訂閱端執行,達到資料同步的目的。為了在訂閱端標識待更新或刪除的資料,發布端需要配置表的複製標識。

複製標識支援以下幾種類型:

  • 主鍵
  • 唯一索引
  • FULL(整行資料)

複製標識預設為主鍵,如果一個沒有主鍵的表進行邏輯複製,會出現變更操作報錯的情況,從而影響業務的正常運行。報錯資訊如下所示:

ERROR:  cannot delete from table "polardb_test" because it does not have a replica identity and publishes deletes
HINT:  To enable deleting from the table, set REPLICA IDENTITY using ALTER TABLE.
重要 當您使用邏輯複製(例如使用DTS進行資料同步)時,需要確保所有待同步的無主鍵表的複製標識均已設定為FULL

PolarDB PostgreSQL版提供了如下兩種方式將表的複製標識修改為FULL

  • 將現有表的複製標識修改為FULL,修改命令如下:
    ALTER TABLE <table_name> REPLICA IDENTITY FULL;
  • polar_create_table_with_full_replica_identity參數設定為on即可將建立表的預設複製標識設定為FULL