ITPub博客

首页 > 数据库 > MySQL > MySQL入门--服务器配置

MySQL入门--服务器配置

MySQL 作者:panpong 时间:2019-06-26 10:06:55 0 删除 编辑

MySQL服务器配置

1.        服务器配置

1.1.        MySQL 配置选项

在调用服务器(或客户机)时可以在命令行上指定启动选项,也可以在配置文件中指定启动选项。 MySQL 客户机程序会在启动时查找配置文件,并使用相应的选项。

默认情况下,服务器在运行时使用其配置变量的预编译值。但是,如果默认值不适合环境,则可添加运行时选项,让服务器使用其他值来执行以下操作:

Ø   指定重要的目录和文件的位置

Ø   控制服务器写入的日志文件

Ø   覆盖服务器与性能相关的变量的内置值(即,控制最大同时连接数以及缓冲区和高速缓存的大小)

Ø   在服务器启动时启用或禁用预编译的存储引擎

通过使用命令行选项或配置文件,或者使用两者的组合,可以指定服务器启动时的运行时选项(以更改其配置和行为)。命令行选项优先于配置文件中的任何设置。要了解服务器支持的选项,请在 shell 提示符下执行以下命令:

mysqld --verbose --help

注: 上述命令提供信息。该命令不会启动 MySQL 服务器。

1)        使用配置文件的原因?

通过命令行调用服务器时,可以指定 --help 选项列出的任何服务器选项。但是,将它们在配置文件中列出会更有用,原因如下:

A.      将选项放在文件中后,不需要每次启动服务器时都在命令行上指定选项。对于复杂的选项(如用于配置 InnoDB 表空间的选项),这样做更加方便,并且更不容易出错。

B.       如果所有服务器选项都在一个配置文件中,则可概览服务器的配置情况。

MySQL 程序可以访问多个配置文件中的选项。程序会查找每个标准配置文件,并读取任何存在的配置文件。未发现指定文件时,不会发生错误。

要使用某个配置文件,可使用编辑器以纯文本文件形式创建该文件。要创建或修改某个配置文件,必须拥有该文件的写入权限。客户机程序仅需要读取访问权限。

2)        配置文件组

配置文件中的选项按组进行组织,每个组前面有一个为组命名的 [group-name] 行。通常,组名称是选项组适用的程序的类别或名称。选项组示例包括:

[client] :用于指定适用于所有客户机程序的选项。 [client] 组的一个常见用途是指定连接参数,因为在一般情况下,不管使用什么客户机程序,都要建立到同一个服务器的连接。

[mysql] [mysqldump] :分别用于指定适用于 mysql mysqldump 客户机的选项。此外,也可以单独指定其他客户机选项。

[server] :用于指定同时适用于 mysqld mysqld_safe 服务器程序的选项。

[mysqld] [mysqld-5.6] [mysqld_safe] :用于指定适用于不同服务器版本或启动方法的选项。

3)        编写配置文件

配置文件中组的简短示例:

[client]

host = myhost.example.com

compress

[mysql]

show-warnings

要创建或修改某个配置文件,最终用户必须拥有该文件的写入权限。服务器本身仅需要读取访问权限;服务器读取配置文件,但不创建或修改配置文件。在配置文件中写入一个选项:

使用长选项格式(像命令行上使用的那样),但省略前导短划线。

如果某个选项取值,则允许在等号两则加空格 ( = ) 。此规则不适用于在命令行上指定的选项。

示例中,请注意以下方面:

[client] :此组中的选项适用于所有标准客户机。

- host :指定服务器主机名

- compress :指示客户机 / 服务器协议对通过网络发送的通信使用压缩

[mysql] :此组中的选项仅适用于 mysql 客户机。

- show-warnings :指示 MySQL 在每条语句后显示任何当前警告

mysql 客户机同时使用 [client] [mysql] 组中的选项,因此将使用显示的全部三个选项。

4)        配置文件位置

