共计 1857 个字符,预计需要花费 5 分钟才能阅读完成。
自动写代码机器人,免费开通
这篇文章将为大家详细讲解有关如何在 MySQL8 中修改持久化全局变量,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
mysql show variables like %max_connections%
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| max_connections | 151 |
| mysqlx_max_connections | 100 |
+------------------------+-------+
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 |
+------------------------+-------+
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 |
+-----------------+----------------+
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;
关于如何在 MySQL8 中修改持久化全局变量就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
向 AI 问一下细节