全局变量的修改持久化

在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.03 sec)

mysql>  set persist max_connections=300;

Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%max_connections%';

+------------------------+-------+

| Variable_name          | Value |

+------------------------+-------+

| max_connections        | 300   |

| mysqlx_max_connections | 100   |

+------------------------+-------+

2 rows in set (0.00 sec)

修改后的保存位置

在数据库启动时,会首先读取其它配置文件,最后才读取mysqld-auto.cnf文件。不建议手动修改该文件,其有可能导致数据库在启动过程中因解析错误而失败。如果出现这种情况,可手动删除mysqld-auto.cnf文件或将persisted_globals_load变量设置为off来避免该文件的加载。

scutech@scutech:~$ cat /mysql/data/mysqld-auto.cnf

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

mysql> select * from performance_schema.persisted_variables;

+-----------------+----------------+

| VARIABLE_NAME   | VARIABLE_VALUE |

+-----------------+----------------+

| max_connections | 300            |

+-----------------+----------------+

1 row in set (0.01 sec)12345678910

MySQL [(none)]> show variables like '%persisted_globals_load%';

+------------------------+-------+

| Variable_name          | Value |

+------------------------+-------+

| persisted_globals_load | ON    |

+------------------------+-------+

1 row in set (0.06 sec)

持久化为默认值

还可以通过下述方式将全局变量持久化为默认值。注意,是默认值,而不是修改前的值。

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> show variables like '%max_connections%';

+------------------------+-------+

| Variable_name          | Value |

+------------------------+-------+

| max_connections        | 151   |

| mysqlx_max_connections | 100   |

+------------------------+-------+

2 rows in set (0.01 sec)

scutech@scutech:~$ cat /mysql/data/mysqld-auto.cnf

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

这个命令同“set global max_connections=default”类似,都会将变量的值设置为默认值,只不过前者还会将默认值持久化到配置文件中。

清空持久化变量

对于已经持久化了变量,可通过reset persist命令清除掉,注意,其只是清空mysqld-auto.cnf和performance_schema.persisted_variables中的内容,对于已经修改了的变量的值,不会产生任何影响。

mysql> reset persist;

Query OK, 0 rows affected (0.00 sec)

mysql> select * from performance_schema.variables_info where variable_source like 'PERSISTED'\G

Empty set (0.04 sec)

cat /mysql/data/mysqld-auto.cnf

{ "Version" : 1 , "mysql_server" : {  } }

修改只读变量

但是对于read only 的参数,修改参数后需要重启才能生效

mysql> set persist innodb_log_file_size=2073741824;

ERROR 1238 (HY000): Variable 'innodb_log_file_size' is a read only variable

mysql> set persist_only innodb_log_file_size=2073741824;

Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'innodb_log_file_size';

+----------------------+-----------+

| Variable_name        | Value     |

+----------------------+-----------+

| innodb_log_file_size | 104857600 |

+----------------------+-----------+

1 row in set (0.02 sec)

mysql> restart ;

Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'innodb_log_file_size';

No connection. Trying to reconnect...

Connection id:    8

Current database: *** NONE ***

+----------------------+------------+

| Variable_name        | Value      |

+----------------------+------------+

| innodb_log_file_size | 2073034752 |

+----------------------+------------+

1 row in set (0.02 sec)

mysql> select * from performance_schema.variables_info where variable_source like 'PERSISTED'\G

*************************** 1. row ***************************

VARIABLE_NAME: innodb_log_file_size

VARIABLE_SOURCE: PERSISTED

VARIABLE_PATH: /mysql/data/mysqld-auto.cnf

MIN_VALUE: 4194304

MAX_VALUE: 18446744073709551615

SET_TIME: 2020-03-11 15:55:20.334556

SET_USER: root

SET_HOST: localhost

1 row in set (0.01 sec)

mysql> system cat  /mysql/data/mysqld-auto.cnf

{ "Version" : 1 , "mysql_server" : { "mysql_server_static_options" : { "innodb_log_file_size" : { "Value" : "2073741824" , "Metadata" : { "Timestamp" : 1583913320334556 , "User" : "root" , "Host" : "localhost" } } } } }mysql>

mysql> system ls -lh /mysql/data/ib_logfile*

-rw-r----- 1 mysql mysql 2.0G Mar 11 15:56 /mysql/data/ib_logfile0

-rw-r----- 1 mysql mysql 2.0G Mar 11 15:56 /mysql/data/ib_logfile1