MySQL 服务器会在标准位置中查找文件。 Linux Windows 的标准文件不同,在 Linux 中,使用 my.cnf 文件。在 Windows 中,使用 my.ini 文件。

可以使用以下选项查看配置文件查找位置和组:

shell> mysql --help

标准配置文件如下:

Linux 文件 /etc/my.cnf 用作所有用户都使用的全局配置文件。可以在用户的主目录中创建特定于用户的配置文件 .my.cnf 。如果设置了 MYSQL_HOME 环境变量,则将搜索 $MYSQL_HOME/my.cnf 文件。

Windows 程序按以下顺序查找配置文件: Windows C:\ 目录下的 my.ini my.cnf ,然后是 C:\Windows (或 C:\WinNT )目录。但是,因为 Windows 安装向导将配置文件放在目录 C:\Program Files\MySQL\MySQL Server <version number> 中,因此在 Windows 中,服务器还会搜索此目录。

MySQL 命令行程序会在 MySQL 安装目录中搜索配置文件。

5)        配置文件中的启动选项

要在配置文件中指定服务器选项,请在 [mysqld] [server] 组下指示特定选项。

日志记录 可以通过启用所需日志的类型为服务器启用日志记录。以下选项可启用常规查询日志、二进制日志和慢速查询日志:

general_log

log-bin

slow_query_log

默认存储引擎 可以使用 --default-storage-engine 选项指定不同于 InnoDB 的默认存储引擎。

系统变量 可以通过设置服务器系统变量值来定制服务器。例如,要增加允许的最大连接数,并增加 InnoDB 缓冲池数的默认值,可设置以下变量:

max_connections=200

innodb_buffer_pool_instances=4

共享内存 Windows 上默认不启用。可以使用 shared-memory 选项来启用命名管道支持。

命名管道 要启用命名管道支持,请使用 enable-named-pipe 选项。

6)        样例配置文件

MySQL 安装提供了一个样例配置文件: my-default.cnf Linux 对于 RPM 安装,样例配置文件在 /usr/share/mysql 中;对于 TAR 文件安装,样例文件在 MySQL 安装目录下的 share 目录中。 Windows 配置文件位于 MySQL 安装目录 (my.ini) 中。

安装过程将此文件复制到 /etc/my.cnf 。如果已存在该文件,则将其复制到 /etc/my-new.cnf 。在该文件中指定新选项可替换、添加或忽略标准选项。必须是命令行上的第一个选项:

--defaults-file=<file_name>

--defaults-extra-file=<file_name>

--no-defaults

在更改任何默认选项之前,请确保充分了解相应选项对服务器操作的影响。例如,有些设置会启用特定的日志文件,或者会改变内存缓冲区的大小。

--defaults-file=<file_name> :使用指定位置的配置文件。

--defaults-extra-file=<file_name> :使用指定位置的其他配置文件。

--no-defaults :忽略所有配置文件。

例如,要仅使用 /etc/my-opts.cnf 文件而忽略标准配置文件,可以像下面这样调用程序:

shell> mysql --defaults-file=/etc/my-opts.cnf

如果多次指定一个选项(不管是在同一个配置文件中,还是在多个配置文件中),则最后出现的选项值优先。

有关使用配置文件的更多信息,请参阅《 MySQL 参考手册》:

http://dev.mysql.com/doc/refman/5.6/en/option-files.html

7)        显示配置文件中的选项

通过使用 --print-defaults 选项执行 mysql 客户机或者使用 my_print_defaults 实用程序,可以查看读取特定选项组的程序所使用的选项。输出由各种选项组成,每个选项占一行,其形式与命令行上指定选项时相同。此输出会因为配置文件设置而有差异。

my_print_defaults 接受以下选项:

--help, -? :显示帮助信息并退出。

--config-file=<file_name> --defaults-file=<file_name>

-c <file_name> :仅读取指定的配置文件。

