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 匹配的模式];

相关推荐
苦学编程的谢2 分钟前
Redis_1_初识Redis+浅谈分布式系统
数据库·redis·缓存
Hello.Reader15 分钟前
用 Flink CDC 将 MySQL 实时同步到 Doris
大数据·mysql·flink
人工智能教学实践16 分钟前
Flask-SQLAlchemy 操作 SQLite 数据库示例
数据库·sqlite·flask
老华带你飞1 小时前
房屋租赁|房屋出租|房屋租赁系统|基于Springboot的房屋租赁系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·vue·论文·毕设·房屋租赁系统
TDengine (老段)1 小时前
TDengine 数学函数 ASCII 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
sukida1001 小时前
在openSUSE-Leap-15.6-DVD-x86_64-Media自制应用软件离线包——备份91个视频解码器的rpm包
数据库·redis·音视频
信仰_2739932431 小时前
Mysql中MVCC的流程
数据库·mysql
123461611 小时前
互联网大厂Java面试:从Spring Boot到微服务的探索
java·数据库·spring boot·微服务·面试·mybatis·orm
一 乐2 小时前
农产品销售系统|农产品电商|基于SprinBoot+vue的农产品销售系统(源码+数据库+文档)
java·javascript·数据库·vue.js·spring boot·后端·农产品销售系统
攀小黑2 小时前
docker 容器内nacos(若依plus打包)连接另一台内网服务器显示数据库连接失败
服务器·数据库·docker