文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  服务器配置验证

7.1.3 服务器配置验证

MySQL 支持 --validate-config 选项,该选项允许在不以正常操作模式运行服务器的情况下检查启动配置是否存在问题。

mysqld --validate-config

如果未发现错误,服务器将以退出代码 0 终止。如果发现错误,服务器将显示诊断消息并以退出代码 1 终止。例如:

$> mysqld --validate-config --no-such-option
2018-11-05T17:50:12.738919Z 0 [ERROR] [MY-000068] [Server] unknown
option '--no-such-option'.
2018-11-05T17:50:12.738962Z 0 [ERROR] [MY-010119] [Server] Aborting

服务器会在发现任何错误后立即终止。要进行其他检查,请更正初始问题,然后使用 --validate-config 再次运行服务器。

对于前面的示例,其中使用 --validate-config 会导致显示错误消息,服务器退出代码为 1。根据 log_error_verbosity 的值,也可能会显示警告和信息消息,但不会导致立即验证终止或退出代码为 1。例如,此命令会生成多个警告,这两个警告都会显示。但没有发生错误,因此退出代码为 0:

$> mysqld --validate-config --log_error_verbosity=2
         --read-only=s --transaction_read_only=s
2018-11-05T15:43:18.445863Z 0 [Warning] [MY-000076] [Server] option
'read_only': boolean value 's' was not recognized. Set to OFF.
2018-11-05T15:43:18.445882Z 0 [Warning] [MY-000076] [Server] option
'transaction-read-only': boolean value 's' was not recognized. Set to OFF.

此命令会生成相同的警告,但也会生成一个错误,因此会显示错误消息以及警告,并且退出代码为 1:

$> mysqld --validate-config --log_error_verbosity=2
         --no-such-option --read-only=s --transaction_read_only=s
2018-11-05T15:43:53.152886Z 0 [Warning] [MY-000076] [Server] option
'read_only': boolean value 's' was not recognized. Set to OFF.
2018-11-05T15:43:53.152913Z 0 [Warning] [MY-000076] [Server] option
'transaction-read-only': boolean value 's' was not recognized. Set to OFF.
2018-11-05T15:43:53.164889Z 0 [ERROR] [MY-000068] [Server] unknown
option '--no-such-option'.
2018-11-05T15:43:53.165053Z 0 [ERROR] [MY-010119] [Server] Aborting

--validate-config 选项的范围仅限于服务器在不进行正常启动过程的情况下可以执行的配置检查。因此,配置检查不会初始化存储引擎和其他插件、组件等,也不会验证与那些未初始化子系统关联的选项。

--validate-config 可以在任何时候使用,但在升级后特别有用,用于检查以前与旧服务器一起使用的任何选项是否被升级后的服务器视为已弃用或过时。例如,tx_read_only 系统变量在 8.0 中已移除。假设 MySQL 5.7 服务器在其 my.cnf 文件中使用该系统变量运行,然后升级到 MySQL 8.4。使用 --validate-config 运行升级后的服务器以检查配置会产生以下结果:

$> mysqld --validate-config
2018-11-05T10:40:02.712141Z 0 [ERROR] [MY-000067] [Server] unknown variable
'tx_read_only=ON'.
2018-11-05T10:40:02.712178Z 0 [ERROR] [MY-010119] [Server] Aborting

--validate-config 可以与 --defaults-file 选项一起使用,以仅验证特定文件中的选项:

$> mysqld --defaults-file=./my.cnf-test --validate-config
2018-11-05T10:40:02.712141Z 0 [ERROR] [MY-000067] [Server] unknown variable
'tx_read_only=ON'.
2018-11-05T10:40:02.712178Z 0 [ERROR] [MY-010119] [Server] Aborting

请记住,如果指定了 --defaults-file,则它必须是命令行上的第一个选项。(以相反的选项顺序执行前面的示例会生成一条消息,指示 --defaults-file 本身未知。)