当前位置: 首页 > article >正文

【mysql 进阶】2-1. MySQL 服务器介绍

MySQL 服务器简介

通常所说的 MySQL 服务器指的是mysqld程序,当运⾏mysqld后对外提供MySQL 服务,这个专题的内容涵盖了以下关于MySQL 服务器以及相关配置的内容,包括:

  • 服务器⽀持的启动选项。可以在命令⾏和配置⽂件中指定这些选项。
  • 服务器系统变量。反映了启动选项的当前状态和值,其中⼀些变量可以在服务器运⾏时修改。
  • 服务器状态变量。这些变量包含了有关运⾏时操作的计数器和统计信息。
  • 服务器如何管理客⼾端连接。
  • 配置和使⽤时区⽀持。
  • 服务器端帮助功能。

1. 服务器配置和默认值

mysqld 有很多选项和系统变量可以在启动时进⾏配置,要查看服务器的默认选项和系统变量值,可以执⾏以下命令:

mysqld --verbose --help

image-20241024165247443

  • 查看服务器在运⾏时系统变量的值,连接到MySQL并执⾏以下语句:
mysql> SHOW VARIABLES;
  • 查看服务器在运⾏时的⼀些统计和状态指⽰器,连接到MySQL并执⾏以下语句:
mysql> SHOW STATUS;
  • 系统变量和状态信息也可以使⽤ mysqladmin命令来查看:
root@guangchen-vm:~# mysqladmin variables
root@guangchen-vm:~# mysqladmin extended-status
  • 注意:系统变量、状态变量的作⽤域分为: Global (全局), Session (当前会话或连接), 或 两者都⽀持

2. 系统变量和选项

2.1 简介

  • 当通过mysqld启动数据库服务器时,可以通过选项⽂件或命令⾏中提供选项,但是,在⼤多数情况下,为确保服务器每次运⾏时都使⽤相同的选项,最好的⽅法是在选项⽂件中指定相应的选项。
  • mysqld从选项⽂件中的 [mysqld] 和 [server] 组(节点)中读取选项内容
  • mysqld接受的选项可以通过 mysqld --verbose --help 查看,列表中的有些项⽬是可以在服务器启动时设置的系统变量,系统变量可以在连接MySQL后使⽤ SHOW VARIABLES 语句查看,但有些内容只在 --help 中存在,使⽤ SHOW VARIABLES 时并没有显⽰,这是因为它们只是选项⽽不是系统变量。

注意:选项值可以通过命令⾏和选项⽂件设置,部分系统变量可以通过SET语句动态设置值

2.2 常⽤选项

image-20241024170408151

image-20241024170523546

image-20241024170541928

image-20241024170552865

3. 使⽤系统变量

  1. 以上我们介绍了通过选项⽂件和命令⾏设置相应系统变量的值,设置系统变量的语法与命令选项的语法相同,指定变量名称时,破折号和下划线可以互换使⽤。例如, --general_log=ON 和 --general-log=ON 是等价的。

  2. 当使⽤选项设置⼀个数值的变量时,可以带有后缀 K 、 M 或 G (⼤⼩写不限)表⽰ 1024 、1024^2 或 1024^3 ;从MySQL 8.0.14 开始,后缀也可以⽤ T 、 P 和 E 来表⽰ 1024^4 、1024^5 或 1024^6 。

​ ⽰例:为服务器指定 256 KB 的排序缓冲区⼤⼩和 1 GB 的最⼤数据包⼤⼩

image-20241024174635545

  1. 系统变量有两个作⽤域,分别是 Global (全局)和 Session (会话), Global 全局变量影响服务器的整体操作, Session 会话变量影响各个客⼾端连接的操作。给定的系统变量可以同时具有全局值和会话值,它们的关系如下:
    • 服务器启动时,会将每个全局变量初始化并设置默认值,具体的值可以通过命令⾏或选项⽂件更改。
    • 服务器为每个客⼾端维护⼀组 Session 变量,在客⼾端连接时使⽤相应全局变量的当前值进⾏初始化。
  2. ⼤部分系统变量是动态的,在服务器运⾏时可以通过 SET 语句动态更改,并且⽆需停⽌和重新启动服务器。在服务器运⾏时,使⽤ SET 语句设置系统变量,需要指定作⽤域(也可以在前⾯加上@@ 修饰符),然后指定系统变量的名称,名称必须使⽤下划线⽽不是破折号,如下所⽰:

​ a. 设置全局系统变量最⼤连接数为1000

image-20241024174825714

