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

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

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

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

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

您可以使用各種參數來設定pgactive擴充功能。這些參數可以透過 AWS Management 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 套用工作者的遞交行為。當 disabled(off) 時,套用工作者會執行非同步遞交,這可在套用操作期間改善 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。此參數接受時間單位。例如,您可以將其設定為 10 秒,持續 10 秒。在此等待期間,系統會嘗試取得 DDL 鎖定,同時等待進行中的寫入交易遞交或轉返。如需詳細資訊,請參閱 DDL 鎖定。

pgactive.ddl_lock_timeout

milliseconds

-1

指定 DDL 鎖定嘗試等待多久才能取得鎖定。預設值為 -1,使用 lock_timeout 中指定的值。您可以使用 10 秒等時間單位設定此參數,持續 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 workers。

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

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

注意

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

pgactive.do_not_replicate

boolean

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

注意

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

pgactive.discard_mismatched_row_attributes

boolean

此參數僅供專家使用。我們建議只在疑難排解特定複寫問題時才使用此參數。在下列情況下使用此參數:

  • 傳入複寫串流包含的資料列資料欄多於本機資料表。

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

此設定會覆寫下列錯誤訊息,並允許出現資料差異,讓複寫繼續: 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 函數。