設定 pgactive 延伸模組的參數設定 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定 pgactive 延伸模組的參數設定

您可以使用下列查詢來檢視與 pgactive 延伸模組相關聯的所有參數。

app=> SELECT * FROM pg_settings WHERE name LIKE 'pgactive.%';

您可以使用各種參數來設定 pgactive 延伸模組。這些參數可以透過 the console 或 AWS CLI 介面設定。

主要 pgactive 延伸模組參數

下表提供 pgactive 延伸模組主要參數的參考:

參數

單位

預設

描述

pgactive.conflict_logging_include_tuples

boolean

記錄 pgactive 延伸模組的完整元組資訊。

注意

需要重新啟動伺服器,變更才會生效。

pgactive.log_conflicts_to_table

boolean

決定 pgactive 延伸模組是否將偵測到的衝突記錄到 pgactive.pgactive_conflict_history 資料表。如需詳細資訊,請參閱衝突記錄以取得詳細資訊。

注意

需要重新啟動伺服器,變更才會生效。

pgactive.log_conflicts_to_logfile

boolean

決定 pgactive 延伸模組是否將偵測到的衝突記錄到 PostgreSQL 日誌檔案。如需詳細資訊,請參閱衝突記錄以取得詳細資訊。

注意

需要重新啟動伺服器,變更才會生效。

pgactive.synchronous_commit

boolean

off

決定 pgactive 套用工作者的遞交行為。當停用 (關閉) 時,套用工作者會執行非同步遞交,這可在套用操作期間改善 PostgreSQL 輸送量,但會延遲對上游的重新執行確認。將其設定為 off 一律是安全的,不會導致交易遺失或略過。此設定只會影響下游節點上磁碟排清的時間,以及確認傳送至上游的時間。系統會延遲傳送重新執行排清確認,直到透過檢查點或定期工作等不相關的操作將遞交排清至磁碟為止。不過,如果上游在 synchronous_standby_names 中列出下游,則將其設定為 off 會導致上游的同步遞交需要更長的時間才能向用戶端報告成功。在此案例中,請將參數設定為 on

注意

即使此參數設為 on 且節點列在 synchronous_standby_names 中,在主動-主動組態中仍可能發生複寫衝突。這是因為系統缺少節點間鎖定和全域快照管理,允許不同節點上的並行交易修改相同的元組。此外,交易只有在上游節點上遞交之後才會開始複寫。啟用同步遞交不會將 pgactive 延伸模組轉換為始終一致的系統。

pgactive.temp_dump_directory

string

定義初始設定期間資料庫複製操作所需的臨時儲存路徑。此目錄必須可由 postgres 使用者寫入,並且有足夠的儲存空間來包含完整的資料庫傾印。系統只會在具有邏輯複製操作的初始資料庫設定期間使用此位置。pgactive_init_copy command 不會使用此參數。

pgactive.max_ddl_lock_delay

milliseconds

-1

指定強制中止並行寫入交易之前 DDL 鎖定的等待時間上限。預設值為 -1,採用 max_standby_streaming_delay 中設定的值。此參數接受時間單位。例如,您可以將其設定為 10s,代表 10 秒。在此等待期間,系統會嘗試取得 DDL 鎖定,同時等待進行中的寫入交易遞交或復原。如需詳細資訊,請參閱「DDL 鎖定」。

pgactive.ddl_lock_timeout

milliseconds

-1

指定 DDL 鎖定嘗試等待多久才能取得鎖定。預設值為 -1,使用 lock_timeout 中指定的值。您可以使用時間單位設定此參數,例如 10s,代表 10 秒。此計時器只會控制取得 DDL 鎖定的等待期間。一旦系統取得鎖定並開始 DDL 操作,計時器就會停止。此參數不會限制可保留 DDL 鎖定的持續時間總計或整體 DDL 操作時間。若要控制操作的持續時間總計,請改用 statement_timeout。如需詳細資訊,請參閱「DDL 鎖定」。

pgactive.debug_trace_ddl_locks_level

boolean

覆寫 pgactive 延伸模組中 DDL 鎖定操作的預設偵錯日誌層級。設定時,此設定會導致 DDL 鎖定相關的訊息在 LOG 偵錯層級發出,而不是其預設層級。使用此參數來監控 DDL 鎖定活動,而無需在整個伺服器上啟用詳細 DEBUG1DEBUG2 日誌層級。

可用日誌層級,依詳細程度增加:

  • - DDL 鎖定訊息僅顯示在 DEBUG1 和較低的伺服器日誌層級。

  • 陳述式 - 新增 DDL 鎖定取得嘗試的 LOG 輸出。

  • acquire_release - 記錄遠端 DDL 鎖定的鎖定取得、釋放、拒絕事件和對等節點應用程式。

  • 對等 - 提供對等節點之間 DDL 鎖定交涉的其他詳細資訊。

  • 偵錯 - 在 LOG 層級記錄所有 DDL 鎖定相關活動。

如需監控選項的詳細資訊,請參閱「監控全域 DDL 鎖定」。

注意

當您重新載入組態時,此設定的變更會生效。您不需要重新啟動伺服器。

其他 pgactive 延伸模組參數

下表顯示 pgactive 延伸模組可用的較不常用和內部組態選項。

參數

單位

預設

描述

pgactive.debug_apply_delay

integer

為在其 pgactive.pgactive_connections 項目中沒有明確套用延遲的已設定連線設定套用延遲 (以毫秒為單位)。此延遲是在節點建立或聯結時間期間設定,且 pgactive 在遞交後至少經過指定的毫秒數之前,不會在對等節點上重新執行交易。

