除錯和其他工具

本頁面包含可協助偵錯及使用 PostgreSQL 的指令碼。

遷移非主鍵資料表的 UPDATE 和 DELETE 作業

如果資料表沒有主鍵,在標準遷移作業中,資料庫遷移服務支援在變更資料擷取 (CDC) 階段遷移初始快照和 INSERT 陳述式。不過,在標準遷移作業中,系統不會自動複製非主鍵資料表的 UPDATE 和 DELETE 陳述式 (快速啟動遷移作業支援在設定 REPLICA IDENTITY 時複製 UPDATE 和 DELETE 作業)。

如要偵測並手動同步處理標準遷移作業中缺少的 UPDATE 和 DELETE 作業,請完成下列各節中的程序。

偵測來源和 AlloyDB for PostgreSQL 目的地叢集之間缺少的資料

  1. 找出來源資料庫中沒有主鍵的資料表:
    SELECT tab.table_schema,
           tab.table_name
    FROM information_schema.tables tab
    LEFT JOIN information_schema.table_constraints tco 
              ON tab.table_schema = tco.table_schema
              AND tab.table_name = tco.table_name 
              AND tco.constraint_type = 'PRIMARY KEY'
    WHERE tab.table_type = 'BASE TABLE'
          AND tab.table_schema NOT IN ('pg_catalog', 'information_schema', 'pglogical')
          AND tco.constraint_name IS NULL
    ORDER BY table_schema,
             table_name;
  2. 啟動遷移工作前,請先記錄所有無主鍵資料表的修改統計資料:
    SELECT schemaname,
           relname,
           n_tup_ins,
           n_tup_upd,
           n_tup_del
    FROM pg_stat_user_tables
    WHERE schemaname NOT IN ('pglogical', 'pg_catalog', 'information_schema');
    其中:
    • n_tup_ins:插入的資料列數
    • n_tup_upd:更新的資料列數量 (包括 HOT 更新的資料列)
    • n_tup_del:刪除的資料列數
  3. 將這些基準統計資料儲存至資料表或檔案。
  4. 完成遷移設定後,請先再次執行查詢,再推送遷移工作。
  5. 比較初始統計資料與最新統計資料。如果 n_tup_upd 或 n_tup_del 在遷移期間有所變更,則來源端發生的更新或刪除作業不會由 CDC 擷取。

手動將資料從來源遷移至目的地 AlloyDB for PostgreSQL 叢集

如果發現沒有主鍵的資料表有差異,可以使用下列任一選項同步處理資料:

  • 方法 1:使用核對和查詢或差異指令碼,手動比較來源資料庫和目的地 AlloyDB for PostgreSQL 叢集之間的資料,並針對不同的記錄執行適當的 SQL 更新。
  • 方法 2:在應用程式維護轉換期間,特別針對沒有主鍵的資料表執行 pg_dump 和 pg_restore。
  • 方法 3:使用 PostgreSQL COPY 指令匯出及匯入資料表資料。詳情請參閱 PostgreSQL 說明文件。