--debug=<debug_options> -# <debug_options> :写入调试日志。

--defaults-extra-file=<file_name> --extra-file=<file_name> -e <file_name> :在全局配置文件之后,但在用户配置文件之前(在 Linux 上),读取此配置文件。

--defaults-group-suffix=<suffix> -g <suffix> :读取具有此后缀的组。

--no-defaults -n :返回一个空字符串。

--verbose -v :详细模式。输出有关程序行为的更多信息。

--version -V 显示版本信息并退出。

通过命令行按组显示选项。 [mysql] [client] 组示例:

shell> my_print_defaults mysql client

--user=myusername

--password=secret

--host=localhost

--port=3306

--character-set-server=latin1

或者(对于相同的输出):

mysql --print-defaults mysql client

 

8)        遮蔽验证选项

建议不要使用 mysql -uroot -poracle 形式在命令行上指定口令。为方便起见,可以将口令放在 [client] 选项组中,但口令以纯文本方式存储,对配置文件有读取访问权限的任何人都能轻易地看到。利用 mysql_config_editor 实用程序,可以将验证凭证存储在加密的登录文件 .mylogin.cnf 中。在 Linux UNIX 上,该文件位置是当前用户的主目录,在 Windows 上是 %APPDATA%\MySQL 目录。 MySQL 客户机程序以后可以读取该文件以获取用于连接到 MySQL 服务器的验证凭证。加密方法是可逆的,因此不应假设凭证对任何有文件读取权限的人都是安全的。相反,该功能使得避免使用纯文本凭证变得更容易。

.mylogin.cnf 登录文件的未加密格式由选项组组成,类似于其他配置文件。 .mylogin.cnf 中的每个选项组称为“登录路径” ,仅允许一组有限的选项:主机、用户和口令。可将登录路径视为一组值,可以指示服务器主机以及用于服务器验证的凭证。

下面是一个示例:

[admin]

user = root

password = oracle

host = 127.0.0.1

 

shell>mysql --login-path=admin

 

9)        登录路径

创建登录路径:

mysql_config_editor --login-path=<login-path> --user=<user> --password --host=<hostname>

以纯文本格式查看单个登录路径:

mysql_config_editor print --login-path=<login-path>

以纯文本格式查看所有登录路径:

mysql_config_editor print --all

删除登录路径:

mysql_config_editor remove --login-path=<login-path>

默认登录路径名称为 client ,被所有标准客户机读取

如果调用 mysql_config_editor 时不使用 --login-path 选项,则将使用 [client] 登录路径。默认情况下,所有标准客户机都使用此登录路径。

例如,以下命令将创建一个所有标准客户机都使用的 [client] 登录路径:

shell> mysql_config_editor set --user=root --password

Enter password: oracle

调用标准客户机时不提供命令行参数或配置文件将导致读取 .mylogin.cnf 文件中的 [client] 登录路径以及任何配置文件中的 [client] 选项组。例如,以下输出显示了调用 mysql 客户机而不提供任何选项的结果(已执行前述命令):

shell> mysql

Welcome to the MySQL monitor. Commands end with ; or \g.

...

 

1.2.        服务器系统变量

MySQL 服务器维护了许多服务器系统变量,这些变量可指示服务器的配置情况。在 shell 下使用 mysqld --verbose --help 命令可以查看服务器根据其内部编译的默认值使用的值,以及服务器读取的任何配置文件, shell 下使用 mysqld --no-defaults --verbose --help 命令可以查看服务器根据其内部编译的默认值使用的值,忽略任何配置文件中的设置:

每个系统变量都有默认值,通过执行以下任一操作,可以在服务器启动时设置变量:在命令行上使用选项或者使用配置文件;系统变量值可以在表达式中引用,也可以查看服务器使用的系统变量值。

         mysql 客户机内部,使用此命令可以仅查看变量值,没有其他启动选项:

SHOW GLOBAL VARIABLES;

有关服务器系统变量的更多信息,请参阅《 MySQL 参考手册》:

