MySQL 8 服务器选项配置

查看服务器使用的默认命令选项和系统变量:

mysqld --help --verbose

 

查看服务器当前运行时使用的系统变量和状态变量:

mysql> SHOW VARIABLES;

mysql> SHOW STATUS;

 

通过mysqladmin命令查看系统变量和服务器变量的当前值:

shell> mysqladmin variables

shell> mysqladmin extended-status

 

MySQL 8.0.16 版本添加了验证服务器配置的选项:--validate-config

这个功能可以在不正常启动MySQL服务器的前提下,验证服务器配置是否正确

--validate-config 可以和 --log-error-verbosity 一起使用

--validate-config检测到错误后就会立即停止检查,所以如果存在多个错误的情况下,重复执行检查操作,比如:

shell> mysqld --defaults-file=/etc/my.cnf --read_only=s --validate-config --log_error_verbosity=2

 

注:由于 --validate-config 选项是在服务器没有正常启动的情况下执行的配置检查,所以配置检查不会初始化存储引擎、其他插件、组件等

 

--validate-config 选项在MySQL服务器升级操作中比较有用,可以通过该选项验证之前的配置在升级后是否废弃

 

系统变量的使用:

每个系统变量都有一个默认值

在服务器启动时,系统变量可以在命令行或者选项文件中设置

系统变量来源:内置系统变量、插件提供的系统变量、组件提供的系统变量

系统变量名称:在命令行和选项文件中下划线和中划线是等价的;但是在系统运行时,引用系统变量名称时必须使用下划线

 

设置全局系统变量的几种方式,比如:

mysql> set global max_connections=100;

mysql> set @@global.max_connections=100;

mysql> set persist max_connections=100;

mysql> set persist_only max_connections=100;

mysql> reset persist max_connections;

mysql> reset persist;

注:使用persist持久化系统变量是在MySQL 8.0.14添加的,默认会在数据目录下生成一个名为 mysqld-auto.cnf 的文件

persist 与 persist_only 区别:

persist 会在设置当前全局变量的前提下,将其保存到 mysqld-auto.cnf 文件中

persist_only 只会将其保存到 mysqld-auto.cnf 文件中,而不会设置当前全局变量,这对只读全局变量有用

查看persist 系统变量信息:performance_schema.persisted_variables

 

设置会话系统变量的几种形式,比如:

mysql> set sql_mode = 'TRADITIONAL';

mysql> set session sql_mode = 'TRADITIONAL';

mysql> set @@session.sql_mode = 'TRADITIONAL';

 

关于设置系统变量值的注意事项:

在服务器启动时,表示值倍数的后缀可以添加到系统变量值后面;而系统运行时设置系统变量可以使用表达式的形式,比如:

max_allowed_packet=16M

mysql> set global max_allowed_packet=16*1024*1024;

 

如果需要限制系统变量在运行时能够设置的最大值,可以通过在MySQL Server启动时在系统变量前指定maximum前缀,比如:

shell> mysqld --maximum--max-allowed-packet

 

在官档中提到通过 1 或者 ON 启用的系统变量、通过 0 或者 OFF 禁用的系统变量,在命令行中只能使用 1 或者 0,而不能使用 ON 或者 OFF

测试:是没有区别的

 

查看系统变量的两种方式:SELECT语句 和 SHOW语句,比如:

mysql> select @@max_allowed_packet;

mysql> show variables like 'max_allowed_packet';

 

服务器状态变量查看:

show [global | session] status like 'variable_name';

注:global 显示所有连接的总计的值、session 显示当前连接的值

你可能感兴趣的:(MySQL 8 服务器选项配置)