zoukankan      html  css  js  c++  java
  • MySQL 8.0新特性 -- 持久化全局变量

    在之前的版本中,对于全局变量的修改,其只会影响其内存值,而不会持久化到配置文件中。数据库重启,又会恢复成修改前的值。从8.0开始,可通过SET PERSIST命令将全局变量的修改持久化到配置文件中。

    >show variables like 'max_connections';
    +------------------------+-------+
    | Variable_name          | Value |
    +------------------------+-------+
    | max_connections        | 151   |
    +------------------------+-------+
    1 rows in set (0.01 sec)
    
    >set global.max_connections=155;
    Query OK, 0 rows affected (0.00 sec)
    
    >show variables like 'max_connections';
    +------------------------+-------+
    | Variable_name          | Value |
    +------------------------+-------+
    | max_connections        | 155   |
    +------------------------+-------+
    1 rows in set (0.01 sec)
    

      

    查看持久化的变量

    修改之后,data目录下会多出一个文件mysqld-auto.cnf。可以直接查看该文件

    # more mysqld-auto.cnf
    { "Version" : 1 , "mysql_server" : { "max_connections" : { "Value" : "155" , "Metadata" : { "Timestamp" : 1585748279787787 , "User" :
     "root" , "Host" : "localhost" } } } }
    

    也可以通过表查看:

    mysql> select * from performance_schema.persisted_variables;
    +-----------------+----------------+
    | VARIABLE_NAME   | VARIABLE_VALUE |
    +-----------------+----------------+
    | max_connections | 160            |
    +-----------------+----------------+
    1 row in set (0.00 sec)

    在数据库启动时,会首先读取其它配置文件,最后才读取mysqld-auto.cnf文件

    执行set persist需要不同的权限,取决于系统变量的类型:
    ·动态的系统变量,set persist需要system_variables_admin或super权限
    ·只读的系统变量,set persist需要system_variables_admin和persist_ro_variables_admin权限

    set persist设置的变量不仅运行时生效,还会将变量写入mysqld-auto.cnf
    set persist_only将变量写入mysqld-auto.cnf,但是不会影响运行时的变量值。重启后才会生效。

    移除持久化变量
    ·reset persist:移除mysqld-auto.cnf中所有的变量
    ·reset persist system_var_name:移除mysqld-auto.cnf中名为system_var_name的变量
    ·reset persist IF exists system_var_name:如果变量不存在,不会报错,只会给出warning提示

    注意,其只是清空mysqld-auto.cnf和performance_schema.persisted_variables中的内容,对于已经修改了的变量的值,不会产生任何影响。

    通过下述方式将全局变量持久化为默认值。注意,是默认值,而不是修改前的值。
    mysql> set persist max_connections=default;

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

  • 相关阅读:
    sql执行的顺序
    $(obj).index(this) 与 $(this).index()的区别
    java取得百分比
    取得input的特殊值
    清除select的边框和三角形
    在jsp页面中获取列表长度
    mysql mybatis 批量更新和新增
    oracle mybatis 批量更新和新增
    jstl if else 判断
    判断radio,select,checkbox是否选中的方法
  • 原文地址:https://www.cnblogs.com/abclife/p/12616580.html
Copyright © 2011-2022 走看看