MySQL 8.0 新特性:Persisted System Variables

文若2年前技术文章863


一、前言

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';



相关文章

MongoDB的In-Memory存储引擎

   在企业版 3.2.6版本开始,MongoDB开始有In-Memory存储引擎,除了一些元数据和诊断数据外,In-Memory存储引擎不会存储任何数据到磁盘,包括配置数据、索引、用户凭证等。   ...

MySQL 复制延迟是如何计算的?

MySQL 复制延迟是如何计算的?

前言日常运维中总会收到 MySQL 备库延迟告警,一般数据库监控只读实例延迟都是采集 Seconds_Behind_Master 值,我们都知道它在某些场景下不可靠,今天一起探索 MySQL 是如何计...

Mysql备份及恢复-XtraBackup

Mysql备份及恢复-XtraBackup

1、下载备份软件#不能使用8.0的版本,不支持mysql8.0之前的备份wget -c https://downloads.percona.com/downloads/Percona-XtraBack...

docker网络介绍

docker网络介绍

一、docker网络介绍安装docker时,会自动创建三个网络。可以使用docker network ls命令列出这些网络Docker内置这三个网络,运行容器时,可以使用--network标志来指定容...

Linux运维工具

1.1 查看进程占用带宽情况 - NethogsNethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽。1.2 硬盘读取性能测试 - IOZoneIOZone 是一款 Linu...

数仓主流架构简介之一

数仓主流架构简介之一

一、Lambda架构Apache Storm的创建者Nathan Marz于 2011 年开发,旨在解决大规模实时数据处理的挑战。Lambda数据架构提供了一个可扩展、容错且灵活的系统来处理大量数据。...

发表评论    

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