http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html

 

1)        动态系统变量

MySQL 维护了两种包含系统变量的作用域。 GLOBAL 变量影响服务器的整体操作。 SESSION 变量影响其对单个客户机连接的操作。变量存在于任一作用域中,也可同时存在于两个作用域中。

变量及其作用域的示例包括:

仅全局 key_buffer_size query_cache_size

全局和会话 sort_buffer_size max_join_size

仅会话 timestamp error_count

在更改变量值时,适用以下几点:

设置会话变量不需要任何特殊权限,但客户机只能更改自己的会话变量,不能更改其他任何客户机的会话变量。

LOCAL @@local SESSION @@session 的同义词。

如果不指定 GLOBAL SESSION ,则当会话变量存在时, SET 将更改会话变量;会话变量不存在时,将产生错误。

2)        显示动态系统变量

列出所有可用变量及其值:

SHOW [GLOBAL|SESSION] VARIABLES;

列出特定的变量值:

mysql> SHOW VARIABLES LIKE 'bulk%';

+-------------------------+---------+

| Variable_name | Value |

+-------------------------+---------+

| bulk_insert_buffer_size | 8388608 |

+-------------------------+---------+

设置一个新值,然后列出:

mysql> SET bulk_insert_buffer_size=4000000;

mysql> SHOW VARIABLES LIKE 'bulk%';

+-------------------------+---------+

| Variable_name | Value |

+-------------------------+---------+

| bulk_insert_buffer_size | 4000000 |

+-------------------------+---------+

SHOW VARIABLE 会话示例使用 'bulk%' 查找用于设置插入缓冲区大小幻灯片中的变量,但是,可以使用整个变量名称来输入任何变量,也可输入部分变量名称和百分比符号 (%) 通配符。

必须按如下方式设置特定的变量类型:

²   对具有字符串类型(如 CHAR VARCHAR )的变量使用字符串值。

²   对具有数值类型(如 INT DECIMAL )的变量使用数值。

²   将具有布尔( BOOL BOOLEAN )类型的变量设置为 0 1 ON OFF 。(如果在命令行上或在配置文件中设置布尔变量,则使用数值。)

²   将枚举类型的变量设置为可用的变量值之一,但也可将其设置为与所需枚举值对应的数字。对于枚举的服务器变量,第一个枚举值对应于 0 。这不同于 ENUM 列,后者的第一个枚举值对应于 1

有关动态服务器变量的更多信息,请参阅《 MySQL 参考手册》:

http://dev.mysql.com/doc/refman/5.6/en/dynamic-system-variables.html

3)        结构化系统变量

MySQL 支持一种结构化变量类型,该变量类型可以指定控制 key buffer 操作的参数。 key buffer 结构化变量具有以下组件:

key_buffer_size

key_cache_block_size

key_cache_division_limit

key_cache_age_threshold

要引用结构化变量实例的组件,可使用复合名称:

instance_name.component_name format

示例:

hot_cache.key_buffer_size

hot_cache.key_cache_block_size

cold_cache.key_cache_block_size

有关结构化系统变量的更多信息,请参阅《 MySQL 参考手册》:

http://dev.mysql.com/doc/refman/5.6/en/structured-system-variables.html

4)        服务器状态变量

使用 SHOW STATUS 语句评估系统运行状况。

从两种类别中选择(类似于动态变量):

LOCAL SESSION 的同义词。如果没有修饰符,则默认值为 SESSION

mysql> SHOW GLOBAL STATUS;

+-----------------------+-------+

| Variable_name | Value |

+-----------------------+-------+

| Aborted_clients | 0 |

| Aborted_connects | 0 |

| Binlog_cache_disk_use | 0 |

| Bytes_received | 169 |

| Bytes_sent | 331 |

| Com_admin_commands | 0 |

...

有些状态变量只有一个全局值。对于这些状态变量, GLOBAL SESSION 的值是相同的。