​ b. 将全局系统变量持久化到 mysqld-auto.cnf ⽂件(同时设置运⾏时值):

# PERSIST 表⽰持久化的同时设置全局变量的值

mysql> SET PERSIST max_connections = 1000;

mysql> SET @@PERSIST.max_connections = 1000;

​ c. 将全局系统变量持久化到 mysqld-auto.cnf ⽂件(不设置运⾏时值):

image-20241024175044137

删除持久化的系统变量可以使⽤语句

RESET PERSIST IF EXISTS system_var_name ;

​ d. 设置 Session 系统变量,时区为"+8:00":

image-20241024175115722

  1. 对于数值型的系统变量,⽤带有后缀的值指定时,只适⽤于选项⽅式,⽽不能⽤在 SET ⽅式中;SET ⽅式可以使⽤表达式为系统变量指定值,⽽在选项⽅式中不允许,如下所⽰:

image-20241024175200675

说明:在设置全局变量时需要指定GLOBAL关键字的原因是为了防⽌出现以下问题:

  • 如果要删除的SESSION变量与GLOBAL变量名相同,那么具有修改全局变量权限的客⼾端可能会意外地更改GLOBAL变量,⽽不仅仅是只修改SESSION变量。
  • 如果已经有⼀个SESSION变量⽽且与GLOBAL变量同名,那么本意是要修改GLOBAL变量,可能只是修改了SESSION变量的值

所以没有明确指定 GLOBAL 和 SESSION 时,对于当前客⼾端来说 SESSION 的优先级更⾼

  1. 要显⽰系统变量名称和值,请使⽤以下 SHOW VARIABLES 语句:

image-20241024175451109

  1. 可以使⽤ LIKE ⼦句显⽰与指定内容匹配的变量,也可以使⽤通配符

image-20241024175516530

  1. ⼀部分系统变量是内置的,也有⼀些需要通过安装服务器插件或组件才可以使⽤
    • ⽐如⽤于审计插件 audit_log 实现了名为 audit_log_policy 的系统变量
    • 错误⽇志过滤组件 log_filter_dragnet 实现了名为 log_error_filter_rules 的系统变量。

4 ⽰例:服务器常⽤配置

  • Linux系统下编辑 /etc/mysql/my.cnf

  • Windows系统下打开C:/ProgramData/MySQL/MySQL Server 8.0/my.ini

注意:

  • 编辑前先备份原始⽂件

  • 如果要修改数据⽬录选项建议先停⽌MySQL服务,并把原data⽬录整体复制到新路径,配置完成后重启服务

5 查看状态变量

MySQL服务器维护着当前系统信息的状态变量

可以使⽤ SHOW [GLOBAL | SESSION] STATUS [like status_name]; 语句查看这些变量和对应的值。

GLOBAL显⽰所有连接的值,SESSION显⽰当前连接的值。

image-20241024180505209


http://www.kler.cn/a/369179.html

相关文章:

  • 以通俗易懂的仓库来讲解JVM内存模型
  • 数据结构_二叉树
  • ArrayList和Array、LinkedList、Vector 间的区别
  • 并联 高电压、高电流 放大器实现 2 倍输出电流模块±2A
  • 中国人寿财险青岛市分公司:保障民生,传递关爱
  • 张驰咨询:六西格玛培训费用,到底值不值得花?
  • 小米面试题:多级缓存一致性问题怎么解决
  • UDP 实现的 Echo Server 和 Echo Client 回显程序
  • 雷池社区版OPEN API使用教程
  • 模拟 DDoS 攻击与防御实验
  • 链表学习的疑惑
  • etcd之etcd分布式锁及事务(四)
  • [Web安全 网络安全]-反序列化漏洞
  • 【rabbitmq】rabbitmq工作模式
  • 震惊!25岁普信男又思索出自己的成功学?
  • 机器学习之 AdaBoost(Adaptive Boosting)
  • web相关知识学习笔记
  • MFC扩展库BCGControlBar Pro v35.1新版亮点 - 改进编辑控件性能
  • AI创作者与人类创作者的协作模式
  • 本地搭建Trilium Notes轻松创建个人知识库并实现远程查看文档资料
  • python 实现一个简单的浏览器引擎
  • Springboot整合原生ES依赖
  • 【力扣 + 牛客 | SQL题 | 每日3题】SQL大厂面试题SQL156, 157
  • 软考中级嵌入式系统设计师笔记分享(一)
  • Seatunnel和Seatunnel-web部署-linux
  • 【脚本】B站视频AB复读