查看服务器使用的默认命令选项和系统变量:
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;
注:使用persist持久化系统变量是在MySQL 8.0.14添加的,默认会在数据目录下生成一个名为 mysqld-auto.cnf 的文件
persist 与 persist_only 区别:
persist 会在设置当前全局变量的前提下,将其保存到 mysqld-auto.cnf 文件中
persist_only 只会将其保存到 mysqld-auto.cnf 文件中,而不会设置当前全局变量,这对只读全局变量有用
设置会话系统变量的几种形式,比如:
mysql> set sql_mode = 'TRADITIONAL';
mysql> set session sql_mode = 'TRADITIONAL';
mysql> set @@session.sql_mode = 'TRADITIONAL';