文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  設定稽核日誌特性

8.4.5.5 設定稽核日誌特性

本節說明如何設定稽核日誌特性,例如稽核日誌外掛程式寫入事件的檔案、寫入事件的格式、是否啟用日誌檔案壓縮與加密,以及空間管理。

如需有關影響稽核日誌的函數和系統變數的其他資訊,請參閱稽核日誌函數稽核日誌選項與變數

稽核日誌外掛程式也可以根據事件內容或事件來源帳戶來控制哪些稽核事件會寫入稽核日誌檔案。請參閱第 8.4.5.7 節「稽核日誌篩選」

稽核日誌檔案的命名慣例

若要設定稽核日誌檔案名稱,請在伺服器啟動時設定 audit_log_file 系統變數。預設名稱為伺服器資料目錄中的 audit.log。為了達到最佳安全性,請將稽核日誌寫入只有 MySQL 伺服器和有合法理由檢視日誌的使用者才能存取的目錄。

外掛程式會將 audit_log_file 值解譯為由選用的開頭目錄名稱、基本名稱和選用的後綴所組成。如果啟用壓縮或加密,則有效檔案名稱(實際用於建立日誌檔案的名稱)會與設定的檔案名稱不同,因為它有額外的後綴。

  • 如果啟用壓縮,外掛程式會新增 .gz 的後綴。

  • 如果啟用加密,外掛程式會加上 .pwd_id.enc 的後綴,其中 pwd_id 表示用於日誌檔案操作的加密密碼。稽核日誌外掛程式將加密密碼儲存在金鑰環中;請參閱加密稽核日誌檔案

有效的稽核日誌檔名是將適用的壓縮和加密後綴附加到已設定的檔名後所產生的名稱。例如,如果設定的 audit_log_file 值為 audit.log,則有效的檔名為下表中顯示的值之一。

已啟用的功能 有效檔名
無壓縮或加密 audit.log
壓縮 audit.log.gz
加密 audit.log.pwd_id.enc
壓縮,加密 audit.log.gz.pwd_id.enc

pwd_id 表示用於加密或解密檔案的密碼 ID。pwd_id 格式為 pwd_timestamp-seq,其中

  • pwd_timestamp 是以 YYYYMMDDThhmmss 格式表示密碼建立時間的 UTC 值。

  • seq 是一個序號。序號從 1 開始,並針對具有相同 pwd_timestamp 值的密碼遞增。

以下是一些 pwd_id 密碼 ID 值的範例

20190403T142359-1
20190403T142400-1
20190403T142400-2

為了建構用於將密碼儲存在金鑰環中的對應金鑰環 ID,稽核日誌外掛程式會在 pwd_id 值中加上 audit_log- 的前綴。對於剛才顯示的範例密碼 ID,對應的金鑰環 ID 為

audit_log-20190403T142359-1
audit_log-20190403T142400-1
audit_log-20190403T142400-2

目前稽核日誌外掛程式用於加密的密碼 ID 是具有最大 pwd_timestamp 值的密碼 ID。如果有多個密碼具有該 pwd_timestamp 值,則目前的密碼 ID 是具有最大序號的密碼 ID。例如,在上述密碼 ID 集中,其中兩個密碼具有最大的時間戳記 20190403T142400,因此目前的密碼 ID 是具有最大序號 ( 2) 的密碼 ID。

稽核日誌外掛程式會在初始化和終止期間根據有效的稽核日誌檔名執行某些動作

  • 在初始化期間,外掛程式會檢查是否已存在具有稽核日誌檔名的檔案,如果存在,則會重新命名該檔案。(在此情況下,外掛程式會假設先前的伺服器叫用在執行稽核日誌外掛程式的情況下意外結束。)然後,外掛程式會寫入新的空白稽核日誌檔案。

  • 在終止期間,外掛程式會重新命名稽核日誌檔案。

  • 檔案重新命名(無論是在外掛程式初始化或終止期間)均會按照自動大小型日誌檔案輪換的常用規則進行;請參閱手動稽核日誌檔案輪換

選取稽核日誌檔案格式

若要設定稽核日誌檔案格式,請在伺服器啟動時設定 audit_log_format 系統變數。以下格式可供使用

  • NEW:新式 XML 格式。這是預設值。

  • OLD:舊式 XML 格式。

  • JSON:JSON 格式。將稽核日誌寫為 JSON 陣列。只有此格式支援選用的查詢時間和大小統計資訊。

