在8以前的版本中,针对全局变量的修改,其总是危害其运行内存值,而不容易持久化到配置文件中。数据库查询重新启动,又会修复成修改前的值。从8开始,可根据SET PERSIST指令将全局变量的修改持久化到配置文件中。

试举一例

mysql> show variables like '%max_connections%';
 ------------------------ ------- 
| Variable_name          | Value |
 ------------------------ ------- 
| max_connections        | 151  |
| mysqlx_max_connections | 100  |
 ------------------------ ------- 
2 rows in set (0.00 sec)

mysql> set persist max_connections=200;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%max_connections%';
 ------------------------ ------- 
| Variable_name          | Value |
 ------------------------ ------- 
| max_connections        | 200  |
| mysqlx_max_connections | 100  |
 ------------------------ ------- 
2 rows in set (0.00 sec)

 

全局变量的修改会储存在多处,
1.  数据信息文件目录下mysqld-auto.cnf文档,
     留意,并不是启动--defaults-file特定的配置文件。
[root@slowtech ~]# cat /var/lib/mysql/mysqld-auto.cnf 
{ "Version" : 1 , "mysql_server" : { "max_connections" : { "Value" : "200" , "Metadata" : { "Timestamp" : 1525509217566258 , "User" : "root" , "Host" : "localhost" } } } }

 

持久化信息内容以json文件格式储存,在其中,Metadata纪录了此次修改的客户及時间信息内容。
 
在数据库查询启动,会最先载入其他配置文件,最终才载入mysqld-auto.cnf文档。不建议手动式修改该文件,其有可能造成数据库查询在起动全过程因其解析错误而不成功。假如出現这类状况,可手动式删掉mysqld-auto.cnf文档或将persisted_globals_load自变量设定为off来防止该文件的载入。
 
2. performance_schema.persisted_variables
mysql> select * from performance_schema.persisted_variables;
 ----------------- ---------------- 
| VARIABLE_NAME  | VARIABLE_VALUE |
 ----------------- ---------------- 
| max_connections | 200            |
 ----------------- ---------------- 
1 row in set (0.00 sec)

 

全局变量的持久化除开SET PERSIST外,也有SET PERSIST_ONLY,与前面一种对比,其只持久化全局变量,而不修改其运行内存值。另外,在管理权限层面,前面一种只必须SYSTEM_VARIABLES_ADMIN,后面一种还必须PERSIST_RO_VARIABLES_ADMIN管理权限。
 
针对早已持久化了自变量,可根据RESET PERSIST指令消除掉,留意,其仅仅清除mysqld-auto.cnf和performance_schema.persisted_variables中的內容,针对早已修改了的自变量的值,不容易造成一切危害。
 
此外,还能够根据以下方法将全局变量持久化为初始值。留意,是初始值,而不是修改前的值。
mysql> set persist max_connections=default;
 
这一指令同“set global max_connections=default”相近,都是会将自变量的值设定为初始值,只不过是前面一种还会继续将初始值持久化到配置文件中。