6.4.5.10 审核日志参考
以下讨论可作为对 MySQL 企业审核组件的参考:
要安装审核日志 table 和功能,请使用第 6.4.5.2 节“安装或卸载 MySQL 企业审核”中提供的说明。除非安装了这些组件,否则audit_log
插件将在旧版模式下运行。参见第 6.4.5.9 节“旧模式审核日志过滤”。
审核日志 table
MySQL Enterprise Audit 使用mysql
系统数据库中的 table 来永久存储过滤器和用户帐户数据。只有具有该数据库特权的用户才能访问这些 table。这些 table 使用InnoDB
存储引擎(MySQL 5.7.21 之前的MyISAM
)。
如果缺少这些 table,则audit_log
插件将在旧版模式下运行。参见第 6.4.5.9 节“旧模式审核日志过滤”。
audit_log_filter
table 存储过滤器定义。该 table 包含以下列:
NAME
过滤器名称。
FILTER
与过滤器名称关联的过滤器定义。定义存储为JSON个值。
audit_log_user
table 存储用户帐户信息。该 table 包含以下列:
USER
帐户的用户名部分。对于帐户user1@localhost
,USER
部分为user1
。
HOST
帐户的主机名部分。对于帐户user1@localhost
,HOST
部分为localhost
。
FILTERNAME
分配给该帐户的过滤器的名称。过滤器名称将帐户与在audit_log_filter
table 中定义的过滤器相关联。
审核日志功能
本节针对每个审核日志用户定义函数(UDF)描述其用途,调用 Sequences 和返回值。有关可以调用这些 UDF 的条件的信息,请参见第 6.4.5.7 节“审核日志过滤”。
每个审核日志 UDF 返回一个字符串,该字符串指示操作是否成功。 OK
table 示成功。 ERROR: message
table 示失败。
这些审核日志 UDF 可用:
以二进制字符串形式检索当前的审核日志加密密码。密码是从 MySQL 密钥环中获取的,必须启用该密钥,否则会发生错误。任何钥匙圈插件都可以使用;有关说明,请参见第 6.4.4 节“ MySQL 密钥环”。
有关审核日志加密的其他信息,请参阅加密审核日志文件。
Arguments:
None.
Return value:
成功的密码字符串(最大 766 个字节),或NULL
,失败的错误。
Example:
mysql> SELECT audit_log_encryption_password_get();
+-------------------------------------+
| audit_log_encryption_password_get() |
+-------------------------------------+
| secret |
+-------------------------------------+
将审核日志加密密码设置为参数,并将密码存储在 MySQL 密钥环中。如果启用了加密,该功能将执行日志文件轮换操作,重命名当前日志文件,并开始使用密码加密的新日志文件。必须启用密钥环,否则会发生错误。任何钥匙圈插件都可以使用;有关说明,请参见第 6.4.4 节“ MySQL 密钥环”。
有关审核日志加密的其他信息,请参阅加密审核日志文件。
Arguments:
password
*:密码字符串。允许的最大长度为 766 个字节。
Return value:
1 table 示成功,0table 示失败。
Example:
mysql> SELECT audit_log_encryption_password_set(password);
+---------------------------------------------+
| audit_log_encryption_password_set(password) |
+---------------------------------------------+
| 1 |
+---------------------------------------------+
调用任何其他筛选 UDF 都会立即影响操作审核日志筛选,并更新审核日志 table。相反,如果直接使用INSERT,UPDATE和DELETE等语句修改这些 table 的内容,则更改不会立即影响过滤。要刷新您的更改并使它们可操作,请调用audit_log_filter_flush()。
Warning
仅在直接修改审核 table 之后才能使用audit_log_filter_flush(),以强制重新加载所有过滤器。否则,应避免使用此功能。实际上,它是使用UNINSTALL PLUGIN加INSTALL PLUGIN卸载和重新加载audit_log
插件的简化版本。
audit_log_filter_flush()影响所有当前会话,并将它们与以前的过滤器分离。除非断开并重新连接或执行更改用户操作,否则将不再记录当前会话。
如果此功能失败,则返回错误消息并禁用审核日志,直到下一次成功调用audit_log_filter_flush()为止。
Arguments:
None.
Return value:
指示操作是否成功的字符串。 OK
table 示成功。 ERROR: message
table 示失败。
Example:
mysql> SELECT audit_log_filter_flush();
+--------------------------+
| audit_log_filter_flush() |
+--------------------------+
| OK |
+--------------------------+
给定一个过滤器名称,将其从当前过滤器集中删除。过滤器不存在不是错误。
如果将删除的过滤器分配给任何用户帐户,则这些用户将停止过滤(将它们从audit_log_user
table 中删除)。过滤终止包括这些用户的任何当前会话:它们与过滤器分离并且不再记录。
Arguments:
-
filter_name
*:指定过滤器名称的字符串。
Return value:
指示操作是否成功的字符串。 OK
table 示成功。 ERROR: message
table 示失败。
Example:
mysql> SELECT audit_log_filter_remove_filter('SomeFilter');
+----------------------------------------------+
| audit_log_filter_remove_filter('SomeFilter') |
+----------------------------------------------+
| OK |
+----------------------------------------------+
给定用户帐户名,导致不再将用户分配给过滤器。如果用户未分配过滤器,这不是错误。用户当前会话的过滤不受影响。如果有新连接,则使用默认帐户过滤器过滤用户的新连接,否则将不记录。
如果名称为%
,该函数将删除默认帐户过滤器,该过滤器将用于没有明确分配过滤器的任何用户帐户。
Arguments:
-
user_name
*:用户帐户名,格式为user_name@host_name
或%
,代 table 默认帐户。
Return value:
指示操作是否成功的字符串。 OK
table 示成功。 ERROR: message
table 示失败。
Example:
mysql> SELECT audit_log_filter_remove_user('user1@localhost');
+-------------------------------------------------+
| audit_log_filter_remove_user('user1@localhost') |
+-------------------------------------------------+
| OK |
+-------------------------------------------------+
给定过滤器名称和定义,将过滤器添加到当前过滤器集合中。如果该过滤器已经存在并被任何当前会话使用,则这些会话将从过滤器中分离出来,不再记录。发生这种情况是因为新的过滤器定义具有不同于其先前 ID 的新过滤器 ID。
Arguments:
-
filter_name
*:指定过滤器名称的字符串。
-
definition
*:一个JSON值,用于指定过滤器定义。
Return value:
指示操作是否成功的字符串。 OK
table 示成功。 ERROR: message
table 示失败。
Example:
mysql> SET @f = '{ "filter": { "log": false } }';
mysql> SELECT audit_log_filter_set_filter('SomeFilter', @f);
+-----------------------------------------------+
| audit_log_filter_set_filter('SomeFilter', @f) |
+-----------------------------------------------+
| OK |
+-----------------------------------------------+
给定用户帐户名和过滤器名称,将过滤器分配给用户。只能为一个用户分配一个过滤器,因此,如果已经为该用户分配了过滤器,则该分配将被替换。用户当前会话的过滤不受影响。使用新的过滤器过滤新的连接。
在特殊情况下,名称%
代 table 默认帐户。该筛选器用于来自没有明确分配筛选器的任何用户帐户的连接。
Arguments:
-
user_name
*:用户帐户名,格式为user_name@host_name
或%
,代 table 默认帐户。
-
filter_name
*:指定过滤器名称的字符串。
Return value:
指示操作是否成功的字符串。 OK
table 示成功。 ERROR: message
table 示失败。
Example:
mysql> SELECT audit_log_filter_set_user('user1@localhost', 'SomeFilter');
+------------------------------------------------------------+
| audit_log_filter_set_user('user1@localhost', 'SomeFilter') |
+------------------------------------------------------------+
| OK |
+------------------------------------------------------------+
读取审核日志并返回二进制JSON字符串结果。如果审核日志格式不是JSON,则会发生错误。
如果没有参数或没有JSON哈希参数,则audit_log_read()将从审核日志中读取事件,并返回包含审核事件数组的JSON字符串。哈希参数中的项目会影响读取的方式,如下所述。返回数组中的每个元素都是一个 table 示为JSON哈希的事件,但最后一个元素可能是JSON null
值以指示没有后续事件可读取。
带有由JSON null
值组成的参数,audit_log_read()关闭当前的读取序列。
有关审核日志读取过程的其他详细信息,请参阅第 6.4.5.6 节“读取审核日志文件”。
Arguments:
arg
*:该参数是可选的。如果省略,该函数将从当前位置读取事件。如果存在,则参数可以是JSONnull
值以关闭读取序列,也可以是JSON哈希。在散列参数中,项目是可选的,并且控制读取操作的方面,例如开始读取的位置或要读取的事件数。以下各项很重要(其他项目将被忽略):
timestamp
,id
:要读取的第一个事件在审核日志中的位置。如果从参数中省略该位置,则从当前位置 continue 读取。timestamp
和id
项一起构成唯一标识特定事件的书签。如果audit_log_read()参数包含任何一项,则它必须同时包含两者以完全指定位置,否则会发生错误。
要获取最近写入的事件的书签,请致电audit_log_read_bookmark()。
max_array_length
:要从日志中读取的最大事件数。如果省略此项,则默认设置为读取到日志末尾或直到读取缓冲区已满(以先到者为准)。
Return value:
如果调用成功,则返回值为包含审核事件数组的二进制JSON字符串,或者返回JSON null
值(如果已将其作为参数关闭关闭读取序列)。如果调用失败,则返回值为NULL
并发生错误。
Example:
mysql> SELECT audit_log_read(audit_log_read_bookmark());
+-----------------------------------------------------------------------+
| audit_log_read(audit_log_read_bookmark()) |
+-----------------------------------------------------------------------+
| [ {"timestamp":"2020-05-18 22:41:24","id":0,"class":"connection", ... |
+-----------------------------------------------------------------------+
mysql> SELECT audit_log_read('null');
+------------------------+
| audit_log_read('null') |
+------------------------+
| null |
+------------------------+
返回二进制JSON字符串,table 示最近写入的审核日志事件的书签。如果审核日志格式不是JSON
,则会发生错误。
书签是带有timestamp
和id
项的JSON哈希,它们唯一地标识事件在审计日志中的位置。适用于传递到audit_log_read()以指示该功能开始读取的位置。
有关审核日志读取过程的其他详细信息,请参阅第 6.4.5.6 节“读取审核日志文件”。
Arguments:
None.
Return value:
二进制JSON字符串,包含用于成功的书签,或NULL
和用于失败的错误。
Example:
mysql> SELECT audit_log_read_bookmark();
+-------------------------------------------------+
| audit_log_read_bookmark() |
+-------------------------------------------------+
| { "timestamp": "2019-10-03 21:03:44", "id": 0 } |
+-------------------------------------------------+
审核日志选项和变量参考
table6.34 审核日志选项和变量参考
Name | Cmd-Line | Option File | System Var | Status Var | Var Scope | Dynamic |
---|---|---|---|---|---|---|
audit-log | Yes | Yes | ||||
audit_log_buffer_size | Yes | Yes | Yes | Global | No | |
audit_log_compression | Yes | Yes | Yes | Global | No | |
audit_log_connection_policy | Yes | Yes | Yes | Global | Yes | |
audit_log_current_session | Yes | Both | No | |||
Audit_log_current_size | Yes | Global | No | |||
audit_log_encryption | Yes | Yes | Yes | Global | No | |
Audit_log_event_max_drop_size | Yes | Global | No | |||
Audit_log_events | Yes | Global | No | |||
Audit_log_events_filtered | Yes | Global | No | |||
Audit_log_events_lost | Yes | Global | No | |||
Audit_log_events_written | Yes | Global | No | |||
audit_log_exclude_accounts | Yes | Yes | Yes | Global | Yes | |
audit_log_file | Yes | Yes | Yes | Global | No | |
audit_log_filter_id | Yes | Both | No | |||
audit_log_flush | Yes | Global | Yes | |||
audit_log_format | Yes | Yes | Yes | Global | No | |
audit_log_include_accounts | Yes | Yes | Yes | Global | Yes | |
audit_log_policy | Yes | Yes | Yes | Global | No | |
audit_log_read_buffer_size | Yes | Yes | Yes | Varies | Varies | |
audit_log_rotate_on_size | Yes | Yes | Yes | Global | Yes | |
audit_log_statement_policy | Yes | Yes | Yes | Global | Yes | |
audit_log_strategy | Yes | Yes | Yes | Global | No | |
Audit_log_total_size | Yes | Global | No | |||
Audit_log_write_waits | Yes | Global | No |
审核日志选项和变量
本节介绍了配置 MySQL Enterprise Audit 操作的命令选项和系统变量。如果启动时指定的值不正确,则audit_log
插件可能无法正确初始化,并且服务器不会加载它。在这种情况下,服务器也可能会为其他审核日志设置生成错误消息,因为它无法识别它们。
要配置审核日志插件的激活,请使用以下选项:
Property | Value |
---|---|
Command-Line Format | --audit-log[=value] |
Type | Enumeration |
Default Value | ON |
Valid Values | ON |
OFF FORCE FORCE_PLUS_PERMANENT |
此选项控制服务器在启动时如何加载audit_log
插件。仅当插件先前已在INSTALL PLUGIN注册或已在--plugin-load或--plugin-load-add加载时才可用。参见第 6.4.5.2 节“安装或卸载 MySQL 企业审核”。
该选项值应该是插件加载选项可用的值之一,如第 5.5.1 节“安装和卸载插件”中所述。例如,--audit-log=FORCE_PLUS_PERMANENT告诉服务器加载插件,并防止在服务器运行时将其删除。
如果启用了审核日志插件,它将公开几个系统变量,这些变量可控制日志记录:
mysql> SHOW VARIABLES LIKE 'audit_log%';
+-----------------------------+--------------+
| Variable_name | Value |
+-----------------------------+--------------+
| audit_log_buffer_size | 1048576 |
| audit_log_connection_policy | ALL |
| audit_log_current_session | OFF |
| audit_log_exclude_accounts | |
| audit_log_file | audit.log |
| audit_log_filter_id | 0 |
| audit_log_flush | OFF |
| audit_log_format | NEW |
| audit_log_include_accounts | |
| audit_log_policy | ALL |
| audit_log_rotate_on_size | 0 |
| audit_log_statement_policy | ALL |
| audit_log_strategy | ASYNCHRONOUS |
+-----------------------------+--------------+
您可以在服务器启动时设置这些变量中的任何一个,在运行时设置其中一些。请注意那些仅可用于旧模式审核日志过滤的内容。
Property | Value |
---|---|
Command-Line Format | --audit-log-buffer-size=# |
System Variable | audit_log_buffer_size |
Scope | Global |
Dynamic | No |
Type | Integer |
Default Value | 1048576 |
Minimum Value | 4096 |
最大值(64 位平台) | 18446744073709547520 |
最大值(32 位平台) | 4294967295 |
当审核日志插件将事件异步写入日志时,它将在写入事件之前使用缓冲区存储事件内容。此变量控制该缓冲区的大小(以字节为单位)。服务器将值调整为 4096 的倍数。插件使用单个缓冲区,它在初始化时分配,在终止时删除。仅当日志记录异步时,插件才会分配此缓冲区。
Property | Value |
---|---|
Command-Line Format | --audit-log-compression=value |
Introduced | 5.7.21 |
System Variable | audit_log_compression |
Scope | Global |
Dynamic | No |
Type | Enumeration |
Default Value | NONE |
Valid Values | NONE |
GZIP |
审核日志文件的压缩类型。允许的值为NONE
(不压缩;默认值)和GZIP
(GNU Zip 压缩)。有关更多信息,请参见压缩审核日志文件。
Property | Value |
---|---|
Command-Line Format | --audit-log-connection-policy=value |
System Variable | audit_log_connection_policy |
Scope | Global |
Dynamic | Yes |
Type | Enumeration |
Default Value | ALL |
Valid Values | ALL |
ERRORS NONE |
Note
此变量仅适用于旧模式审核日志过滤(请参阅第 6.4.5.9 节“旧模式审核日志过滤”)。
控制审核日志插件如何将连接事件写入其日志文件的策略。下 table 显示了允许的值。
Value | Description |
---|---|
ALL |
记录所有连接事件 |
ERRORS |
仅记录失败的连接事件 |
NONE |
不记录连接事件 |
Note
如第 6.4.5.5 节“配置审核日志记录 Feature”中所述,在服务器启动时,如果还指定了audit_log_policy,则可以覆盖为audit_log_connection_policy给出的任何显式值。
Property | Value |
---|---|
System Variable | audit_log_current_session |
Scope | Global, Session |
Dynamic | No |
Type | Boolean |
Default Value | depends on filtering policy |
当前会话是否启用审核日志记录。该变量的会话值是只读的。在会话开始时根据audit_log_include_accounts和audit_log_exclude_accounts系统变量的值进行设置。审核日志插件使用会话值来确定是否审核该会话的事件。 (有一个全局值,但是插件不使用它.)
Property | Value |
---|---|
Command-Line Format | --audit-log-encryption=value |
Introduced | 5.7.21 |
System Variable | audit_log_encryption |
Scope | Global |
Dynamic | No |
Type | Enumeration |
Default Value | NONE |
Valid Values | NONE |
AES |
审核日志文件的加密类型。允许的值为NONE
(不加密;默认值)和AES
(AES-256-CBC 密码加密)。有关更多信息,请参见加密审核日志文件。
Property | Value |
---|---|
Command-Line Format | --audit-log-exclude-accounts=value |
System Variable | audit_log_exclude_accounts |
Scope | Global |
Dynamic | Yes |
Type | String |
Default Value | NULL |
Note
此变量仅适用于旧模式审核日志过滤(请参阅第 6.4.5.9 节“旧模式审核日志过滤”)。
不应记录事件的帐户。该值应为NULL
或包含一个或多个逗号分隔帐户名列 table 的字符串。有关更多信息,请参见第 6.4.5.7 节“审核日志过滤”。
对audit_log_exclude_accounts的修改仅影响在修改之后创建的连接,而不影响现有的连接。
Property | Value |
---|---|
Command-Line Format | --audit-log-file=file_name |
System Variable | audit_log_file |
Scope | Global |
Dynamic | No |
Type | File name |
Default Value | audit.log |
审核日志插件向其写入事件的文件的基本名称和后缀。无论记录格式如何,默认值为audit.log
。要使名称后缀与格式相对应,请显式设置名称,并选择其他后缀(例如,对于 XML 格式为audit.xml
,对于 JSON 格式为audit.json
)。
如果audit_log_file的值是相对路径名,则插件将相对于数据目录对其进行解释。如果该值是完整路径名,那么插件将按原样使用该值。如果希望将审核文件放在单独的文件系统或目录中,则完整路径名可能很有用。出于安全原因,请将审核日志文件写入只有 MySQL 服务器和有正当理由查看日志的用户才能访问的目录。
有关审核日志插件如何解释audit_log_file值以及在插件初始化和终止时发生的文件重命名规则的详细信息,请参阅审核日志文件的命名约定。
从 MySQL 5.7.21 开始,审核日志插件使用包含审核日志文件(由audit_log_file值确定)的目录作为搜索可读审核日志文件的位置。从这些日志文件和当前文件中,插件将构建一个列 table,这些列 table 将与审核日志书签和读取功能一起使用。参见第 6.4.5.6 节“读取审核日志文件”。
Property | Value |
---|---|
Introduced | 5.7.13 |
System Variable | audit_log_filter_id |
Scope | Global, Session |
Dynamic | No |
Type | Integer |
该变量的会话值指示当前会话的审核过滤器的内部维护 ID。值 0table 示会话未分配过滤器。
Property | Value |
---|---|
System Variable | audit_log_flush |
Scope | Global |
Dynamic | Yes |
Type | Boolean |
Default Value | OFF |
当将此变量设置为启用(1 或ON
)时,审核日志插件将关闭并重新打开其日志文件以刷新它。 (该值仍为OFF
,因此您无需在再次启用它执行另一个刷新之前就明确禁用它.)除非audit_log_rotate_on_size为 0,否则启用此变量无效。有关更多信息,请参见第 6.4.5.5 节“配置审核日志记录 Feature”。
Property | Value |
---|---|
Command-Line Format | --audit-log-format=value |
System Variable | audit_log_format |
Scope | Global |
Dynamic | No |
Type | Enumeration |
Default Value | NEW |
有效值(≥5.7.21) | OLD |
NEW JSON |
|
有效值(≤5.7.20) | OLD NEW |
审核日志文件格式。允许值为OLD
(旧式 XML),NEW
(新式 XML;默认值)和(自 MySQL 5.7.21 起)JSON
。有关每种格式的详细信息,请参见第 6.4.5.4 节“审核日志文件格式”。
Note
有关更改日志格式时要考虑的问题的信息,请参阅选择审核日志文件格式。
Property | Value |
---|---|
Command-Line Format | --audit-log-include-accounts=value |
System Variable | audit_log_include_accounts |
Scope | Global |
Dynamic | Yes |
Type | String |
Default Value | NULL |
Note
此变量仅适用于旧模式审核日志过滤(请参阅第 6.4.5.9 节“旧模式审核日志过滤”)。
应记录事件的帐户。该值应为NULL
或包含一个或多个逗号分隔帐户名列 table 的字符串。有关更多信息,请参见第 6.4.5.7 节“审核日志过滤”。
对audit_log_include_accounts的修改仅影响在修改之后创建的连接,而不影响现有的连接。
Property | Value |
---|---|
Command-Line Format | --audit-log-policy=value |
System Variable | audit_log_policy |
Scope | Global |
Dynamic | No |
Type | Enumeration |
Default Value | ALL |
Valid Values | ALL |
LOGINS QUERIES NONE |
Note
此变量仅适用于旧模式审核日志过滤(请参阅第 6.4.5.9 节“旧模式审核日志过滤”)。
控制审核日志插件如何将事件写入其日志文件的策略。下 table 显示了允许的值。
Value | Description |
---|---|
ALL |
记录所有事件 |
LOGINS |
仅记录登录事件 |
QUERIES |
仅记录查询事件 |
NONE |
不记录任何内容(禁用审核流) |
只能在服务器启动时设置audit_log_policy。在运行时,它是一个只读变量。另外两个系统变量audit_log_connection_policy和audit_log_statement_policy可以更好地控制日志记录策略,可以在启动时或运行时进行设置。如果在启动时使用audit_log_policy而不是其他两个变量,则服务器将使用其值来设置这些变量。有关策略变量及其相互作用的更多信息,请参见第 6.4.5.5 节“配置审核日志记录 Feature”。
Property | Value |
---|---|
Command-Line Format | --audit-log-read-buffer-size=# |
Introduced | 5.7.21 |
System Variable | audit_log_read_buffer_size |
范围(≥5.7.23) | Global, Session |
范围(≤5.7.22) | Global |
动态(≥5.7.23) | Yes |
动态(≤5.7.22) | No |
Type | Integer |
默认值(≥5.7.23) | 32768 |
预设值(≤5.7.22) | 1048576 |
最小值(≥5.7.23) | 32768 |
最小值(≤5.7.22) | 1024 |
Maximum Value | 4194304 |
从审核日志文件读取的缓冲区大小,以字节为单位。 audit_log_read()函数读取的字节数不超过此数量。仅 JSON 日志格式支持日志文件读取。有关更多信息,请参见第 6.4.5.6 节“读取审核日志文件”。
从 MySQL 5.7.23 开始,此变量的默认值为 32KB,可以在运行时设置。每个 Client 端都应将其会话值设置为audit_log_read_buffer_size以便使用audit_log_read()。在 MySQL 5.7.23 之前,audit_log_read_buffer_size的默认值为 1MB,会影响所有 Client 端,并且只能在服务器启动时进行更改。
Property | Value |
---|---|
Command-Line Format | --audit-log-rotate-on-size=# |
System Variable | audit_log_rotate_on_size |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 0 |
如果audit_log_rotate_on_size的值为 0,则审核日志插件不会执行自动日志文件轮换。而是使用audit_log_flush关闭并按需重新打开日志。在这种情况下,请在刷新文件之前在服务器外部手动重命名该文件。
如果audit_log_rotate_on_size值大于 0,则会自动进行基于大小的日志文件轮换。每当写入日志文件导致其大小超过audit_log_rotate_on_size值时,审核日志插件都会关闭当前日志文件,将其重命名,然后打开一个新的日志文件。
有关审核日志文件轮换的更多信息,请参见审计日志文件的空间 Management 和名称轮换。
如果将此变量设置为不是 4096 的倍数的值,它将被截断为最接近的倍数。 (因此,将其设置为小于 4096 的效果是将其设置为 0 且不进行旋转,除非手动进行.)
Property | Value |
---|---|
Command-Line Format | --audit-log-statement-policy=value |
System Variable | audit_log_statement_policy |
Scope | Global |
Dynamic | Yes |
Type | Enumeration |
Default Value | ALL |
Valid Values | ALL |
ERRORS NONE |
Note
此变量仅适用于旧模式审核日志过滤(请参阅第 6.4.5.9 节“旧模式审核日志过滤”)。
控制审核日志插件如何将语句事件写入其日志文件的策略。下 table 显示了允许的值。
Value | Description |
---|---|
ALL |
记录所有语句事件 |
ERRORS |
仅记录失败的语句事件 |
NONE |
不记录语句事件 |
Note
如第 6.4.5.5 节“配置审核日志记录 Feature”中所述,在服务器启动时,如果还指定了audit_log_policy,则可以覆盖为audit_log_statement_policy给出的任何显式值。
Property | Value |
---|---|
Command-Line Format | --audit-log-strategy=value |
System Variable | audit_log_strategy |
Scope | Global |
Dynamic | No |
Type | Enumeration |
Default Value | ASYNCHRONOUS |
Valid Values | ASYNCHRONOUS |
PERFORMANCE SEMISYNCHRONOUS SYNCHRONOUS |
审核日志插件使用的日志记录方法。允许使用以下策略值:
-
ASYNCHRONOUS
:异步登录。await 输出缓冲区中的空间。-
PERFORMANCE
:异步登录。删除在输出缓冲区中没有足够空间的请求。 -
SEMISYNCHRONOUS
:同步登录。允许 os 进行缓存。 -
SYNCHRONOUS
:同步登录。每次请求后致电sync()
。
-
审核日志状态变量
如果启用了审核日志插件,则它会公开几个提供操作信息的状态变量。这些变量可用于旧模式审核过滤和 JSON 模式审核过滤。
当前审核日志文件的大小。当事件写入日志时,该值增加;旋转日志时,该值重置为 0.
性能记录模式下最大丢弃事件的大小。有关日志记录模式的说明,请参见第 6.4.5.5 节“配置审核日志记录 Feature”。
审核日志插件处理的事件数,无论是否基于过滤策略将其写入日志(请参见第 6.4.5.5 节“配置审核日志记录 Feature”)。
由审计日志插件处理的基于过滤策略(未写入日志)的事件数(请参见第 6.4.5.5 节“配置审核日志记录 Feature”)。
由于事件大于可用审核日志缓冲区空间,因此在性能日志记录模式下丢失的事件数。该值对于评估如何设置audit_log_buffer_size来调整性能模式缓冲区的大小可能很有用。有关日志记录模式的说明,请参见第 6.4.5.5 节“配置审核日志记录 Feature”。
写入审核日志的事件数。
写入所有审核日志文件的事件的总大小。与Audit_log_current_size不同,即使旋转日志,Audit_log_total_size的值也会增加。
在异步日志记录模式下,事件必须 await 审核日志缓冲区中的空间的次数。有关日志记录模式的说明,请参见第 6.4.5.5 节“配置审核日志记录 Feature”。