有关服务器状态变量的更多信息,请参阅《 MySQL 参考手册》:

http://dev.mysql.com/doc/refman/5.6/en/server-status-variables.html

1.3.        SQL 模式

通过设置 SQL 模式配置多种服务器操作特征,指定 MySQL 对接受输入数据的宽容度,设置与其他数据库系统的兼容性,控制查询处理(启用或禁用与 SQL 符合性相关的行为),覆盖 SQL 的“空” 默认模式(空模式不启用限制或符合性行为)。

SQL 模式由控制查询处理某些方面的可选值组成。设置了相应的 SQL 模式后,客户机就可以对以下项目进行某种程度的控制:

²   输入数据: SQL 模式可用于指示服务器对接受输入数据的宽容度。

²   标准 SQL 符合性: SQL 模式可用于启用或禁用与标准 SQL 符合性相关的行为。

²   兼容性: SQL 模式可用于改进与其他数据库系统的兼容性。

默认的 SQL 模式为 NO_ENGINE_SUBSTITUTION ,默认的配置文件会添加 STRICT_TRANS_TABLES

 

1)        设置 SQL 模式

²   通过命令行在启动时设置:

shell> mysqld --sql-mode=<mode_value>

²   在配置文件内设置:

[mysqld]

sql-mode=IGNORE_SPACE

²   SET 语句

mysql 中,在启动之后:

SET [SESSION|GLOBAL] sql_mode=<mode_value>

示例:

使用单个模式值设置 SQL 模式:

SET sql_mode = ANSI_QUOTES;

SET sql_mode = 'TRADITIONAL';

使用多个模式名称设置 SQL 模式:

sql_mode = 'IGNORE_SPACE,ANSI_QUOTES,NO_ENGINE_SUBSTITUTION';

使用 SELECT 语句检查当前的 sql_mode 设置:

SELECT @@sql_mode;

清除当前 SQL 模式:

SET sql_mode=''

单个客户机可按自己的要求配置 SQL 模式,但也可使用 --sql-mode 选项设置服务器启动时的默认 SQL 模式。如果服务器的运行模式对接受无效数据或创建 MySQL 用户帐户比较慎重,则可能需要执行此操作。

如果没有修饰符,则 SET 将更改会话 SQL 模式。调用 SET 语句时可以带一个空字符串,也可以带一个或多个模式名称(用逗号分隔)。如果值为空或者包含多个模式名称,则必须将值放在引号中。如果值包含一个模式名称,则引号可有可无。 SQL 模式值不区分大小写。

2)        常用 SQL 模式

STRICT_TRANS_TABLES STRICT_ALL_TABLES :没有这些模式, MySQL 将接受缺少、超出范围或格式不正确的值。启用 STRICT_TRANS_TABLES 时将为事务表设置“严格模式” ;也可在默认的 my.cnf 文件中启用。启用 STRICT_ALL_TABLES 时将为所有表设置严格模式。

TRADITIONAL 启用此 SQL 模式可对输入数据值施加类似于其他数据库服务器的限制。在此模式下,使用 GRANT 语句可创建要求指定口令的用户。

IGNORE_SPACE :默认情况下,必须调用函数名称与后接括号间没有空格的函数。启用此模式后,允许存在此类空格,并使函数名称成为保留字。

ERROR_FOR_DIVISION_BY_ZERO :默认情况下,除数为零时将产生结果 NULL 。在启用此模式的情况下插入数据时,除数为零将导致出现警告,在严格模式下将出现错误。

ANSI :使用此组合模式将使 MySQL 服务器变得更加“类似于 ANSI ”。即,此模式支持的行为更像标准 SQL ,如 ANSI_QUOTES PIPES_AS_CONCAT

NO_ENGINE_SUBSTITUTION :如果在创建或更改表时指定了不可用的存储引擎,除非启用了此模式,否则 MySQL 将替换默认存储引擎。这是默认的 SQL 模式。

 

