MySQL是怎样运行的——第2章 启动选项和系统变量

文章目录

      • [2.1 在命令行上使用选项](#2.1 在命令行上使用选项)
        • [2.1.1 选项的长形式和短形式](#2.1.1 选项的长形式和短形式)
      • [2.2 配置文件中使用选项](#2.2 配置文件中使用选项)
        • [2.2.1 配置文件的路径](#2.2.1 配置文件的路径)
        • [2.2.2 配置文件的内容](#2.2.2 配置文件的内容)
        • [2.2.3 配置文件的优先级](#2.2.3 配置文件的优先级)
      • [2.3 命令行和配置文件中启动选项的区别](#2.3 命令行和配置文件中启动选项的区别)
      • [2.4 系统变量](#2.4 系统变量)
        • [2.4.1 简介](#2.4.1 简介)
        • [2.4.2 查看系统变量](#2.4.2 查看系统变量)
        • [2.4.3 设置系统变量](#2.4.3 设置系统变量)
        • [2.4.4 启动选项和系统变量的区别](#2.4.4 启动选项和系统变量的区别)
      • [2.5 状态变量](#2.5 状态变量)

2.1 在命令行上使用选项

启动服务器程序的命令行后边指定启动选项的通用格式如下:

--启动选项1[=值1] ---启动选项2[=值2] ... --启动选项n[=值n]

选项名、=、选项值之间不可以有空白字符。

使用mysql ---help可以看到mysql程序支持的启动选项。

2.1.1 选项的长形式和短形式

2.2 配置文件中使用选项

在命令行中设置启动选项只对当次启动生效,从而引出配置文件的概念:把需要设置的启动选项都写在配置文件中,每次启动服务器的时候都从这个文件里加载相应的启动选项。

2.2.1 配置文件的路径


2.2.2 配置文件的内容

配置文件中的启动选项被划分为若干个组,每个组有一个组名,用中括号[]括起来,像这样:

text 复制代码
[server]
(具体的启动选项...)

[mysqld]
(具体的启动选项...)

[mysqld_safe]
(具体的启动选项...)

[client]
(具体的启动选项...)

[mysql]
(具体的启动选项...)

[mysqladmin]
(具体的启动选项...)

📌但是配置文件中只能使用长形式的选项。在配置文件中指定的启动选项不允许加 -- 前缀,并且每行只指定一个选项,而且 = 周围可以有空白字符(命令行中选项名、= 、选项值之间不允许有空白字符)。另外,在配置文件中,我们可以使用 # 来添加注释,从 # 出现直到行尾的内容都属于注释内容,读取配置文件时会忽略这些注释内容。

2.2.3 配置文件的优先级

MySQL 将按照我们在上表中给定的顺序依次读取各个配置文件,如果该文件不存在则忽略。值得注意的是,如果我们在多个配置文件中设置了相同的启动选项,那以最后一个配置文件中的为准。

2.3 命令行和配置文件中启动选项的区别

命令行上指定的绝大部分启动选项都可以放到配置文件中,但是有一些选项是专门为命令行设计的,比方说defaults-extra-file 、 defaults-file这种本身就是为了指定配置文件路径的。

注意:若同一个启动选项既出现在命令行中,又出现在配置文件中,则已命令行中的为准!

2.4 系统变量

2.4.1 简介

MySQL服务器程序运行过程中会用到许多影响程序行为的变量,被称为MySQL系统变量,如max_connections等,MySQL有好几百条。可以使用命令行或配置文件中的选项在启动服务器时改变一些系统变量的值。大多数系统变量的值也可以在程序运行过程中修改,而无需停止并重新启动它。

2.4.2 查看系统变量

SHOW VARIABLES [LIKE 匹配的模式];

2.4.3 设置系统变量
  1. 通过启动选项设置

    大部分的系统变量都可以通过启动服务器时传送启动选项的方式来设置,可以通过命令行添加启动选项通过配置文件添加启动选项两种方式。

  2. 服务器程序运行过程中设置

    大部分系统变量的值都可以在服务器程序运行过程中进行动态修改而无需停止并重启服务器。

    系统变量的作用范围:

    • GLOBAL:全局变量,影响服务器的整体操作;
    • SESSION:会话变量,影响某个客户端连接的操作;
      在服务器程序运行期间通过客户端程序设置系统变量的语法:
      SET [GLOBAL|SESSION] 系统变量名 = 值;SET [@@(GLOBAL|SESSION).]var_name = XXX;

    例如:

    语句一:SET GLOBAL default_storage_engine = MyISAM;

    语句二:SET @@GLOBAL.default_storage_engine = MyISAM;

    若省略了作用范围,默认为SESSION。

注意:

  1. SHOW VARIABLES语句查看的是SESSION作用范围的系统变量。完整语法为SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式];
  2. 某个客户端修改了某个系统变量在GLOBAL作用范围的值,并不会影响在当前已经连接的客户端作用范围为SESSION的值,只会影响后续连入的客户端在作用范围为SESSION的值。
  3. 有些系统变量只有GLOBAL作用范围,有些只有SESSION;
  4. 有些系统变量是只读的,不能设置值,比如version
2.4.4 启动选项和系统变量的区别

启动选项时程序启动时传递的一些参数,而系统变量是影响服务器程序运行行为的变量,关系如下:

  • 大部分系统变量都可以被当做启动选项传入;
  • 有些系统变量是在程序运行过程中自动生成的,不可以当做启动选项来设置,如auto_increment_offset 、 character_set_client;
  • 有些启动选项也不是系统变量,比如defaults-file。

2.5 状态变量

状态变量是关于程序运行状态的变量。如 Threads_connected表示当前有多少客户端与服务器建立了连接,Handler_update表示已经更新了多少行记录。

状态变量的值只能由服务器程序自己设置。

查看状态变量的语法与系统变量类似,省略作用范围则默认SESSION:

SHOW [GLOBAL|SESSION] STATUS [LIKE 匹配的模式];

相关推荐
gma9991 小时前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️1 小时前
华为ASP与CSP是什么?
服务器·前端·数据库
Yz98761 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发
武子康2 小时前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql
黑色叉腰丶大魔王2 小时前
《MySQL 数据库备份与恢复》
mysql
苏-言2 小时前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
Ljw...2 小时前
索引(MySQL)
数据库·mysql·索引
菠萝咕噜肉i2 小时前
超详细:Redis分布式锁
数据库·redis·分布式·缓存·分布式锁
长风清留扬2 小时前
一篇文章了解何为 “大数据治理“ 理论与实践
大数据·数据库·面试·数据治理
OpsEye2 小时前
MySQL 8.0.40版本自动升级异常的预警提示
数据库·mysql·数据库升级