主要用於在測試環境中模擬高延遲網路,以更輕鬆地建立衝突。例如,在節點 A 和 B 上延遲 500 毫秒的情況下,在節點 A 上插入值後,您有至少 500 毫秒的時間在節點 B 上執行衝突的插入。

注意

需要重新載入伺服器或重新啟動套用工作者才能生效。

pgactive.connectability_check_duration

integer

指定資料庫工作者在失敗嘗試期間嘗試建立連線的持續時間 (以秒為單位)。工作者會每秒進行一次連線嘗試,直到連線成功或達到此逾時值為止。當資料庫引擎在工作者準備好建立連線之前啟動時,此設定很有用。

pgactive.skip_ddl_replication

boolean

on

在已啟用 pgactive 的情況下,控制在 Amazon RDS 中複寫或處理 DDL 變更的方式。設定為 on 時,節點會像非 pgcctive 節點一樣處理 DDL 變更。使用此參數時適用以下要求:

  • 如果新節點的 skip_ddl_replication 值與上游節點不同,則無法加入 pgactive 群組。

  • 如果現有節點的參數值與上游節點不相符,則無法啟動 pgactive 工作者。

  • 所有 pgactive 成員必須使用相同的參數值。

您可以使用兩種超級使用者權限來修改此參數:全域、本機 (工作階段層級)。

注意

不正確地變更此參數可能會中斷複寫設定。

pgactive.do_not_replicate

boolean

此參數僅供內部使用。當您在交易中設定此參數時,變更不會複寫至資料庫叢集中的其他節點。

注意

不正確地變更此參數可能會中斷複寫設定。

pgactive.discard_mismatched_row_attributes

boolean

此參數僅供專家使用。建議您只在針對特定複寫問題進行疑難排解時,才使用此參數。在下列情況時使用此參數:

  • 傳入複寫串流包含的資料列具有比本機資料表更多的資料欄。

  • 這些遠端資料列包含非 null 值。

此設定會覆寫下列錯誤訊息,並允許出現資料差異,讓複寫繼續:cannot right-pad mismatched attributes; attno %u is missing in local table and remote row has non-null, non-dropped value for this attribute

注意

不正確地變更此參數可能會中斷複寫設定。

pgactive.debug_trace_replay

boolean

設定為 on 時,它會針對下游套用工作者程序的每個遠端動作發出日誌訊息。日誌包括:

  • 變更類型

  • 受影響的資料表名稱

  • 自交易開始以來的變更數量

  • 交易遞交 LSN

  • 遞交時間戳記

  • 上游節點識別符

  • 轉送節點識別符 (如適用)

日誌也會擷取排入佇列的 DDL 命令和資料表捨棄。

para>

根據預設,日誌不包含資料列欄位內容。若要在日誌中包含資料列值,您必須重新編譯並啟用下列旗標:

  • VERBOSE_INSERT

  • VERBOSE_UPDATE

  • VERBOSE_DELETE

注意

啟用此記錄設定可能會影響效能。建議您僅在需要進行疑難排解時啟用它。當您重新載入組態時,此設定的變更會生效。您不需要重新啟動伺服器。

pgactive.extra_apply_connection_options

您可以為具有 pgactive 節點的所有對等節點連線設定連線參數。這些參數會控制保持連線和 SSL 模式等設定。根據預設,pgactive 會使用下列連線參數:

  • connect_timeout=30

  • keepalives=1

  • keepalives_idle=20

  • keepalives_interval=20

  • keepalives_count=5

若要覆寫預設參數,請使用下列類似命令:

pgactive.extra_apply_connection_options = 'keepalives=0'

個別節點連線字串優先於這些設定和 pgactive 的內建連線選項。如需連線字串格式的詳細資訊,請參閱 libpq 連線字串

建議您保持預設保持連線設定為啟用狀態。只有在大型交易透過不可靠的網路完成時遇到問題的情況下,才停用保持連線。

注意

建議您保持預設保持連線設定為啟用狀態。只有在大型交易透過不可靠的網路完成時遇到問題的情況下,才停用保持連線。當您重新載入組態時,此設定的變更會生效。您不需要重新啟動伺服器。

pgactive.init_node_parallel_jobs (int)

指定 pg_dumppg_restore 可在與 pgactive.pgactive_join_group 函數的邏輯節點聯結期間使用的平行任務數目。

當您重新載入組態時,此設定的變更會生效。您不需要重新啟動伺服器。

pgactive.max_nodes

int

4

指定 pgactive 延伸模組群組中允許的節點數目上限。預設值為 4 個節點。設定此參數的值時,您必須考量下列事項:

  • pgactive 延伸模組群組中的所有節點都必須使用相同的參數值。

  • 如果新節點的參數值與上游節點不同,則無法加入。

  • 如果現有節點的參數值與上游節點不同,則無法啟動 pgactive 延伸模組工作者。

  • 較大的群組需要額外的監控和維護工作,因此要明智地使用此參數的值。

您有兩種方式可以設定此參數:在組態檔案中,使用 ALTER SYSTEM SET 命令

此參數的預設值為 4,表示 pgactive 延伸模組群組在任何時間點最多可以有 4 個節點。

注意

變更會在您重新啟動伺服器後生效。

pgactive.permit_node_identifier_getter_function_creation

boolean

此參數僅供內部使用。啟用時,pgactive 延伸模組允許建立 pgactive 節點識別符 getter 函數。