千家信息网

如何使MySQL8全局参数持久化

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要讲解了"如何使MySQL8全局参数持久化",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何使MySQL8全局参数持久化"吧!目录全局参数持
千家信息网最后更新 2025年11月09日如何使MySQL8全局参数持久化

这篇文章主要讲解了"如何使MySQL8全局参数持久化",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何使MySQL8全局参数持久化"吧!

目录
  • 全局参数持久化

  • 写在最后

全局参数持久化

MySQL 8.0 版本支持在线修改全局参数并持久化,通过加上 PERSIST 关键字,可以将修改的参数持久化到新的配置文件(mysqld-auto.cnf)中,重启 MySQL 时,可以从该配置文件获取到最新的配置参数!

对应的Worklog [WL#8688]:dev.mysql.com/worklog/tas…

启用这个功能,使用特定的语法 SET PERSIST 来设定任意可动态修改的全局变量!

SET PERSIST

语句可以修改内存中变量的值,并且将修改后的值写⼊数据⽬录中的 mysqld-auto.cnf 中。

SET PERSIST_ONLY

语句不会修改内存中变量的值,只是将修改后的值写⼊数据⽬录中的 mysqld-auto.cnf 中。

以 max_connections 参数为例:

mysql> select * from performance_schema.persisted_variables;Empty set (0.00 sec)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=300;Query OK, 0 rows affected (0.00 sec)mysql> select * from performance_schema.persisted_variables;+-----------------+----------------+| VARIABLE_NAME   | VARIABLE_VALUE |+-----------------+----------------+| max_connections | 300            |+-----------------+----------------+1 row in set (0.00 sec)

系统会在数据目录下生成一个包含 json 格式的 mysqld-auto.cnf 的文件,格式化后如下所示,当 my.cnf 和mysqld-auto.cnf 同时存在时,后者具有更高优先级。

{    "Version": 1,     "mysql_server": {        "max_connections": {            "Value": "300",             "Metadata": {                "Timestamp": 1632575065787609,                 "User": "root",                 "Host": "localhost"            }        }    }}

? 注意: 即使你通过 SET PERSIST 修改配置的值并没有任何变化,也会写入到 mysqld-auto.cnf 文件中。但你可以通过设置成 DEFAULT 值的方式来恢复初始默认值!

如果想要恢复 max_connections 参数为初始默认值,只需要执行:

mysql> set persist max_connections=DEFAULT;Query OK, 0 rows affected (0.00 sec)mysql> select * from performance_schema.persisted_variables;+-----------------+----------------+| VARIABLE_NAME   | VARIABLE_VALUE |+-----------------+----------------+| max_connections | 151            |+-----------------+----------------+1 row in set (0.00 sec)

如果想要移除所有的全局持久化参数,则只需执行:

mysql> RESET PERSIST;Query OK, 0 rows affected (0.00 sec)mysql> select * from performance_schema.persisted_variables;Empty set (0.00 sec)

当然,删除 mysqld-auto.cnf 文件后,重启 MySQL 也可!

写在最后

主要代码:

Commit f2bc0f89b7f94cc8fe963d08157413a01d14d994

主要入口函数(8.0.0):

接口函数大多定义在sql/persisted_variable.cc文件中:
启动时载入mysqld-auto.cnf的内容: Persisted_variables_cache::load_persist_file(); 通过json解析合法性,并存入内存
将文件中读取的配置进行设置: Persisted_variables_cache::set_persist_options

运行SET PERSIST命令时,调用Persisted_variables_cache::set_variable 更新内存中存储的值
写入mysqld-auto.cnf文件中: Persisted_variables_cache::flush_to_file

感谢各位的阅读,以上就是"如何使MySQL8全局参数持久化"的内容了,经过本文的学习后,相信大家对如何使MySQL8全局参数持久化这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

参数 全局 文件 配置 内存 内容 变量 数据 学习 函数 格式 目录 语句 合法 代码 优先级 入口 关键 关键字 功能 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发的黑名单 软件开发文档放到哪里管理 服务器双网不通硬件咋排查 计算机网络技术防范八不得 华为高速动态服务器 深圳服务器设备供货商哪家好 hp服务器 红灯 数据库中浏览browse功能 采用数据库镜像技术 c语言图书馆数据库 湖北互联网软件开发市场 软件开发工作5年后工资多少 一款软件运营要不要服务器 网络安全增长曲线图 济南crm软件开发服务 导出数据库前1000条 网络安全演讲10分钟 怎样远程管理网站服务器 唐山戴尔服务器代理商查询 网络安全与信息化统计 软件开发文档放到哪里管理 销售软件开发需要有资质证书 联想650服务器管理端口 浙江省网络安全学院干嘛用的 工商银行软件开发二级经理 开发数据库权限代码 计算机网络安全答案第三版 一个实例下可以多个数据库吗 媒体发布新闻需不需要用服务器 北京尧辰酒店系统软件开发公司
0