1.4.        日志文件

MySQL 用不同的日志文件来记录服务器活动,记录有关服务器执行的 SQL 语句的信息:

²   错误日志: 与启动、关闭和异常情况有关的诊断信息

²   常规查询日志: 服务器从客户机收到的所有语句

²   慢速查询日志: 需要长时间执行的查询

²   二进制日志: 修改数据的语句

²   审计日志: 企业版基于策略的审计      

这些日志可用于评估服务器的操作状态、用于崩溃后的数据恢复、用于复制、用于帮助确定运行速度慢的查询以及用于安全和法规遵从性。在默认情况下,这些日志都未启用( Windows 中的错误日志除外)。必须了解的是,日志文件(特别是常规查询日志)的大小可能会增长到相当大。

有关日志文件的更多信息,请参阅《 MySQL 参考手册》:

http://dev.mysql.com/doc/refman/5.6/en/server-logs.html

http://dev.mysql.com/doc/refman/5.6/en/mysql-enterprise-audit.html

 

1)        日志文件用法列表

服务器在数据目录中创建所有日志文件;在未设置其他路径名的情况下,服务器会将文件名设置为当前主机名。通过在启动服务器时使用对应的选项(在命令行上,或者配置文件中(不带前缀 -- )),可以启用这些日志文件。

错误日志 设置 --log-error=<file_name> 以将错误记录到指定文件中。 mysqld_safe 脚本可创建错误日志,并在启动服务器时将其输出重定向到该错误日志。

常规查询日志 设置 --general_log_file=<file_name> 以记录查询。全局的 general_log general_log_file 服务器变量可提供对常规查询日志的运行时控制。将 general_log 设置为 0 (或 OFF )禁用该日志,设置为 1 (或 ON )启用该日志。

慢速查询日志 设置 --slow_query_log_file=<file_name> 以提供对慢速查询日志的运行时控制。将 slow_query_log 设置为 0 禁用该日志,设置为 1 启用该日志。如果日志文件已打开,则将其关闭,然后打开新文件。

二进制日志 设置 --log-bin 以启用二进制日志记录。服务器使用该选项值作为基名;在创建新日志文件时,在基名上添加一个升序数字后缀。这些日志文件以二进制格式(而不是文本格式)存储。

审计日志 审计日志是作为企业版插件提供的;加载该日志后,可用于将事件记录到 audit_log_file 选项指定的文件中。审计过程会不断写入审计日志,直到将该插件删除,或者通过 audit_log_policy=NONE 选项设置关闭审计。在服务器启动时使用 audit_log=FORCE_PLUS_PERMANENT 作为选项,可以防止删除该插件。

 

2)        二进制日志记录

二进制日志包含描述数据库更改(如创建数据库或更改表数据)的“事件” 。二进制日志还包含可能做出更改的语句的事件(例如,没有匹配行的 DELETE )。该日志还包含有关每条更新语句所用时间的信息。二进制日志有两个重要用途:复制和数据恢复。

MySQL 使用日志传送复制解决方案。使用日志传送系统时,可以将主系统上发生的所有数据更改存储在二进制日志中,然后通过从系统检索这些数据更改,并根据接收到的这些日志文件执行更改。可以实时下载日志文件并执行内容;即,只要生成日志文件事件,就将其发送到连接的从系统供执行。由于网络传播存在延迟,从系统可能需要几秒到几分钟(最坏的情况)时间来接收更新。在理想的情况下,延迟会在一秒以内。

发生以下事件之一时,二进制日志会轮转:

l   重新启动 MySQL 服务器。

l   达到允许的最大大小 (max_binlog_size)

l   发出了 FLUSH LOGS SQL 命令。

二进制日志独立于存储引擎。不管使用的存储引擎是哪个(即 InnoDB MyISAM ), MySQL 复制都会工作。

 

3)        二进制日志记录格式

基于语句的二进制日志记录:

