10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国Ltr)- 41.6 mb
PDF (A4)- 41.7 mb
HTML下载(TGZ)- 9.3 mb
HTML下载(Zip)- 9.4 mb
手册(TGZ)- 262.1 kb
手册(Zip)- 372.2 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

5.1.9.3持久化系统变量

MySQL服务器维护配置其操作的系统变量。系统变量可以具有影响整个服务器操作的全局值,也可以具有影响当前会话的会话值,或者两者都有。方法可以在运行时更改许多系统变量语句以影响当前服务器实例的操作。也可用于将某些全局系统变量持久化到mysqld-auto.cnf数据目录下的文件,以影响后续启动服务器的操作。重置持续删除持久性设置mysqld-auto.cnf

下面的讨论描述了持久化系统变量的各个方面:

持久性系统变量概述

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

  • 修改选项文件需要直接访问该文件,这需要登录访问MySQL服务器主机。这并不总是方便的。

  • 修改系统变量集全球是可以从本地运行的客户机或远程主机执行的运行时功能,但更改只影响当前运行的服务器实例。这些设置不是持久的,不会延续到后续的服务器启动中。

增强服务器配置的管理功能,而不是通过编辑选项文件或使用集全球的变体将系统变量设置持久化到名为mysqld-auto.cnf数据目录中的文件。例子:

SET PERSIST max_connections = 1000;设置@@PERSIST。Max_connections = 1000;设置PERSIST_ONLY back_log = 100;设置@@PERSIST_ONLY。Back_log = 100;

MySQL还提供了重置持续语句,用于删除持久性系统变量mysqld-auto.cnf

通过持久化系统变量执行的服务器配置具有以下特征:

  • 持久设置是在运行时进行的。

  • 持久设置是永久的。它们适用于跨服务器重启。

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

  • 要持久保存系统变量,您不需要对MySQL服务器主机有登录访问权,也不需要对选项文件有文件系统访问权。保存设置的能力是通过MySQL特权系统来控制的。看到第5.1.9.1节“系统变量特权”

  • 具有足够权限的管理员可以通过持久化系统变量来重新配置服务器,然后通过执行命令使服务器立即使用更改的设置重新启动声明。

  • 持久设置提供关于错误的即时反馈。手动输入的设置中的错误可能要过很久才会被发现。保存系统变量的语句可以避免出现格式不正确的设置,因为具有语法错误的设置不会成功,也不会更改服务器配置。

持久化系统变量的语法

这些可用于持久化系统变量的语法选项:

  • 将全局系统变量持久化到mysqld-auto.cnf选项文件中,在变量名之前加上坚持关键字或@@PERSIST。限定符:

    SET PERSIST max_connections = 1000;设置@@PERSIST。Max_connections = 1000;

    就像集全球设置保存设置全局变量运行时值,但也将变量设置写入mysqld-auto.cnf文件(如果有,则替换任何现有的变量设置)。

  • 将全局系统变量持久化到mysqld-auto.cnf文件中未设置全局变量运行时值时,在变量名前面加上PERSIST_ONLY关键字或@@PERSIST_ONLY。限定符:

    设置PERSIST_ONLY back_log = 1000;设置@@PERSIST_ONLY。Back_log = 1000;

    就像坚持PERSIST_ONLY将变量设置写入mysqld-auto.cnf.但是,与坚持PERSIST_ONLY不修改全局变量运行时值。这使得PERSIST_ONLY适用于配置只读系统变量,只能在服务器启动时设置。

有关,请参阅第13.7.6.1节“变量赋值的SET语法”

这些重置持续语法选项可用于删除持久的系统变量:

  • 来删除所有持久性变量mysqld-auto.cnf,使用重置持续不指定任何系统变量:

    重置坚持;
  • 来删除特定的持久变量mysqld-auto.cnf,在声明中命名:

    重置持续system_var_name;

    这包括插件系统变量,即使插件目前没有安装。如果文件中没有该变量,则会发生错误。

  • 来删除特定的持久变量mysqld-auto.cnf,但如果文件中没有该变量,则会产生警告而不是错误如果存在子句更改到前面的语法:

    如果存在则重置持久化system_var_name;