如需有關每個格式的詳細資訊,請參閱第 8.4.5.4 節,「稽核日誌檔案格式」

啟用稽核日誌刷新工作

MySQL Enterprise Audit 提供設定刷新間隔以自動處置記憶體中快取的功能。使用 audit_log_flush_interval_seconds 系統變數設定的刷新工作預設值為零,表示工作不會排定執行。

當工作設定為執行(值為非零)時,MySQL Enterprise Audit 會嘗試在其初始化時呼叫 排程器元件,並設定記憶體快取的定期、重複刷新。

  • 如果稽核日誌找不到排程器註冊服務的實作,則不會排定刷新並繼續載入。

  • 稽核日誌實作 dynamic_loader_services_loaded_notification 服務,並監聽 mysql_scheduler 的新註冊,以便稽核日誌可以將其排定的工作註冊到新載入的排程器中。

  • 稽核日誌只會將其自身註冊到第一個載入的排程器實作中。

同樣地,MySQL Enterprise Audit 會在其取消初始化時呼叫 scheduler 元件,並取消設定其排定的重複刷新。它會保留對排程器註冊服務的有效參考,直到取消註冊排定的工作為止,以確保在有使用中的排定工作時無法卸載 scheduler 元件。執行排程器及其工作的所有結果都會寫入伺服器錯誤日誌。

若要排定稽核日誌刷新工作

  1. 確認已載入並啟用 scheduler 元件。預設會啟用 (ON) 元件(請參閱component_scheduler.enabled)。

    SELECT * FROM mysql.components;
    +--------------+--------------------+----------------------------+
    | component_id | component_group_id | component_urn              |
    +--------------+--------------------+----------------------------+
    |            1 |                  1 | file://component_scheduler |
    +--------------+--------------------+----------------------------+
  2. 如果尚未安裝 audit_log 外掛程式,請安裝該外掛程式(請參閱第 8.4.5.2 節,「安裝或解除安裝 MySQL Enterprise Audit」)。

  3. 使用 audit_log_flush_interval_seconds 啟動伺服器,並將值設定為大於 59 的數字。值的上限因平台而異。例如,若要將刷新工作設定為每兩分鐘重複一次

    $> mysqld --audit_log_flush_interval_seconds=120

    如需詳細資訊,請參閱 audit_log_flush_interval_seconds 系統變數。

新增用於偵測離群值的查詢統計資訊

在 MySQL 9.0 中,您可以使用選用資料欄位擴充 JSON 格式的日誌檔案,以顯示查詢時間、傳送和接收的位元組數、傳回用戶端的列數和檢查的列數。此資料適用於慢速查詢日誌中的限定查詢,並且在稽核日誌的內容中,它也類似地有助於偵測活動分析的離群值。只有當稽核日誌採用 JSON 格式 (audit_log_format=JSON) 時,才能新增擴充資料欄位,而這不是預設設定。

查詢統計資訊會透過您設定為稽核日誌篩選功能的元件服務傳遞至稽核日誌。這些服務的名稱為 mysql_audit_print_service_longlong_data_sourcemysql_audit_print_service_double_data_source。您可以為每個輸出項目選擇任一資料類型。對於查詢時間,longlong 會輸出以微秒為單位的值,而 double 會輸出以秒為單位的值。

您可以使用 audit_log_filter_set_filter() 稽核日誌函式,將查詢統計資訊新增為 JSON 篩選語法的 service 元素,如下所示

SELECT audit_log_filter_set_filter('QueryStatistics',  
                                   '{ "filter": { "class": { "name": "general", "event": { "name": "status", "print" : '
                                   '{ "service": { "implementation": "mysql_server", "tag": "query_statistics", "element": [ '
                                   '{ "name": "query_time",     "type": "double" }, '
                                   '{ "name": "bytes_sent",     "type": "longlong" }, '
                                   '{ "name": "bytes_received", "type": "longlong" }, '
                                   '{ "name": "rows_sent",      "type": "longlong" }, '
                                   '{ "name": "rows_examined",  "type": "longlong" } ] } } } } } }');