l   包含实际 SQL 语句

l   包括 DDL CREATE DROP 等)和 DML UPDATE DELETE 等)语句

l   相对较小的文件保存磁盘空间和网络带宽

l   并非所有复制的语句都会在远程计算机上正确重放

l   要求主系统和从系统上复制的表和列完全相同(或者符合多个限制条件)

基于行的二进制日志记录:

l   指示对单个表行的影响情况

l   正确重放所有语句,即使对于在使用基于语句的日志记录时未正确复制的功能导致的更改也是如此

按如下方式设置格式:

SET [GLOBAL|SESSION] BINLOG_FORMAT=[row|statement|mixed|default];

注: 使用 mixed 选项可让 MySQL 选取最适合单个事件的格式。 MySQL 通常会使用基于语句的二进制日志,但在需要时可恢复到基于行的复制。

 

4)        查询二进制日志文件

使用 SHOW BINARY LOGS 语句可完成以下任务:

# 列出当前的日志文件和文件大小

mysql> SHOW BINARY LOGS;

+---------------+-----------+

| Log_name | File_size |

+---------------+-----------+

| binlog.000015 | 724935 |

| binlog.000016 | 733481 |

+---------------+-----------+

使用 SHOW MASTER STATUS 语句可完成以下任务:

# 显示下一个事件的主状态

mysql> SHOW MASTER STATUS;

+---------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+---------------+----------+--------------+------------------+

| binlog.000016 | 733481 | world_innodb | manual,mysql |

+---------------+----------+--------------+------------------+

语句以描述数据库修改的“事件” 形式存储在二进制日志中。要确定事件,必须获得二进制日志文件名称和字节偏移(即位置)。例如,日志文件 binlog.000016 、位置 733481 可确定幻灯片中的最后一个事件。

SHOW MASTER STATUS 命令需要 SUPER REPLICATION CLIENT 权限。

 

5)        查看二进制日志内容

二进制日志是无法使用普通文本查看器查看的,日志以紧凑二进制格式存储。使用 mysqlbinlog 实用程序可以将二进制日志转换成 SQL 文本格式,在标准输出中查看数据:

shell> mysqlbinlog host-bin.000001 host-bin.000002

也可以将输出重定向到 more

shell> mysqlbinlog host-bin.000001 | more

通过命令行执行 mysqlbinlog 程序,将要查看的日志指定为参数。此程序有多个选项,提供诸如根据时间或文件偏移提取事件之类的功能。可以查看所有带 --help 标志的选项。在 mysqlbinlog 输出中,事件前面会有提供相关信息的头注释:

# at 141

#100309 9:28:36 server id 123 end_log_pos 245

Query thread_id=3350 exec_time=11 error_code=0

如果使用基于语句的日志记录创建二进制日志,然后运行 mysqlbinlog --database=test 创建可读文件,则服务器将过滤掉不与 test 数据库关联的语句:

INSERT INTO test.t1 (i) VALUES(100);

----------------------------------------

| USE test; |

| INSERT INTO test.t1 (i) VALUES(101); |

| INSERT INTO t1 (i) VALUES(102); |

| INSERT INTO db2.t2 (j) VALUES(201); |

----------------------------------------

USE db2;

INSERT INTO db2.t2 (j) VALUES(202);

因为没有默认数据库,因此不包括第一条 INSERT 语句。输出的是跟在 USE test 后面的三条 INSERT 语句,而不是跟在 USE db2 后面的 INSERT 语句。

 

6)        删除二进制日志

默认情况下,不会自动删除旧的日志文件。

A.        根据存在时间删除日志:

SET GLOBAL expire_logs_days = 7;

…或者…

PURGE BINARY LOGS BEFORE now() - INTERVAL 3 day;

B.        根据文件名删除日志:

PURGE BINARY LOGS TO 'mysql-bin.000010';

C.        要在二进制日志轮转过程中自动删除存在时间多于指定天数的任何二进制日志,可使用 expire_logs_days 设置。

