MySQL 8.0 新特性:Persisted System Variables

文若2年前技术文章623


一、前言

MySQL 5.7 之前我们修改参数变量后,需要将其手动写入到服务端配置文件中,否则重启后又恢复原有的配置,在 8.0 中可以在 MySQL 客户端直接将参数持久化,节省在服务器操作的步骤,下面我们一起测试一下,


二、测试

max_connections 参数为例:

carbon-1.png

目前 `max_connectios` 设置为 1000 当我们使用 set global 设置为 1200 后,参数并没有持久化,重启之后依然为 1000 👇

carbon (1).png

重启 MySQL 参数依然为 1000

carbon (2).png

接下来我们使用 8.0 新特性 PERSIST 测试一下

SET PERSIST max_connections = 1200;

carbon-1.png

重启 MySQL 发现 max_connections = 1200 参数已经被持久化

carbon-1.png

二、原理

当使用 PERSIST 关键字时,变量更改将更新到数据目录中的 mysqld-auto.cnf 选项文件。mysqld-auto.cnf 是仅在第一次执行 PERSIST 或 PERSIST_ONLY 语句时创建的 JSON 格式文件。内容如下👇

carbon-1.png

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

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


当需要修改只读变量时,如果使用 PERSIST 会出👇错误:
ERROR 1238 (HY000): Variable 'innodb_log_file_size' is a read only variable
此时需要使用 PERSIST_ONLY 修改,重启后生效。


清空变量设置


RESET PERSIST;


需要的权限


GRANT SYSTEM_VARIABLES_ADMIN, PERSIST_RO_VARIABLES_ADMIN, SHUTDOWN on *.* to 'admin'@'localhost';



相关文章

TCP短连接和长连接

TCP短连接和长连接

     当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,...

oracle11g db打补丁

1 升级opatch升级的方式就是解压安装包到ORACLE_HOME即可。oracle下执行Plain Text复制代码su - oracle1.备份原opatchcd $ORACLE_HOMEmv...

hive 通过元数据导出所有表信息

select db.NAME as db_name,tb.TBL_NAME as table_name,case tb.TBL_TYPE when 'MANAGED_TABLE...

HBase数据结构

1 RowKey与nosql数据库们一样,RowKey是用来检索记录的主键。访问HBASE table中的行,只有三种方式:1.通过单个RowKey访问2.通过RowKey的range(正则)3.全表...

Kubernetes源码解读(三)-- Indexer和ThreadSafeStore源码分析

Kubernetes源码解读(三)-- Indexer和ThreadSafeStore源码分析

Indexer主要提供一个对象根据一定条件检索的能力,典型的实现是通过nameapce/name来构造key,通过ThreadSafeStore 来存储对象。换而言之,Indexer主要依赖于Thre...

等待事件latch: cache buffers chains 的分析与优化

等待事件latch: cache buffers chains 的分析与优化

等待事件latch: cache buffers chains 的分析与优化要理解latch: cache buffers chains并解决这个问题,就需要深入的了解Buffer Cach...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。