針對 Postgre 資料庫執行個體開啟 Aurora Postgre SQL 資料庫叢集RDS查詢記錄 SQL - Amazon Aurora

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

針對 Postgre 資料庫執行個體開啟 Aurora Postgre SQL 資料庫叢集RDS查詢記錄 SQL

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

參數 預設 描述

log_connections

記錄每個成功連線。若要了解如何使用此參數搭配 log_disconnections 來偵測連線流失,請參閱 管理 Aurora 波斯特格SQLRDS連接流失

log_disconnections

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

log_checkpoints

1

記錄每個檢查點。

log_lock_waits

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

log_min_duration_sample

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

log_min_duration_statement

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

log_statement

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

log_statement_sample_rate

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

log_statement_stats

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

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

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

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

log_statement

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

全部

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

DDL

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

MOD

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

沒有SQL語句被記錄。建議您使用此設定,以避免在日誌中暴露密碼的風險。

log_min_duration_statement

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

–1–2147483647

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

設定查詢記錄

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

  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 主控台中檢視 Postgre SQL 資料庫執行個體的 Aurora 集RDS的日誌檔。

    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,建議您採取下列一或多個步驟。

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

  • 對於 Postgre SQL 資料庫叢集,請設定並使用郵件SQL稽核 () pgAudit 延伸模組。此擴充功能會編輯傳送至記錄CREATE的ALTER陳述式中的敏感資訊。如需詳細資訊,請參閱用 pgAudit 來記錄資料庫活動

  • 限制對 CloudWatch 日誌的訪問。

  • 使用更強大的驗證機制,例如IAM.