若要填入 bytes_sentbytes_received 欄位,系統變數 log_slow_extra 必須設定為 ON。如果系統變數的值為 OFF,則會將 Null 值寫入這些欄位的日誌檔案。

如果您想要停止收集查詢統計資訊,請使用 audit_log_filter_set_filter() 稽核日誌函式來移除篩選器,例如

SELECT audit_log_filter_remove_filter('QueryStatistics');
壓縮稽核日誌檔案

可針對任何日誌記錄格式啟用稽核日誌檔案壓縮。

若要設定稽核日誌檔案壓縮,請在伺服器啟動時設定 audit_log_compression 系統變數。允許的值為 NONE(無壓縮;預設值)和 GZIP (GNU Zip 壓縮)。

如果同時啟用壓縮和加密,則會在加密之前進行壓縮。若要手動還原原始檔案,請先解密,然後再解壓縮。請參閱手動解壓縮和解密稽核日誌檔案

加密稽核日誌檔案

可針對任何日誌記錄格式啟用稽核日誌檔案加密。加密是根據使用者定義的密碼(稽核日誌外掛程式產生的初始密碼除外)。若要使用此功能,必須啟用 MySQL 金鑰環,因為稽核日誌記錄會使用它來儲存密碼。可以使用任何金鑰環元件或外掛程式;如需指示,請參閱第 8.4.4 節,「MySQL 金鑰環」

若要設定稽核日誌檔案加密,請在伺服器啟動時設定 audit_log_encryption 系統變數。允許的值為 NONE(無加密;預設值)和 AES (AES-256-CBC 密碼加密)。

若要在執行階段設定或取得加密密碼,請使用以下稽核日誌函式

  • 要設定目前的加密密碼,請調用 audit_log_encryption_password_set()。此函式會將新密碼儲存在金鑰環中。如果已啟用加密,它也會執行日誌檔輪換操作,重新命名目前的日誌檔,並開始使用該密碼加密的新日誌檔。檔案重新命名會根據自動大小型日誌檔輪換的常用規則進行;請參閱手動稽核日誌檔輪換

    如果 audit_log_password_history_keep_days 系統變數為非零值,則調用 audit_log_encryption_password_set() 也會導致舊的已封存稽核日誌加密密碼過期。如需稽核日誌密碼歷程記錄的相關資訊,包括密碼封存和過期,請參閱該變數的描述。

  • 要取得目前的加密密碼,請調用不帶參數的 audit_log_encryption_password_get()。要依 ID 取得密碼,請傳遞一個參數,指定目前密碼或已封存密碼的金鑰環 ID。

    要判斷有哪些稽核日誌金鑰環 ID 存在,請查詢 Performance Schema 的 keyring_keys 表格

    mysql> SELECT KEY_ID FROM performance_schema.keyring_keys
           WHERE KEY_ID LIKE 'audit_log%'
           ORDER BY KEY_ID;
    +-----------------------------+
    | KEY_ID                      |
    +-----------------------------+
    | audit_log-20190415T152248-1 |
    | audit_log-20190415T153507-1 |
    | audit_log-20190416T125122-1 |
    | audit_log-20190416T141608-1 |
    +-----------------------------+

如需稽核日誌加密函式的其他資訊,請參閱稽核日誌函式

當稽核日誌外掛程式初始化時,如果發現已啟用日誌檔加密,它會檢查金鑰環是否包含稽核日誌加密密碼。如果沒有,外掛程式會自動產生一個隨機的初始加密密碼,並將其儲存在金鑰環中。要發現此密碼,請調用 audit_log_encryption_password_get()

如果同時啟用壓縮和加密,則會在加密之前進行壓縮。若要手動還原原始檔案,請先解密,然後再解壓縮。請參閱手動解壓縮和解密稽核日誌檔案

手動解壓縮和解密稽核日誌檔

可以使用標準工具解壓縮和解密稽核日誌檔。這應該只針對已關閉(已封存)且不再使用的日誌檔進行,而不是針對稽核日誌外掛程式目前正在寫入的日誌檔。您可以透過已由稽核日誌外掛程式重新命名,在基本名稱後面的檔案名稱中包含時間戳記來識別已封存的日誌檔。

在此討論中,假設 audit_log_file 設定為 audit.log。在這種情況下,已封存的稽核日誌檔具有下表中顯示的其中一個名稱。