有关重置持续,请参阅第13.7.8.7节,“RESET PERSIST语句”

使用将全局系统变量持久化为值默认的或者将其默认值赋给变量,并为其添加一个设置mysqld-auto.cnf.若要从文件中删除变量,请使用重置持续

某些系统变量无法持久保存。看到第5.1.9.4节“非持久化和持久化限制的系统变量”

当插件被安装时,由插件实现的系统变量可以被持久化语句将被执行。如果插件仍然安装,则对持久插件变量的赋值将在后续服务器重启时生效。如果插件不再安装,则当服务器读取mysqld-auto.cnf文件。在这种情况下,服务器向错误日志中写入一个警告,并继续:

当前未知变量'var_name从持久化配置文件中读取
获取持久化系统变量信息

性能架构persisted_variables表提供了一个SQL接口mysqld-auto.cnf文件,使其内容能够在运行时使用选择语句。看到第27.12.14.1节,“性能模式persiststed_variables表”

性能架构variables_info表包含显示每个系统变量最近设置的时间以及由哪个用户设置的信息。看到第27.12.14.2节“性能模式变量_info表”

重置持续控件的内容persisted_variables表的内容对应的内容mysqld-auto.cnf文件。另一方面,因为重置持续不改变变量值,对内容是否有影响variables_info表,直到服务器重新启动。

mysql -auto.cnf文件的格式和服务器处理

mysqld-auto.cnf文件使用JSON这样格式化(为了可读性,稍微重新格式化了一下):

{"版本":1,"mysql_server": {"max_connections":{"值":"152","元数据":{"时间戳":1519921341372531,"用户":"根","主机":"localhost"}}, "transaction_isolation":{"值":"READ-COMMITTED", "元数据":{"时间戳":1519921553880520,"用户":"根","主机":"localhost"}}, "mysql_server_static_options":{"值":"0","元数据":{"时间戳":1519922873467872,"用户":"根","主机":"localhost"}}, "log_slave_updates":{"值":"1", "元数据":{"时间戳":1519925628441588,"用户":"root", "主机":"localhost"}}}}}

在启动时,服务器处理mysqld-auto.cnf在所有其他选项文件之后进行归档(参见第4.2.2.2节“使用选项文件”).服务器处理文件内容的方式如下:

  • 如果persisted_globals_load系统变量被禁用时,服务器将忽略mysqld-auto.cnf文件。

  • “mysql_server_static_options”部分包含使用持久化的只读变量设置PERSIST_ONLY.section也可能(尽管它的名字)包含某些非只读的动态变量。此部分中的所有变量都被附加到命令行,并与其他命令行选项一起处理。

  • 所有剩余的持久化变量都是通过执行等价的集全球语句之后,就在服务器开始监听客户机连接之前。因此,这些设置直到启动过程的后期才生效,这可能不适用于某些系统变量。最好是在里面设置这样的变量my.cnf而不是在mysqld-auto.cnf

管理mysqld-auto.cnf文件应该留给服务器。文件的操作应该只使用而且重置持续语句,而不是手动的:

  • 删除该文件将导致在下次服务器启动时丢失所有持久设置。(如果您想在没有这些设置的情况下重新配置服务器,这是允许的。)要在不删除文件本身的情况下删除文件中的所有设置,使用以下语句:

    重置坚持;
  • 手动更改文件可能会在服务器启动时导致解析错误。在这种情况下,服务器报告一个错误并退出。如果出现此问题,请使用persisted_globals_load禁用系统变量或使用——已选择。或者,删除mysqld-auto.cnf文件。但是,如前所述,删除此文件将导致丢失所有持久设置。