【MySQL精通之路】系统变量-持久化系统变量
MySQL服务器维护用于配置其操作的系统变量。
系统变量可以具有影响整个服务器操作的全局值,也可以具有影响当前会话的会话值,或者两者兼而有之。
许多系统变量是动态的,可以在运行时使用SET语句进行更改,以影响当前服务器实例的操作。
SET还可以用于将某些全局系统变量持久化到数据目录中的mysqld-auto.cnf文件中,以影响后续启动的服务器操作。
RESET PERSIST从mysqld-auto.cnf中删除持久化设置。
以下讨论描述了持久化系统变量的各个方面:
1 持久化系统变量概述
在运行时持久化全局系统变量的功能使服务器配置能够在服务器启动时持久化。
尽管许多系统变量可以在启动时从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_ONLY back_log = 100;
SET @@PERSIST_ONLY.back_log = 100;
MySQL还提供了一个RESET PERSIST语句,用于从mysqld-auto.cnf中删除持久化的系统变量。
通过持久化系统变量执行的服务器配置具有以下特征:
持久化设置是在运行时进行的。
持久化设置是永久性的。它们适用于服务器重新启动时。
可以从本地客户端或从远程主机连接的客户端进行持久化设置。
这提供了从中央客户端主机远程配置多个MySQL服务器的便利性。
要持久化系统变量,您不需要对MySQL服务器主机具有登录访问权限,也不需要对选项文件具有文件系统访问权限。
持久化设置的能力是使用MySQL特权系统控制的。
参见“系统变量权限”。
【MySQL精通之路】系统变量-系统变量权限-CSDN博客
具有足够权限的管理员可以通过保留系统变量来重新配置服务器,然后通过执行RESTART语句使服务器立即使用更改后的设置。
持久化设置提供有关错误的即时反馈。
手动输入的设置中的错误可能要过很久才能发现。持久化系统变量的SET语句避免了设置格式错误的可能性,因为存在语法错误的设置不会成功,也不会更改服务器配置。
2.持久化系统变量的语法
这些SET语法选项可用于持久化系统变量:
要将全局系统变量持久化到数据目录中的mysqld-auto.cnf选项文件中,请在变量名之前加上persist关键字或@@persist。
SET PERSIST max_connections = 1000; SET @@PERSIST.max_connections = 1000;
与SET GLOBAL一样,SET PERSIST设置全局变量运行时值,但也将变量设置写入mysqld-auto.cnf文件(如果有,则替换任何现有的变量设置)。
要在不设置全局变量运行时值的情况下将全局系统变量持久化到mysqld-auto.cnf文件,请在变量名之前加上persist_ONLY关键字或@@persist_UNLY。合格者
SET PERSIST_ONLY back_log = 1000; SET @@PERSIST_ONLY.back_log = 1000;
与PERSIST一样,PERSIST_ONLY将变量设置写入mysqld-auto.cnf。
但是,与PERSIST不同,PERSIST_ONLY不修改全局变量运行时值。
这使得PERSIST_ONLY适合配置只读系统变量,这些变量只能在服务器启动时设置。
有关SET的更多信息,请参阅
“变量赋值的SET语法”。
这些RESET PERSIST语法选项可用于删除持久化的系统变量:
要从mysqld-auto.cnf中删除所有持久化变量,请使用RESET PERSIST,而不指定任何系统变量:
RESET PERSIST;
要从mysqld-auto.cnf中删除特定的持久化变量,请在语句中命名:
RESET PERSIST system_var_name;
这包括插件系统变量,即使当前未安装插件。如果该变量不在文件中,则会发生错误。
要从mysqld-auto.cnf中删除特定的持久化变量,但如果该变量不在文件中,则会产生警告而不是错误,请在前面的语法中添加if EXISTS子句:
RESET PERSIST IF EXISTS system_var_name;
有关RESET PERSIST的更多信息,请参阅
“RESET PERIST声明”。
使用SET将全局系统变量持久化为DEFAULT值或其字面默认值,会为该变量指定其默认值,并将该变量的设置添加到mysqld-auto.cnf。要从文件中删除变量,请使用RESET PERSIST。
某些系统变量无法持久化。参见“不持久和持久受限系统变量”。
【MySQL精通之路】系统变量-不持久和持久受限系统变量-CSDN博客
如果在执行SET语句时安装了插件,则插件实现的系统变量可以持久化。如果插件仍在安装,则持久化插件变量的分配将在随后的服务器重新启动时生效。如果不再安装插件,则当服务器读取mysqld-auto.cnf文件时,插件变量不存在。在这种情况下,服务器会在错误日志中写入警告并继续:
currently unknown variable 'var_name' was read from the persisted config file
3.获取有关持久化系统变量的信息
Performance Schema库persisted_variables表为mysqld-auto.cnf文件提供了一个SQL接口,使其内容能够在运行时使用SELECT语句进行检查。
参见“Performance Schema库persisted_variables表”。
Performance Schema库variables_info表包含显示最近设置每个系统变量的时间和用户的信息。
参见“Performance Schema库variables_info表”。
RESET PERSIST会影响persisted_variables表的内容,因为该表的内容与mysqld-auto.cnf文件的内容相对应。
另一方面,由于RESET PERSIST不会更改变量值,因此在服务器重新启动之前,它不会影响variables_info表的内容。
4.mysqld-auto.cnf文件的格式与服务器处理流程
mysqld-auto.cnf文件使用如下JSON格式(为了可读性,稍微重新格式化):
{"Version": 1,"mysql_server": {"max_connections": {"Value": "152","Metadata": {"Timestamp": 1519921341372531,"User": "root","Host": "localhost"}},"transaction_isolation": {"Value": "READ-COMMITTED","Metadata": {"Timestamp": 1519921553880520,"User": "root","Host": "localhost"}},"mysql_server_static_options": {"innodb_api_enable_mdl": {"Value": "0","Metadata": {"Timestamp": 1519922873467872,"User": "root","Host": "localhost"}},"log_slave_updates": {"Value": "1","Metadata": {"Timestamp": 1519925628441588,"User": "root","Host": "localhost"}}}}
}
在启动时,服务器在处理所有其他配置文件之后处理mysqld-auto.cnf文件
(请参阅“使用配置文件”)。
【MySQL精通之路】MySQL的使用(2)-配置-CSDN博客
服务器按如下方式处理文件内容:
如果禁用了persisted_globals_load系统变量,则服务器将忽略mysqld-auto.cnf文件。
“mysql_server_static_options”部分包含使用SET PERSIST_ONLY持久化的只读变量。该部分也可能(尽管其名称如此)包含某些非只读的动态变量。
本节中的所有变量都附加到命令行中,并使用其他命令行选项进行处理。
稍后,在服务器开始侦听客户端连接之前,通过执行等效的 SET GLOBAL语句来设置所有剩余的持久化变量。因此,这些设置直到启动过程的后期才会生效,这可能不适合某些系统变量。
最好在my.cnf中设置这样的变量,而不是在mysqld-auto.cnf中。
mysqld-auto.cnf文件的管理应该留给服务器。
文件的操作只能使用SET和RESET PERSIST语句执行,而不能手动执行:
删除该文件会导致在下一次服务器启动时丢失所有保留的设置。
(如果您打算在没有这些设置的情况下重新配置服务器,则允许这样做。)
要在不删除文件本身的情况下删除文件中的所有设置,请使用以下语句:
RESET PERSIST;
手动更改文件可能会导致服务器启动时出现解析错误。
在这种情况下,服务器会报告一个错误并退出。
如果出现此问题,请在禁用persisted_globals_load系统变量或使用--no defaults选项的情况下启动服务器。
或者,删除mysqld-auto.cnf文件。但是,如前所述,删除此文件会导致丢失所有保留的设置。
5.持久化敏感系统变量
从MySQL 8.0.29开始,MySQL Server能够安全地存储包含私钥或密码等敏感数据的持久化系统变量值,并限制对这些值的查看。
目前没有MySQL Server系统变量被标记为敏感,但新功能允许包含敏感数据的系统变量在未来安全地持久化。
升级到MySQL 8.0.29后,mysqld-auto.cnf配置文件的格式保持不变,直到第一次发出SET PERSIST或SET PERSIST-ONLY语句,并且在这一点上它被更改为新的格式,即使所涉及的系统变量不敏感。
在新格式中,旧版本的MySQL Server无法读取选项文件。
注意:
必须在MySQL Server实例上启用keyring组件,以支持持久化系统变量值的安全存储,而不是不支持该功能的keyring插件。请参阅“MySQL密钥环”。
在mysqld-auto.cnf配置文件中,敏感系统变量的名称和值以加密的格式存储,以及生成的用于解密它们的文件密钥。
生成的文件密钥依次使用存储在keyring中的主密钥(persisted_variables_key)进行加密。
当服务器启动时,将解密并使用持久化敏感的系统变量。
默认情况下,如果选项文件中存在加密值,但在启动时无法成功解密,则使用其默认设置。
如果无法解密加密的值,则可配置的最安全的设置(persist_sensitive_variables_in_plaintext)会使服务器停止启动。
系统变量persist_sensitive_variables_in_plaintext控制是否允许服务器以未加密的格式存储敏感系统变量的值,如果在使用 SET PERSIST设置值时不支持keyring组件。
如果加密的值无法解密,它还控制服务器是否可以启动。
默认设置ON在keyring组件支持可用的情况下对值进行加密,如果不支持,则保持未加密的值(并发出警告)。
下次设置任何持久化系统变量时,如果当时支持keyring,则服务器会对任何未加密的敏感系统变量的值进行加密。
ON设置还允许服务器在加密的系统变量值无法解密的情况下启动,在这种情况下会发出警告并使用系统变量的默认值。
在这种情况下,它们的值在被解密之前无法更改。
最安全的设置是OFF表示如果keyring组件支持不可用,敏感的系统变量值将无法持久化。
OFF设置还意味着,如果无法解密加密的系统变量值,则服务器不会启动。
SENSITIVE_VARIABLES_OBSERVER权限
允许持有者查看Performance Schema库的
global_variables
session_variables
variables_by_thread
persisted_variables
中敏感系统变量的值,发出SELECT语句返回其值,并在连接的会话跟踪器中跟踪对其的更改。
没有此权限的用户无法查看或跟踪这些系统变量值。
如果为敏感的系统变量发出SET语句,则在将查询记录到常规日志和审核日志之前,会重写查询以将值替换为“<redated>”。即使通过keyring组件的安全存储在服务器实例上不可用,也会发生这种情况。
相关文章:
【MySQL精通之路】系统变量-持久化系统变量
MySQL服务器维护用于配置其操作的系统变量。 系统变量可以具有影响整个服务器操作的全局值,也可以具有影响当前会话的会话值,或者两者兼而有之。 许多系统变量是动态的,可以在运行时使用SET语句进行更改,以影响当前服务器实例的…...
fdk-aac将aac格式转为pcm数据
int sampleRate 44100; // 采样率int sampleSizeInBits 16; // 采样位数,通常是16int channels 2; // 通道数,单声道为1,立体声为2FILE *m_fd NULL;FILE *m_fd2 NULL;HANDLE_AACDECODER decoder aacDecoder_Open(TT_MP4_ADTS, 1);if (!…...

