MySQL 8.0新特性--让你轻轻松松找到配置项的位置
2017-11-19 10:45
666 查看
前言
我们都知道,MySQL配置项可以从多种方式设置:1、在配置文件中定义, 查看配置路径:
mysqld --verbose --help| grep -A 1 "Default options" /etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf
2、通过命令动态修改
set global var=value;
当同一个配置项可能在多个配置文件中都定义,或被动态调整过时,要想确认最终生效的值的来源是非常困难的。
令人高兴的是,MySQL 8.0提供一张表(
performance_schema.variables_info)可轻松查找到一个变量在哪里被定义
使用教程案例
下面以max_connections为例,验证在不同文件和动态修改下如何查看定义位置。
先查看当前值为多少:
mysql> show global variables like 'max_connections'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 151 | +-----------------+-------+
通过
variables_info查看详细信息:
mysql> SELECT t1.*, VARIABLE_VALUE FROM performance_schema.variables_info t1 JOIN performance_schema.global_variables t2 ON t2.VARIABLE_NAME=t1.VARIABLE_NAME WHERE t1.VARIABLE_NAME LIKE 'max_connections'\G *************************** 1. row *************************** VARIABLE_NAME: max_connections VARIABLE_SOURCE: COMPILED VARIABLE_PATH: MIN_VALUE: 1 MAX_VALUE: 100000 SET_TIME: NULL SET_USER: NULL SET_HOST: NULL VARIABLE_VALUE: 151 1 row in set (0.09 sec)
可以看到变量的详细信息,包括变量名、变量值、最小最大值约束、以及最重要的变量来源和路径。
VARIABLE_SOURCE: COMPILED表示未在其它地方定义,采用系统内置默认值。
(https://dev.mysql.com/doc/refman/8.0/en/variables-info-table.html)可看到所有枚举值说明
3.修改配置文件
/etc/my.cnf
[mysqld] max_connections=200
保存,重启
mysqld,执行同样的sql:
*************************** 1. row *************************** VARIABLE_NAME: max_connections VARIABLE_SOURCE: GLOBAL VARIABLE_PATH: /etc/my.cnf MIN_VALUE: 1 MAX_VALUE: 100000 SET_TIME: NULL SET_USER: NULL SET_HOST: NULL VARIABLE_VALUE: 200
这时,能看到变量是在
/etc/my.cnf定义的!
4.在多个配置文件中定义的情况 在
/etc/mysql/my.cnf也定义一次:
[mysqld] max_connections=300
重启再检查:
*************************** 1. row *************************** VARIABLE_NAME: max_connections VARIABLE_SOURCE: GLOBAL VARIABLE_PATH: /etc/mysql/my.cnf MIN_VALUE: 1 MAX_VALUE: 100000 SET_TIME: NULL SET_USER: NULL SET_HOST: NULL VARIABLE_VALUE: 300
可以看到,尽管在两个文件中都定义
max_connections,但最终生效的是
/etc/mysql/my.cnf内定义的值。
再也不用担心无法确认在哪个配置文件了。
动态修改的情况
mysql> set global max_connections=2000; Query OK, 0 rows affected (0.04 sec)
执行查询:
*************************** 1. row *************************** VARIABLE_NAME: max_connections VARIABLE_SOURCE: DYNAMIC VARIABLE_PATH: MIN_VALUE: 1 MAX_VALUE: 100000 SET_TIME: 2017-11-14 11:54:19 SET_USER: root SET_HOST: localhost VARIABLE_VALUE: 2000
可以看到,来源字段显示
DYNAMIC动态修改,且可看到修改时间、修改账户以及修改host。
结尾
很贴心很强大的一个MysQL 8.0新特性,赶紧用起来吧!
参考
http://lefred.be/content/where-does-my-mysql-configuration-variable-value-come-from/https://dev.mysql.com/doc/refman/8.0/en/variables-info-table.html
相关文章推荐
- mysql找到数据的存储位置
- MySQL 8.0复制新特性
- Mysql 8.0 新增特性
- MySQL 8.0新特性:彻底解决困扰运维的复制延迟问题,你信吗? - MySQL
- MySQL 8.0的关系数据库新特性详解
- MySQL8.0-新特性-role
- 来,看看MySQL 5.6, 5.7, 8.0的新特性
- What's New In MySQL 8.0(MySQL 8.0 新特性)
- MySQL8.0 新特性:Partial Update of LOB Column
- MySQL 8.0新特性:彻底解决困扰运维的复制延迟问题,你信吗? - MySQL
- MySQL 8.0新特性
- MySQL8.0 新特性:Partial Update of LOB Column
- MySQL 8.0 优化器新特性交流会
- 关于 MySQL 8.0 新特性“隐藏索引”的一点思考
- MySQL 8.0 的关系数据库新特性
- MySQL 8.0 的关系数据库新特性
- MySQL 8.0的十大新特性
- MySQL 8.0 InnoDB新特性