代码改变世界

MySQL 8.0新特性 -- 持久化全局变量

  abce  阅读(1024)  评论(0编辑  收藏  举报

在之前的版本中,对于全局变量的修改,其只会影响其内存值,而不会持久化到配置文件中。数据库重启,又会恢复成修改前的值。从8.0开始,可通过SET PERSIST命令将全局变量的修改持久化到配置文件中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>show variables like 'max_connections';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| max_connections        | 151   |
+------------------------+-------+
1 rows in set (0.01 sec)
 
>set global.max_connections=155;
Query OK, 0 rows affected (0.00 sec)
 
>show variables like 'max_connections';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| max_connections        | 155   |
+------------------------+-------+
1 rows in set (0.01 sec)

  

查看持久化的变量

修改之后,data目录下会多出一个文件mysqld-auto.cnf。可以直接查看该文件

1
2
3
# more mysqld-auto.cnf
{ "Version" : 1 , "mysql_server" : { "max_connections" : { "Value" : "155" , "Metadata" : { "Timestamp" : 1585748279787787 , "User" :
 "root" , "Host" : "localhost" } } } }

也可以通过表查看:

1
2
3
4
5
6
7
mysql> select * from performance_schema.persisted_variables;
+-----------------+----------------+
| VARIABLE_NAME   | VARIABLE_VALUE |
+-----------------+----------------+
| max_connections | 160            |
+-----------------+----------------+
1 row in set (0.00 sec)

在数据库启动时,会首先读取其它配置文件,最后才读取mysqld-auto.cnf文件

 

执行set persist需要不同的权限,取决于系统变量的类型:
·动态的系统变量,set persist需要system_variables_admin或super权限
·只读的系统变量,set persist需要system_variables_admin和persist_ro_variables_admin权限

set persist设置的变量不仅运行时生效,还会将变量写入mysqld-auto.cnf
set persist_only将变量写入mysqld-auto.cnf,但是不会影响运行时的变量值。重启后才会生效。

移除持久化变量
·reset persist:移除mysqld-auto.cnf中所有的变量
·reset persist system_var_name:移除mysqld-auto.cnf中名为system_var_name的变量
·reset persist IF exists system_var_name:如果变量不存在,不会报错,只会给出warning提示

注意,其只是清空mysqld-auto.cnf和performance_schema.persisted_variables中的内容,对于已经修改了的变量的值,不会产生任何影响。

通过下述方式将全局变量持久化为默认值。注意,是默认值,而不是修改前的值。
mysql> set persist max_connections=default;

这个命令同“set global max_connections=default”类似,都会将变量的值设置为默认值,只不过前者还会将默认值持久化到配置文件中。

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2017-04-01 12C -- ORA-01017
点击右上角即可分享
微信分享提示