已啟用的功能 已封存的檔案名稱
無壓縮或加密 audit.timestamp.log
壓縮 audit.timestamp.log.gz
加密 audit.timestamp.log.pwd_id.enc
壓縮,加密 audit.timestamp.log.gz.pwd_id.enc

稽核日誌檔的命名慣例中所述,pwd_id 格式為 pwd_timestamp-seq。因此,已封存的加密日誌檔的名稱實際上包含兩個時間戳記。第一個表示檔案輪換時間,第二個表示建立加密密碼的時間。

考慮以下一組已封存的加密日誌檔名稱

audit.20190410T205827.log.20190403T185337-1.enc
audit.20190410T210243.log.20190403T185337-1.enc
audit.20190415T145309.log.20190414T223342-1.enc
audit.20190415T151322.log.20190414T223342-2.enc

每個檔案名稱都有唯一輪換時間戳記。相比之下,密碼時間戳記並非唯一

  • 前兩個檔案具有相同的密碼 ID 和序號(20190403T185337-1)。它們具有相同的加密密碼。

  • 後兩個檔案具有相同的密碼 ID (20190414T223342) 但序號不同 (12)。這些檔案具有不同的加密密碼。

要手動解壓縮壓縮的日誌檔,請使用 gunzipgzip -d 或對等命令。例如

gunzip -c audit.timestamp.log.gz > audit.timestamp.log

要手動解密加密的日誌檔,請使用 openssl 命令。例如

openssl enc -d -aes-256-cbc -pass pass:password -md sha256
    -in audit.timestamp.log.pwd_id.enc
    -out audit.timestamp.log

要執行該命令,您必須取得 password,即加密密碼。若要執行此操作,請使用 audit_log_encryption_password_get()。例如,如果稽核日誌檔名為 audit.20190415T151322.log.20190414T223342-2.enc,則密碼 ID 為 20190414T223342-2,而金鑰環 ID 為 audit-log-20190414T223342-2。像這樣擷取金鑰環密碼

SELECT audit_log_encryption_password_get('audit-log-20190414T223342-2');

如果稽核日誌同時啟用壓縮和加密,則會先進行壓縮,然後再進行加密。在這種情況下,檔案名稱會新增 .gz.pwd_id.enc 後綴,對應於這些操作發生的順序。若要手動還原原始檔案,請以相反順序執行操作。也就是說,先解密檔案,然後解壓縮

openssl enc -d -aes-256-cbc -pass pass:password -md sha256
    -in audit.timestamp.log.gz.pwd_id.enc
    -out audit.timestamp.log.gz
gunzip -c audit.timestamp.log.gz > audit.timestamp.log
稽核日誌檔的空間管理

稽核日誌檔有可能變得相當大,並消耗大量的磁碟空間。如果您正在收集選擇性的查詢時間和大小統計資料,這會增加空間需求。查詢統計資料僅支援 JSON 格式。

若要管理使用的空間,請使用下列方法

  • 日誌檔輪換。這涉及透過重新命名來輪換目前的日誌檔,然後使用原始名稱開啟新的目前日誌檔。可以手動執行輪換,或將其設定為自動發生。

  • 如果啟用自動輪換,則修剪旋轉的 JSON 格式日誌檔。可以根據日誌檔的期限或合併的日誌檔大小來執行修剪。

若要設定稽核日誌檔空間管理,請使用下列系統變數

注意

對於 JSON 格式的日誌檔,當在執行階段變更 audit_log_format_unix_timestamp 系統變數的值時,也會發生輪換。但是,這不是為了空間管理目的而發生的,而是為了使給定的 JSON 格式日誌檔中,檔案中的所有記錄都包含或不包含 time 欄位。

注意

輪換(重新命名)的日誌檔不會自動移除。例如,對於基於大小的日誌檔輪換,重新命名的日誌檔具有唯一的名稱,並且會無限期地累積。它們不會從名稱序列的末尾輪換掉。為避免過度使用空間

  • 對於 JSON 格式的日誌檔:如稽核日誌檔修剪中所述,啟用日誌檔修剪。

  • 否則:定期移除舊檔案,必要時先備份它們。如果備份的日誌檔已加密,也請將對應的加密密碼備份到安全的地方,以防您稍後需要解密這些檔案。

以下各節將更詳細地說明日誌檔輪換和修剪。

