代码改变世界

MySQL 持久化系统变量

2024-08-23 14:27  abce  阅读(36)  评论(0编辑  收藏  举报

set persist会将变量持久化到文件 mysqld-auto.cnf 文件中,该文件位于数据目录下。reset persist会移除 mysqld-auto.cnf 文件中持久化的变量。

 

MySQL 可以在运行时持久化全局系统变量。虽然许多系统变量可以在启动时通过 my.cnf 配置文件设置,或在运行时使用 set 语句设置,但这些配的方法要么需要登录访问服务器主机,要么不提供运行时或远程持久配置服务器的功能:

·修改配置文件需要直接访问该文件,而访问该文件需要登录到 MySQL 服务器主机。这并不总是很方便。

·使用 set global(全局)修改系统变量是一种运行时功能,可以通过本地运行的客户端或远程主机完成,但更改只影响当前运行的服务器实例。这些设置不是持久性的,重启后就不存在了。

 

除了编辑配置件或使用 set global 之外,为了增强服务器配置的管理能力,MySQL 还提供了 set 语法的变种,可以将系统变量设置持久化到数据目录中名为 mysqld-auto.cnf 的文件中。比如:

set persist max_connections = 1000;
set @@persist.max_connections = 1000;

set persist和set global类似,在 MySQL 运行时设置,但是会写入到 mysqld-auto.cnf文件中

 

set persist_only back_log = 100;
set @@persist_only.back_log = 100;

set persist_only只是将变量持久化到 mysqld-auto.cnf文件中,但不是运行时生效。更适合配置只读变量。

持久化系统变量的特点

持久化系统变量的服务器配置具有以下特点:

·持久化设置在 MySQL 运行时进行。

·持久化设置是永久性的。它们适用于服务器重启。

·可通过本地客户端或从远程主机连接的客户端进行持久化设置。这为从单一客户端主机远程配置多个 MySQL 服务器提供了便利。

·要持久化系统变量,你不需要拥有 MySQL 服务器主机的登录权限或配置文件的文件系统访问权限。持久化设置的能力由 MySQL 权限系统控制。

·拥有足够权限的管理员可以通过持久化系统变量来重新配置服务器,然后通过执行 restart 语句使服务器立即使用更改后的设置。

·持久化设置可提供即时的错误反馈。手动输入设置中的错误可能不会被发现。

移除持久化的变量

reset persist;移除 mysqld-auto.cnf文件中所有的持久化变量

reset persist system_var_name;移除指定名称的持久化变量

reset persist if exists system_var_name;如果不存在,则会给出警告

查询持久化的变量信息

表 performance_schema.persisted_variables 提供了一个sql接口,访问文件mysqld-auto.cnf的内容;表 performance_schema.variables_info 提了是哪个用户以及在最近哪个时间点持久化过变量。

reset persist 会影响表 performance_schema.persisted_variables 的内容,但是不会影响表 performance_schema.variables_info 的内容。