針對您的 Aurora PostgreSQL 資料庫叢集開啟查詢記錄 - Amazon Aurora

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

針對您的 Aurora PostgreSQL 資料庫叢集開啟查詢記錄

您可以設定下表中列出的一些參數,來收集有關資料庫活動的詳細資訊,包括查詢、等待鎖定的查詢、檢查點,以及許多其他詳細資訊。本主題著重於記錄查詢。

參數 預設 描述

log_connections

記錄每個成功連線。若要了解如何使用此參數搭配 log_disconnections 來偵測連線流失,請參閱 使用集區管理 Aurora PostgreSQL 連線流失

log_disconnections

記錄每個工作階段的結束及其持續時間。若要了解如何使用此參數搭配 log_connections 來偵測連線流失,請參閱 使用集區管理 Aurora PostgreSQL 連線流失

log_checkpoints

不適用於 Aurora PostgreSQL

log_lock_waits

記錄長鎖定等待。根據預設,不會設定此參數。

log_min_duration_sample

(毫秒) 設定執行時間下限,超出此時間就會記錄陳述式樣本。使用 log_statement_sample_rate 參數設定範例大小。

log_min_duration_statement

至少執行指定時間或更長時間的任何 SQL 陳述式都會被記錄下來。根據預設,不會設定此參數。開啟此參數可以協助您尋找未最佳化的查詢。

log_statement

設定已記錄的陳述式類型。依預設,不會設定此參數,但您可以將其變更為 allddlmod,以指定您要記錄的 SQL 陳述式類型。如果您針對這個參數指定了 none 以外的任何值,您也應該採取額外的步驟,以防止在日誌檔中暴露密碼。如需詳細資訊,請參閱降低使用查詢記錄時密碼暴露的風險

log_statement_sample_rate

超過要記錄之 log_min_duration_sample 中所指定時間的陳述式百分比,以介於 0.0 與 1.0 之間的浮點值表示。

log_statement_stats

將累積效能統計資訊寫入至伺服器日誌。

使用記錄來尋找執行緩慢的查詢

您可以記錄 SQL 陳述式和查詢,以協助尋找執行緩慢的查詢。您可以依照本節所述修改 log_statementlog_min_duration 參數中的設定來開啟此功能。在針對您的 Aurora PostgreSQL 資料庫叢集 開啟查詢記錄之前,您應該注意到日誌檔中可能暴露密碼,以及如何降低風險。如需詳細資訊,請參閱降低使用查詢記錄時密碼暴露的風險

接下來,您可以尋找有關 log_statementlog_min_duration 參數的參考資訊。

log_statement

此參數指定應該傳送至日誌的 SQL 陳述式類型。預設值為 none。如果您將此參數變更為 allddlmod,請務必套用建議的動作,以降低在日誌檔中暴露密碼的風險。如需詳細資訊,請參閱降低使用查詢記錄時密碼暴露的風險

全部

記錄所有陳述式。此設定是基於偵錯用途而建議的。

DDL

記錄所有資料定義語言 (DDL) 陳述式,例如 CREATE、ALTER、DROP 等。

MOD

記錄所有 DDL 陳述式和資料操作語言 (DML) 陳述式,例如 INSERT、UPDATE 和 DELETE),這些陳述式會修改資料。

不會記錄任何 SQL 陳述式。建議您使用此設定,以避免在日誌中暴露密碼的風險。

log_min_duration_statement

至少執行指定時間或更長時間的任何 SQL 陳述式都會被記錄下來。根據預設,不會設定此參數。開啟此參數可以協助您尋找未最佳化的查詢。

–1–2147483647

記錄陳述式之執行時間的毫秒數。

設定查詢記錄

這些步驟假設您的 Aurora PostgreSQL 資料庫叢集使用自訂資料庫叢集參數群組。

  1. log_statement 參數設為 all。下列範例顯示使用此參數設定寫入至 postgresql.log 檔案的資訊。

    2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: statement: SELECT feedback, s.sentiment,s.confidence FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s ORDER BY s.confidence DESC; 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: QUERY STATISTICS 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:DETAIL: ! system usage stats: ! 0.017355 s user, 0.000000 s system, 0.168593 s elapsed ! [0.025146 s user, 0.000000 s system total] ! 36644 kB max resident size ! 0/8 [0/8] filesystem blocks in/out ! 0/733 [0/1364] page faults/reclaims, 0 [0] swaps ! 0 [0] signals rcvd, 0/0 [0/0] messages rcvd/sent ! 19/0 [27/0] voluntary/involuntary context switches 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: SELECT feedback, s.sentiment,s.confidence FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s ORDER BY s.confidence DESC; 2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:ERROR: syntax error at or near "ORDER" at character 1 2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: ORDER BY s.confidence DESC; ----------------------- END OF LOG ----------------------
  2. 設定 log_min_duration_statement 參數。下列範例說明此參數設定為 postgresql.log 時寫入至 1 檔案的資訊:

    系統會記錄超過 log_min_duration_statement 參數中所指定持續時間的查詢。下列顯示一個範例。您可以在 Amazon RDS 主控台中檢視 Aurora PostgreSQL 資料庫叢集的日誌檔。

    2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: statement: DROP table comments; 2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: duration: 167.754 ms 2022-10-05 19:08:07 UTC::@:[355]:LOG: checkpoint starting: time 2022-10-05 19:08:08 UTC::@:[355]:LOG: checkpoint complete: wrote 11 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.013 s, sync=0.006 s, total=1.033 s; sync files=8, longest=0.004 s, average=0.001 s; distance=131028 kB, estimate=131028 kB ----------------------- END OF LOG ----------------------

降低使用查詢記錄時密碼暴露的風險

建議您保持 log_statement 設定為 none 以避免密碼暴露。如果您將 log_statement 設定為 allddlmod,建議您採取下列一或多個步驟。

  • 對於用戶端,請加密敏感資訊。如需的詳細資訊,請參閱 PostgreSQL 文件中的加密選項。使用 CREATEALTER 陳述式的 ENCRYPTED (和 UNENCRYPTED) 選項。如需詳細資訊,請參閱 PostgreSQL 文件中的 CREATE USER

  • 對於您的 Aurora 資料庫叢集,請設定並使用 PostgreSQL 稽核 (pgAudit) 擴充功能。此擴充功能會刪減傳送至日誌的 CREATE 和 ALTER 陳述式中的敏感資訊。如需詳細資訊,請參閱用 pgAudit 來記錄資料庫活動

  • 限制對 CloudWatch 日誌的存取。

  • 使用更強大的身分驗證機制,例如 IAM。