手動稽核日誌檔輪換

如果 audit_log_rotate_on_size 為 0 (預設值),則除非手動執行,否則不會發生日誌輪換。

若要手動輪換稽核日誌檔,請執行 SELECT audit_log_rotate(); 以重新命名目前的稽核日誌檔,並開啟新的稽核日誌檔。檔案會根據稽核日誌檔的命名慣例中描述的慣例進行重新命名。

需要 AUDIT_ADMIN 權限才能使用 audit_log_rotate() 函式。

管理已封存的日誌檔數量(已重新命名的檔案)以及它們使用的空間是一項手動工作,涉及從您的檔案系統中移除不再需要的已封存稽核日誌檔。

可以使用 audit_log_read() 函式讀取使用 audit_log_rotate() 函式重新命名的稽核日誌檔內容。

手動稽核日誌檔輪換(舊方法)
注意

audit_log_flush 變數和此稽核日誌檔輪換方法已過時;預計在未來版本的 MySQL 中會移除支援。

如果 audit_log_rotate_on_size 為 0 (預設值),則除非手動執行,否則不會發生日誌輪換。在這種情況下,當 audit_log_flush 的值從停用變更為啟用時,稽核日誌外掛程式會關閉並重新開啟日誌檔。日誌檔重新命名必須在伺服器外部完成。假設日誌檔名為 audit.log,並且您想要維護最近的三個日誌檔,依序使用 audit.log.1audit.log.3 的名稱。在 Unix 上,像這樣手動執行輪換

  1. 從命令列,重新命名目前的日誌檔

    mv audit.log.2 audit.log.3
    mv audit.log.1 audit.log.2
    mv audit.log audit.log.1

    此策略會覆寫目前的 audit.log.3 內容,限制封存的日誌檔數量及其使用的空間。

  2. 此時,外掛程式仍寫入已重新命名為 audit.log.1 的目前日誌檔。連線到伺服器並清除日誌檔,以便外掛程式關閉它並重新開啟新的 audit.log

    SET GLOBAL audit_log_flush = ON;

    audit_log_flush 很特別,因為它的值保持 OFF,因此您無需在再次啟用它以執行另一次清除之前明確停用它。

注意

如果啟用壓縮或加密,則日誌檔名會包含表示已啟用功能的後綴,以及啟用加密時的密碼 ID。如果檔名包含密碼 ID,請務必在您手動重新命名的任何檔案的名稱中保留該 ID,以便可以確定用於解密作業的密碼。

注意

對於 JSON 格式的記錄,手動重新命名稽核日誌檔會使其無法用於日誌讀取函數,因為稽核日誌外掛程式無法再判斷它們是日誌檔序列的一部分 (請參閱 第 8.4.5.6 節:「讀取稽核日誌檔」)。請考慮將 audit_log_rotate_on_size 設定為大於 0,以改用基於大小的輪換。

自動稽核日誌檔輪換

如果 audit_log_rotate_on_size 大於 0,則設定 audit_log_flush 無效。相反地,每當寫入目前日誌檔導致其大小超過 audit_log_rotate_on_size 值時,稽核日誌外掛程式會自動重新命名目前的日誌檔,並使用原始名稱開啟新的目前日誌檔。

在下列情況下也會發生自動基於大小的輪換

外掛程式會將時間戳記插入原始檔名的基本名稱之後,來重新命名原始檔案。例如,如果檔名為 audit.log,則外掛程式會將其重新命名為類似 audit.20210115T140633.log 的值。時間戳記是 YYYYMMDDThhmmss 格式的 UTC 值。對於 XML 記錄,時間戳記表示輪換時間。對於 JSON 記錄,時間戳記是寫入檔案的最後一個事件的時間戳記。

如果日誌檔已加密,則原始檔名已包含表示加密密碼建立時間的時間戳記 (請參閱 稽核日誌檔的命名慣例)。在這種情況下,輪換後的檔名會包含兩個時間戳記。例如,名為 audit.log.20210110T130749-1.enc 的加密日誌檔會重新命名為類似 audit.20210115T140633.log.20210110T130749-1.enc 的值。

稽核日誌檔修剪