也可以在配置文件中配置 expire_logs_days

[mysqld]

expire_logs_days=7

 

7)        配置企业审计

企业审计通过使用 audit_log 服务器插件实现,该功能随企业版本订阅提供。企业审计启用后,在日志文件中生成一个服务器活动审计记录,内容取决于策略,可能包括:

²   在系统上发生的错误的记录

²   客户机连接和断开连接的时间

²   客户机在连接期间执行的操作

²   客户机访问的数据库和表

A.        安装 audit_log 插件

要安装 audit_log 插件,请使用 INSTALL PLUGIN 语法,如以下示例中所示:

INSTALL PLUGIN audit_log SONAME 'audit_log.so';

或者,也可以在服务器启动时设置 plugin-load 选项:

[mysqld]

plugin-load=audit_log.so

默认情况下,装入该插件就会启用日志记录。将选项 audit-log 设置为 OFF 可禁用日志记录。要防止在运行时删除该插件,可设置以下选项:

audit-log=FORCE_PLUS_PERMANENT

         日志文件命名为 audit.log ,默认情况下位于服务器数据目录中。要更改该文件的名称或位置,可在服务器启动时设置 audit_log_file 系统变量。

 

B.        日志记录策略

基于策略的日志记录通过 audit_log_policy 选项设置,提供的日志记录选项有 ALL NONE LOGINS QUERIES ,默认为 ALL

要平衡遵从性和性能,可使用 audit_log_strategy 选项在 SYNCHRONOUS ASYNCHRONOUS SEMISYNCHRONOUS PERFORMANCE 之间进行选择。如果将 audit_log_rotate_on_size 设置为某个大于 0 的数字,则当日志文件大小超出了该数量的 4 KB 数据块大小时,将轮转日志文件。

有关配置企业审计的更多信息,请参阅《 MySQL 参考手册》:

http://dev.mysql.com/doc/refman/5.6/en/audit-log-plugin-options-variables.html

 

C.        审计日志文件

审计日志文件以 XML 形式写入,采用 UTF-8 编码。根元素为 <AUDIT> 。根元素的结束标记 </AUDIT> 在该插件终止时写入。在审计日志插件处于活动状态期间,文件中没有该标记。每个审计条目就是一个 <AUDIT_RECORD /> 元素:

<AUDIT_RECORD TIMESTAMP="2012-10-12T09:35:15"

NAME="Connect" CONNECTION_ID="4" STATUS="0"

USER="root" PRIV_USER="root" OS_LOGIN="" PROXY_USER=""

HOST="localhost" IP="127.0.0.1" DB=""/>

<AUDIT_RECORD TIMESTAMP="2012-10-12T09:38:33"

NAME="Query" CONNECTION_ID="4" STATUS="0"

SQLTEXT="INSERT INTO tbl VALUES(1, 2)"/>

 

每个审计记录的 TIMESTAMP 采用 UTC 格式。

NAME 属性代表事件类型。例如, Connect 表示登录事件, Quit 表示客户机断开连接, Shutdown 表示服务器关闭。 Audit 和“ NoAudit 表示审计开始和停止的点。

STATUS 属性提供命令状态。这与 MySQL 命令 SHOW ERRORS 显示的 Code 值相同。有些属性仅在特定的事件类型中出现。例如, Connect 事件包括诸如 HOST DB IP USER 之类的属性, Query 事件包括 SQLTEXT 属性。

有关企业审计日志文件的更多信息,请参阅《 MySQL 参考手册》:

http://dev.mysql.com/doc/refman/5.6/en/audit-log-file.html

 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16976507/viewspace-2648751/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
数据库工程师,熟悉oracle,postgresql,mysql,DB2等主流关系型数据库运维,调优,一直活跃在运维一线。了解Python,django,简单自动化运维系统开发。

注册时间:2009-03-06

  • 博文量
    138
  • 访问量
    269236