将mysql的变量置为0_MySQL 8.0 全局变量的修改持久化 set persist相关推荐

  1. MySQL中变量的定义和变量的赋值使用(转)

    说明:现在市面上定义变量的教程和书籍基本都放在存储过程上说明,但是存储过程上变量只能作用于begin...end块中,而普通的变量定义和使用都说的比较少,针对此类问题只能在官方文档中才能找到讲解. 前 ...

  2. MySQL中变量的定义和变量的赋值使用

    MySQL中变量的定义和变量的赋值使用 前言 MySQL存储过程中,定义变量有两种方式: 1.使用set或select直接赋值,变量名以@开头 例如: set @var=1; 可以在一个会话的任何地方 ...

  3. centos下加入mysql环境变量

    centos下加入mysql环境变量 命令行的时候每次都要进入mysql的目录/usr/local/mysql/bin太麻烦了,为了能在任何一个位置直接进入,设置一下环境变量即可 vi /etc/pr ...

  4. mysql session变量_mysql 系统变量和session变量

    mysql系统变量包括全局变量(global)和会话变量(session),global变量对所有session生效,session变量包括global变量.mysql调优必然会涉及这些系统变量的调整 ...

  5. 9、MySQL系统变量(查看和修改)

    在 MySQL 数据库,变量分为系统变量和用户自定义变量.系统变量以 @@ 开头,用户自定义变量以 @ 开头. 服务器维护着两种系统变量,即全局变量(GLOBAL VARIABLES)和会话变量(SE ...

  6. mysql事务变量_mysql学习四之事务、变量、触发器、函数、存储过程

    需求:有一张银行账户表,有A用户给B用户转账:A账户先减少,B账户增加,但是A操作完之后断电了. 解决方案:A减少钱,但是不要立即修改数据表:B收到钱之后,同时修改数据表 事务安全 事务:transa ...

  7. MySQL的内置函数

    MySQL的内置函数 文章目录 MySQL的内置函数 1. 日期函数 2. 字符串函数 3. 数学函数 4. 其它函数 1. 日期函数 获得年月日: select current_date(); +- ...

  8. mysql数据库内置函数大全_MySQL数据库——内置函数

    MySQL数据库--内置函数 建表并插入数据 create table student( id char(36) primary key, name varchar(8) not null, age ...

  9. MySQL 服务器变量 数据操作DML-视图

    原文:MySQL 服务器变量 数据操作DML-视图 SQL语言的组成部分 常见分类: DDL:数据定义语言 DCL:数据控制语言,如授权 DML:数据操作语言 其它分类: 完整性定义语言:DDL的一部 ...

最新文章

  1. HTML5动态圆形导航,jQuery带动画特效的圆形导航菜单特效
  2. Hessian使用记录
  3. java after 函数_Java中关于Date的before函数和after函数的使用
  4. vscode写python_vscode如何编写python?
  5. 史诗巨作[关云长][高清BD-RMVB/992M][国语/中文字幕]
  6. C# Newtonsoft的使用
  7. 亿图图示专家Edraw Max v10.5.2 中文免费版(附安装教程)
  8. jsplumb入门教程及视频教程链接
  9. 量化金融经典理论、重要模型、发展简史大全
  10. uniapp push推送服务使用指南
  11. 人工智能发展历史概述
  12. 【Windows】电脑清理个人隐私数据信息
  13. 云主机是什么,怎么才能购买性价比高的云主机
  14. [经验教程]在拼多多上发起拼单和参与拼单有什么区别?
  15. 代码风格自动化(二)——husky + lint-staged
  16. ERROR : Error appeared during Puppet run: x.x.x.x _keystone.pp
  17. python埃及分数_送你一份低折扣书单,Python就占了6本,人工智能2本
  18. 算法导论程序24--直接寻址表(Python)
  19. 【1024面试必备】厂长爆肝万字之多线程高并发JUC编程⭐建议收藏
  20. ARM SIMD 指令集:NEON 简介

热门文章

  1. QT一次性连接多个按钮槽函数
  2. QT中使用QCustomplot设置坐标原点在左上或者反转镜像坐标轴
  3. 基于面板数据的熵值法
  4. Solr -- query和filter query
  5. Docker源码分析(二):Docker Client创建与命令执行
  6. quartz 报错:java.lang.classNotFoundException
  7. Oozie基于Hue全流程调度
  8. vue项目部署到nginx
  9. 灰度图像--图像增强 Robert算子、Sobel算子
  10. 算法与数据结构 - 滑动窗口