【C语言深度解剖】(15):动态内存管理和柔性数组
🤡博客主页:醉竺 🥰本文专栏:《C语言深度解剖》 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多C语言深度解剖点击专栏链接查看&…...
力扣每日一题 5/25
题目: 给你一个下标从 0 开始、长度为 n 的整数数组 nums ,以及整数 indexDifference 和整数 valueDifference 。 你的任务是从范围 [0, n - 1] 内找出 2 个满足下述所有条件的下标 i 和 j : abs(i - j) > indexDifference 且abs(nums…...
(1)无线电失控保护(一)
文章目录 前言 1 何时触发失控保护 2 将会发生什么 3 接收机配置...

基于51单片机的多功能万年历温度计—可显示农历
基于51单片机的万年历温度计 (仿真+程序+原理图+设计报告) 功能介绍 具体功能: 本设计基于STC89C52(与AT89S52、AT89C52通用,可任选)单片机以及DS1302时钟芯片、DS18B…...

【软件设计师】下午题总结-数据流图、数据库、统一建模语言
下午题总结 1 试题一1.1 结构化语言 2 试题二弱实体增加权限增加实体间联系和联系的类型 3 试题三3.1 UML关系例子 3.2 例子(2016上半年)3.3 设计类分类3.3.1 接口类3.3.2 控制类3.3.3 实体类 3.4 简答题3.4.1 简要说明选择候选类的原则3.4.2 某个类必须…...

CSDN 自动评论互动脚本
声明 该脚本的目的只是为了提升博客创作效率和博主互动效率,希望大家还是要尊重各位博主的劳动成果。 数据库设计 尽量我们要新建一个数据库csdn_article,再在其中建一个数据表article -- csdn_article-- article-- 需要进行自动评论的表格信息...CREATE TABLE `article`…...

Tomcat端口配置
Tomcat是开源免费的服务器,其默认的端口为8080,本文讲述一下如何配置端口。 最后在浏览器中输入localhost:8888即可打开Tomcat界面...

SpringBoot中使用AOP实现日志记录功能
目录 一、SpringBoot框架介绍 二、什么是 AOP 三、日志记录的必要性 四、SpringBoot中如何使用AOP实现日志记录功能 一、SpringBoot框架介绍 SpringBoot是一个开源的Java开发框架,旨在简化基于Spring框架的应用程序的开发。它提供了一套开箱即用的工具…...

kubernetes(k8s) v1.30.1 helm 集群安装 Dashboard v7.4.0 可视化管理工具 图形化管理工具
本文 紧接上一篇:详细教程 Centos8.5 基于 k8s v1.30.1 部署高可用集群 kubeadm 安装 kubernetes v1.30.1 docker集群搭建 延长证书有效期-CSDN博客 1 Dashboard 从版本 7.0.0 开始,不再支持基于清单的安装。仅支持基于 Helm 的安装. #Helm 下载安装 …...
CS144(所有lab解析)
CS144 lab0-CSDN博客 (CS144 2024)Lab Checkpoint 1: stitching substrings into a byte stream (详细解析)-CSDN博客 CS144 Lab2 (2024)超详细解析-CSDN博客 Lab Checkpoint 3: the TCP sender-CSDN博客 CS144 Checkpoint 4: in…...
LeetCode 热题 100 介绍
"LeetCode热题100"通常是指LeetCode上被用户频繁练习和讨论的100道热门题目。这些题目往往对于面试准备和算法学习非常有帮助。 哈希 两数之和 难度:简单链接🔗: 这 字母异位词分组 难度:中等链接🔗&#x…...
Flutter 中的 AnimatedPhysicalModel 小部件:全面指南
Flutter 中的 AnimatedPhysicalModel 小部件:全面指南 Flutter 的 AnimatedPhysicalModel 是一个功能强大的小部件,它允许开发者创建具有物理效果的动画形状变换。这个小部件非常适合需要展示平滑过渡和动态交互的场景,如按钮按下效果、卡片…...

第二十届文博会沙井艺立方分会场启幕!大咖齐打卡!
2024年5月24日-27日,第二十届中国(深圳)国际文化产业博览交易会沙井艺立方分会场活动将在艺立方非遗(文旅)产业园盛大举办。 本届文博会艺立方分会场活动办展特色鲜明,亮彩纷呈,将以“种下梧桐树…...

【Vue】computed 和 methods 的区别
概述 在使用时,computed 当做属性使用,而 methods 则当做方法调用computed 可以具有 getter 和 setter,因此可以赋值,而 methods 不行computed 无法接收多个参数,而 methods 可以computed 具有缓存,而 met…...

HarmonyOS 鸿蒙应用开发 - 创建自定义组件
开发者定义的称为自定义组件。在进行 UI 界面开发时,通常不是简单的将系统组件进行组合使用,而是需要考虑代码可复用性、业务逻辑与UI分离,后续版本演进等因素。因此,将UI和部分业务逻辑封装成自定义组件是不可或缺的能力。 1、创…...

【Vue3】封装axios请求(cli和vite)
原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 Vue 【Vue3】env环境变量的配置和使用(区分cli和vite) 文章目录 Vue前言一、常见用法二、vue3cli封装接口1..env配置2..dev(开…...
Java8 Optional常用方法使用场景
前言: Optional 是 Java 8 的新特性,专治空指针异常(NullPointerException, 简称 NPE)问题,它是一个容器类,里面只存储一个元素(这点不同于 Conllection)。 为方便用户通过 Lambda 表…...

isscc2024 short course4 In-memory Computing Architectures
新兴的ML加速器方法:内存计算架构 1. 概述 内存计算(In-memory Computing)架构是一种新兴的机器学习加速器方法,通过将计算能力集成到存储器中,以减少数据移动的延迟和能耗,从而提高计算效率和性能。这种方…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...