全部產品
Search
文件中心

Database Autonomy Service:搜尋(審計)

更新時間:Jul 27, 2024

資料庫自治服務DAS提供搜尋(審計)功能,查詢並匯出SQL語句對應的各種資訊,本文介紹如何在SQL洞察和審計中使用搜尋功能。

重要

如果您開通了DAS企業版 V3,搜尋功能將更名為審計功能。

前提條件

注意事項

  • 日誌列表中SQL語句的狀態成功時,只表示該條SQL執行成功且沒有異常。例如,發生交易回復時,事務中的單條SQL執行成功且沒有異常,那麼日誌列表中該條SQL的狀態會標識為成功

  • 對於RDS MySQLPolarDB MySQL版執行個體,由於串連可能會被複用,所以日誌列表中顯示的IP地址和連接埠,可能會與用戶端實際的IP地址和連接埠不一致。詳情請參見RDS MySQL串連池PolarDB MySQL版串連池

  • SQL日誌中記錄的SQL語句最大長度為8192位元組,超過部分不再記錄。其中RDS MySQLPolarDB MySQL版執行個體記錄的SQL語句最大長度受參數控制:

    • 當參數取值小於等於8192位元組時,SQL語句最大長度為參數設定值,超過部分不再記錄。由於資訊採集處理時會增加首碼標註,實際記錄的SQL語句最大長度略小於參數設定值。

    • 當參數取值大於8192位元組時,SQL語句最大長度為8192位元組,超過部分不再記錄。由於資訊採集處理時會增加首碼標註,實際記錄的SQL語句最大長度略小於8192位元組。

    說明
    • RDS MySQLPolarDB MySQL版的5.6、5.7版本由loose_rds_audit_max_sql_size參數控制記錄長度。

    • RDS MySQLPolarDB MySQL版的8.0版本由loose_rds_audit_log_event_buffer_size參數控制記錄長度。

  • 開啟高級查詢時,當資料庫執行個體的版本滿足如下要求時,支援使用事務ID進行查詢。

    • RDS MySQL的大版本為8.0且小版本大於等於20210311,並且查詢前需將loose_rds_audit_log_version參數值設為MYSQL_V3。詳見RDS MySQL 8.0開放參數一覽表

    • PolarDB MySQL版的版本大於等於8.0.1.1.15。

操作步驟

  1. 登入DAS控制台

  2. 在左側導覽列中,單擊執行個體監控

  3. 找到目標執行個體,單擊執行個體ID,進入目標執行個體詳情頁。

  4. 在左側導覽列單擊SQL洞察和審計,然後在右側開啟的頁面單擊搜索,設定如下參數作為查詢條件。

    如果您開通了DAS企業版 V3,請在右側開啟的頁面單擊審計

    參數

    說明

    時間範圍

    根據實際需要選取查詢的時間範圍。

    線上查詢時間範圍最多為24小時,您可以在資料庫執行個體SQL資料存放區時間長度範圍內設定任意的查詢開始時間,查看最多24小時的資料。這是因為SQL洞察記錄所有資料庫行為,會記錄大量SQL語句,線上查詢選擇時間範圍過大,會導致長時間沒有返回查詢結果,甚至查詢逾時。

    說明
    • 只能查詢開啟DAS企業版後且在SQL資料存放區時間長度範圍內的資料。

    • 如果需要查詢更大時間範圍的SQL記錄,請您匯出後進行查詢。匯出功能會非同步匯出日誌,適合大時間範圍內的查詢。

    • 當SQL洞察和審計的資料採用冷熱混合儲存時,當前只支援查詢和匯出最多24小時的資料。

    關鍵字

    可多欄位組合查詢,不支援模糊查詢,欄位間以空格分隔。

    說明

    查詢的關鍵字至少包含4個字元。

    使用者

    使用者名稱,可組合查詢,如:user1 user2 user3。

    資料庫

    可組合查詢,如:DB1 DB2 DB3。

    操作類型

    選擇需要查詢的操作類型,可多選。

    說明

    您可開啟高級查詢輸入更多資訊以縮小搜尋範圍。

  5. 單擊查詢,即可看到日誌列表SQL語句的具體資訊。

    您可單擊匯出,勾選需要的匯出欄位匯出SQL記錄。通過設定匯出時間範圍來匯出更大時間範圍的SQL記錄。

    對於採用冷熱混合儲存的SQL洞察和審計,匯出資料時,請選擇SQL日誌中不包含的CSV分隔字元,並參見設定並開啟匯出的CSV檔案,使匯出資料可以分列顯示。

    重要
    • 單次最多可匯出1000萬條資料。

    • 對於採用冷熱混合儲存的SQL洞察和審計,查詢或匯出冷儲存的資料時,系統會建立對應的查詢或匯出任務,您可以在工作清單頁面,查看任務進度及歷史任務。

    s

設定並開啟匯出的CSV檔案

當匯出的SQL日誌包含資料分隔字元時,使用Excel等工具開啟CSV檔案時可能會出現資料沒有分列顯示的現象。為了避免該問題,採用冷熱混合儲存的搜尋功能在匯出CSV檔案時,增加了可供選擇的CSV分隔字元。本文以Windows系統下的Excel 2019版為例,介紹如何設定CSV檔案,使匯出資料可以分列顯示。

  1. 建立匯出任務時,在提示介面,選擇SQL日誌中不包含的分隔字元,例如$

    image..png

  2. 使用Excel工具開啟匯出的CSV檔案。

  3. 選中需要分列顯示的資料,在Excel工具列中選擇資料 > 分列

  4. 文本分列嚮導未經處理資料類型地區,選擇分隔字元號,單擊下一步

  5. 分隔字元號地區,選擇其他並輸入$,單擊下一步

    資料預覽地區,可預覽分列的效果。

  6. 列資料格式地區,選擇常規,單擊完成

常見問題

Q:為什麼RDS MySQLPolarDB MySQL版資料庫執行個體搜尋功能的日誌列表中,有些SQL語句實際有資料返回,但掃描行數顯示為0?

A:資料庫執行個體開啟了query_cache_type。日誌列表中,SQL語句的掃描行數統計的是在InnoDB引擎層掃描的行數,開啟query_cache_type後,MySQL會嘗試將查詢結果緩衝起來,如果後續有相同的查詢請求到來,且查詢快取命中,則不會再到InnoDB層進行查詢,直接返回緩衝結果。因此,實際有資料返回,但日誌列表中統計的掃描行數為0。

Q:為什麼無法查詢到RDS PostgreSQL執行個體中執行失敗的SQL?

A:對於RDS PostgreSQL執行個體,執行失敗的SQL會被記錄在執行個體的錯誤記錄檔中,而不會被記錄在審計日誌中。查詢執行個體的錯誤記錄檔請參見查看日誌

Q:為什麼日誌列表中展示的資料庫名稱和SQL語句中的不一致?

A:日誌列表中所展示的資料庫名稱是從會話中擷取的,而SQL語句中的資料庫名稱則由使用者指定,取決於使用者的輸入或查詢的設計,例如跨資料庫查詢、動態SQL等情境。兩者之間可能存在不一致的情況。

相關API

對於RDS MySQL、RDS PostgreSQL和RDS SQL Server資料庫執行個體,可以使用如下API介面查詢SQL日誌:

API

描述

DescribeSQLLogRecords

查詢RDS執行個體的SQL洞察(SQL審計)日誌。

DescribeSQLLogFiles

查詢SQL洞察(SQL審計)匯出檔案清單。