如果啟用自動日誌檔輪換,稽核日誌外掛程式支援修剪已輪換的 JSON 格式稽核日誌檔。若要使用此功能

  • audit_log_format 設定為 JSON。(此外,請考慮變更 audit_log_file;請參閱 選取稽核日誌檔格式。)

  • audit_log_rotate_on_size 設定為大於 0,以指定發生自動日誌檔輪換的大小 (以位元組為單位)。

  • 依預設,不會修剪自動輪換的 JSON 格式日誌檔。若要啟用修剪,請將下列其中一個系統變數設定為大於 0 的值

    • audit_log_max_size 設定為大於 0,以指定已輪換日誌檔的總大小上限 (以位元組為單位),超過此上限時,檔案會受到修剪。

    • audit_log_prune_seconds 設定為大於 0,以指定已輪換日誌檔在多少秒後會受到修剪。

    audit_log_max_size 的非零值優先於 audit_log_prune_seconds 的非零值。如果在外掛程式初始化時兩者都設定為大於 0,則會將警告寫入伺服器錯誤日誌。如果用戶端在執行階段將兩者都設定為大於 0,則會將警告傳回給用戶端。

    注意

    寫入錯誤日誌的警告會作為「注意事項」寫入,這些是資訊訊息。為確保此類訊息出現在錯誤日誌中且未捨棄,請確定錯誤記錄詳細程度足以包含資訊訊息。例如,如果您使用基於優先順序的日誌篩選,如 第 7.4.2.5 節:「基於優先順序的錯誤日誌篩選 (log_filter_internal)」 中所述,請將 log_error_verbosity 系統變數設定為值 3。

如果啟用,JSON 格式日誌檔的修剪會如下進行

對於基於已輪換日誌檔總大小的修剪,如果總大小大於 audit_log_max_size 指定的限制,則稽核日誌外掛程式會移除最舊的檔案,直到其總大小不超過限制。

對於基於已輪換日誌檔存留期的修剪,修剪點是目前時間減去 audit_log_prune_seconds 的值。在已輪換的 JSON 格式日誌檔中,每個檔名的時間戳記部分表示寫入檔案的最後一個事件的時間戳記。稽核日誌外掛程式會使用檔名時間戳記來判斷哪些檔案僅包含比修剪點更舊的事件,並將其移除。

稽核記錄的寫入策略

稽核日誌外掛程式可以使用數種策略中的任何一種進行日誌寫入。無論使用哪種策略,記錄都會在盡力而為的基礎上進行,且不保證一致性。

若要指定寫入策略,請在伺服器啟動時設定 audit_log_strategy 系統變數。依預設,策略值為 ASYNCHRONOUS,且外掛程式會非同步記錄到緩衝區,如果緩衝區已滿,則會等待。您可以告知外掛程式不要等待 (PERFORMANCE),或使用檔案系統快取 (SEMISYNCHRONOUS) 或在每次寫入要求後使用 sync() 呼叫強制輸出 (SYNCHRONOUS) 來同步記錄。

在許多情況下,如果目前的查詢對於緩衝區而言太大,則外掛程式會直接寫入 JSON 格式的稽核日誌。寫入策略會決定外掛程式如何遞增直接寫入計數。您可以使用 Audit_log_direct_writes 狀態變數追蹤直接寫入的次數。

對於非同步寫入策略,audit_log_buffer_size 系統變數是緩衝區大小 (以位元組為單位)。請在伺服器啟動時設定此變數,以變更緩衝區大小。外掛程式會使用單一緩衝區,該緩衝區會在初始化時配置,並在終止時移除。外掛程式不會為非同步寫入策略配置此緩衝區。

非同步記錄策略具有下列特性

  • 對伺服器效能和可擴充性的影響最小。

  • 產生稽核事件的執行緒的封鎖時間盡可能短;也就是說,配置緩衝區的時間加上將事件複製到緩衝區的時間。

  • 輸出會傳送到緩衝區。單獨的執行緒會處理從緩衝區到日誌檔的寫入。

使用非同步記錄時,如果寫入檔案時發生問題,或者外掛程式未正常關閉 (例如,在伺服器主機意外結束時),則可能會損害日誌檔的完整性。若要降低此風險,請將 audit_log_strategy 設定為使用同步記錄。

PERFORMANCE 策略的缺點是,當緩衝區已滿時,它會捨棄事件。對於負載較重的伺服器,稽核日誌可能會遺失事件。