MySQL 8 新特性之持久化全局变量的修改

在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.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  |
+------------------------+-------+
2 rows in set (0.00 sec)

全局变量的修改会保存在两处,

1.  数据目录下mysqld-auto.cnf文件,

注意,不是启动时--defaults-file指定的配置文件。

[[email protected] ~]# 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            |
+-----------------+----------------+
1 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;

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

原文地址:https://www.cnblogs.com/ivictor/p/9037931.html

时间: 2024-10-10 00:14:54

MySQL 8 新特性之持久化全局变量的修改的相关文章

MySQL数据库新特性之存储过程入门教程

在MySQL 5中,终于引入了存储过程这一新特性,这将大大增强MYSQL的数据库处理能力.在本文中将指导读者快速掌握MySQL 5的存储过程的基本知识,带领用户入门. 存储过程介绍 存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程可由应用程序通过一个调用来执行,而且允许用户声明变量 .同时,存储过程可以接收和输出参数.返回执行存储过程的状态值,也可以嵌套调用. 存储过程的优点 作为存储过程,有以

MySQL 8 新特性之信用盘源码搭建出售降序索引实现

什么是降序索引 大家可能对索引比较熟悉,而对降序索引比较陌生,事实上降序索引是索引的子集. 我们通常使用下面的语句来创建一个索引: 信用盘源码搭建出售q-1152880099 create index idx_t1_bcd on t1(b,c,d); 上面sql的意思是在t1表中,针对b,c,d三个字段创建一个联合索引. 但是大家不知道的是,上面这个sql实际上和下面的这个sql是等价的: create index idx_t1_bcd on t1(b asc,c asc,d asc); asc

MySQL 8 新特性之Invisible Indexes

背景 索引是把双刃剑,在提升查询速度的同时会减慢DML的操作.毕竟,索引的维护需要一定的成本.所以,对于索引,要加上该加的,删除无用的.前者是加法,后者是减法.但在实际工作中,大家似乎更热衷于前者,而很少进行后者.究其原因,在于后者,难.难的不是操作本身,而是如何确认一个索引是无用的. 如何确认无用索引 在不可见索引出现之前,大家可以通过sys.schema_unused_indexes来确定无用索引.在MySQL 5.6中,即使没有sys库,也可通过该视图的基表来进行查询. mysql> sh

MySQL 8 新特性之降序索引底层实现

什么是降序索引 大家可能对索引比较熟悉,而对降序索引比较陌生,事实上降序索引是索引的子集. 我们通常使用下面的语句来创建一个索引: create index idx_t1_bcd on t1(b,c,d); 上面sql的意思是在t1表中,针对b,c,d三个字段创建一个联合索引. 但是大家不知道的是,上面这个sql实际上和下面的这个sql是等价的: create index idx_t1_bcd on t1(b asc,c asc,d asc); asc表示的是升序,使用这种语法创建出来的索引叫做

HTML5新特性展示利用history.replaceState()修改历史记录

在上一篇文章中介绍history.pushState()的时候,我们提到location.hash存在的3个问题.第一个问题:url会发生改变,这个很容易理解.现在我们看下第二个问题和第三个问题,即如何修改浏览器的历史记录,如何让历史记录存储更多状态相关的信息.状态相关的信息上一篇博客其实已经很容易看出来了,history.pushState()的第一个参数是javascript对象,我们当然可以在这个对象中存放任何我们想要的数据.本文我们主要看一下,如何利用histroy.replaceSta

迄今最安全的MySQL?细数5.7那些惊艳与鸡肋的新特性(上)【转载】

转自: DBAplus社群 http://www.toutiao.com/m5762164771/ 迄今最安全的MySQL?细数5.7那些惊艳与鸡肋的新特性(上) - 今日头条(TouTiao.com)http://toutiao.com/a6300616158581604609/?tt_from=mobile_qq&utm_campaign=client_share&app=news_article&utm_source=mobile_qq&iid=4592472790&

MySQL 作为新的 NoSQL 解决方案: 轻松应对亿级数据

MySQL现在是一个更好的NoSQL解决方案.我们这样说是因为在存储 键/值(key/value) 之类数据时, MySQL 具有性能.易用性和稳定性方面的优势.MySQL引擎稳定可靠,并且社区和官方支持良好,有非常丰富的在线资料, 涵盖了各种操作.故障排查,复制以及各种使用模式等方面.基于这个原因, MySQL比起新兴的NoSQL引擎具有很大优势. 近年来,NoSQL引擎已成为主流.许多开发者将NoSQL引擎(包括: MongoDB, Cassandra, Redis, 和 Hadoop等)视

MySQL 5.6, 5.7, 8.0的新特性

对于MySQL的历史,相信很多人早已耳熟能详,这里就不要赘述.下面仅从产品特性的角度梳理其发展过程中的里程碑事件. 1995年,MySQL 1.0发布,仅供内部使用. 1996年,MySQL 3.11.1发布,直接跳过了MySQL 2.x版本. 1999年,MySQL AB公司成立.同年,发布MySQL 3.23,该版本集成了Berkeley DB存储引擎.该引擎由Sleepycat公司开发,支持事务.在集成该引擎的过程中,对源码进行了改造,为后续可插拔式存储引擎架构奠定了基础. 2000年,I

MySQL 5.7 GA 新特性

转载自: http://www.chinaxing.org/articles/Database/2015/10/23/2015-10-22-mysql-5.7.html Percona的一个测试,在MySQL5.7的情况下将innodb_page_size调整到4k,可以比16k性能提升70%以上:https://www.percona.com/blog/2016/08/10/small-innodb_page_size-performance-boost-ssd/ MySQL 5.7 GA 新