启动项
在程序启动的时候可以指定的设置项我们称之为启动项(startup option).启动项可以在命令行中指定,也可以在配置文件中配置。
使用启动项
命令行使用
mysqld --启动项值1[=值1] --启动项值2[=值2]
例:禁用TCP/IP连接
mysqld --skip-networking/mysqld --skip_networking
在上述例子中,短横线和下划线用法相同.
长短形式对应表
长形式 | 短形式 | 释义 |
---|---|---|
–host | -h | 连接的主机域名或ip地址 |
–user | -u | 用户名 |
–password | -p | 密码 |
–port | -P | 监听的端口号 |
–version | -V | 版本信息 |
配置文件使用
MySQL在启动的时候会在多个路径下寻找配置文件,操作系统不同搜寻的路径也不相同。具体的路径搜寻这里就不一一赘述了。
下面是一个配置文件的demo.被[]修饰的是一个个的组,每个组都可以定义属于自己的启动项。在配置文件中每行都只能有一个启动项,且前面不用加–,=两边可以有空格。当选项组的名字和程序名称相同的时候会应用对应的组。
#作用于所有的服务器程序
[server]
(具体启动项。。。)
#mysqld服务端程序
[mysqld]
(具体启动项。。。)
[mysqld_safe]
(具体启动项。。。)
#作用于所有的客户端程序
[client]
port=3306
general-log=0
(具体启动项。。。)
#mysql客户端程序
[mysql]
(具体启动项。。。)
[mysqladmin]
(具体启动项。。。)
有的选项组也会读取其他组的内容,具体如下。
程序名 | 类名 | 读取的组 |
---|---|---|
mysqld | 启动服务器 | [mysqld] [server] |
mysql | 启动客户端 | [mysql] [client] |
mysql_safe | 启动服务器 | [mysql_safe] [mysqld] [server] |
mysql.server | 启动服务器 | [mysql.server] [mysqld] [server] |
mysqladmin | 启动客户端 | [mysqladminr] [client] |
mysqldump | 启动客户端 | [mysqldump] [client] |
优先级
- 多个配置文件有相同的启动项以最后一个找到的配置文件为主
- 一个配置文件多个启动项组有相同的启动项配置以启动项组最后面对为主
- 如果命令行和配置文件中有相同的启动项以命令行为主
defaults-extra-file和defaults-file
- defaults-extra-file:在寻找配置文件的时候额外添加一个搜寻路径
- defaults-file:只在配置的路径下寻找配置文件
配置特定版本的启动项组
在配置文件中如果启动项组命名为[mysqld-5.7]则只有5.7版本的启动项程序能使用这个组。
系统变量
MySQL服务器程序在运行的过程中有需要影响程序行为的变量,称为系统变量。大多数系统变量可以在运行的过程中修改,无需重启服务器。
查看系统变量
show variables [like 匹配模式]
show variables like 'default_storage_engine'#查看默认的存储引擎
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
show variables like 'max_connections';#查看最大连接数目。实际允许max+1个连接数。多的一个超级用户使用的
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
**注意:**系统变量只支持使用下划线的写法。
系统变量的作用范围
多个客户端可以连接到同一个服务器,那么对于不同的连接可能想要有不同的配置。为此就提出了系统变量作用范围的概念。
- global(全局):所有的连接使用的都是同一个配置,影响服务器的整体操作
- session(会话):影响某个客户端的连接操作。
session配置的初始化:当服务器启动的时候会将所得有全局变量进行初始化,如果有客户端进行连接了,会单独为客户端分配可以为session的变量并根据全局变量进行初始化。
设置变量的作用范围
set [session|gloable] 系统变量名
如果没有写作用范围默认是session的
ser session default_stoage_engine=myisam;
show [session|gloable] variables [like 匹配模式]
不写作用范围默认查看的是session的
show session variables like 'default_storage_engine';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
如果改变了全局的系统变量并不会影响到已连接的客户端的session,后续连接的客户端会收到影响session.
注意
- 有些系统变量只有全局范围
- 有些系统变量只有session范围
- 大部分系统变量两者皆有
- 大部分系统变量都可以作为启动项在命令行传入
- 有些系统变量不可以作为启动项
状态变量
MySQL维护了许多描述程序运行状态的变量,称为状态变量。
shwo [gloable|session] status [like 匹配模式]
show status like 'thread%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_cached | 0 |
| Threads_connected | 3 |
| Threads_created | 3 |
| Threads_running | 1 |
+-------------------+-------+
启动项命令
启动项 | 释义 |
---|---|
skip-networking | 禁止客户端使用TCP/IP的形式进行通信 |
default-storage-engine=engineName | 修改默认的存储引擎 |
help | 查看支持的启动项(mysqld 除外) |
–verbose --help | mysqld查看支持的启动项 |
系统变量
变量名 | 释义 |
---|---|
max_connections | 客户端最大连接数 |
query_cache_size | 查询缓存的大小 |
本文为《MySQL是怎样运行的》读书笔记