-------MySQL是怎么运行的
基本介绍
如果你用过手机,你的手机上一定有一个设置的功能,你可以选择设置手机的来电铃声、设置音量大小、设置解锁密码等等。假如没有这些设置功能,我们的生活将置于尴尬的境地,比如在图书馆里无法把手机设置为静音,无法把流量开关关掉以节省流量,在别人得知解锁密码后无法更改密码~ MySQL 的服务器程序和客户端程序也有很多设置项,比如对于 MySQL 服务器程序,我们可以指定诸如允许同时连入的客户端数量、客户端和服务器通 信方式、表的默认存储引擎、查询缓存的大小吧啦吧啦的设置项。对于 MySQL 客户端程序,我们之前已经见识过了,可以指定需要连接的服务器程序所在主机的主机名或 IP 地址、用户名及密码等信息。这些设置项一般都有各自的默认值,比方说服务器允许同时连入的客户端的默认数量是 151 ,表的默认存储引擎 是 InnoDB ,我们可以在程序启动的时候去修改这些默认值,对于这种在程序启动时指定的设置项也称之为启动 选项( startup options ),这些选项控制着程序启动后的行为。在 MySQL 安装目录下的 bin 目录中的各种可执行 文件,不论是服务器相关的程序(比如 mysqld 、 mysqld_safe )还是客户端相关的程序(比如 mysql 、mysqladmin ),在启动的时候基本都可以指定启动参数。这些启动参数可以放在命令行中指定,也可以把它们 y q ),在启动的时候基本都可以指定启动参数。这些启动参数可以放在命令行中指定,也可以把它们 放在配置文件中指定。下边我们会以 mysqld 为例,来详细唠叨指定启动选项的格式。需要注意的一点是,我们 现在要唠叨的是设置启动选项的方式,下边出现的启动选项不论大家认不认识,先不用去纠结每个选项具体的作用是啥,之后我们会对一些重要的启动选项详细唠叨。
常见实战案例:
在命令行上使用选项
选项的长形式和短形式
配置文件中使用选项
在命令行中设置启动选项只对当次启动生效,也就是说如果下一次重启程序的时候我们还想保留这些启动选项的话,还得重复把这些选项写到启动命令行中,这样真的神烦唉!于是设计 MySQL 的大叔们提出一种 配置文件 (也称为 选项文件 )的概念,我们把需要设置的启动选项都写在这个配置文件中,每次启动服务器的时候都从 这个文件里加载相应的启动选项。由于这个配置文件可以长久的保存在计算机的硬盘里,所以只需我们配置一次,以后就都不用显式的把启动选项都写在启动命令行中了, 所以我们推荐使用配置文件的方式来设置启动选 项 。
1)配置文件的路径
MySQL 程序在启动时会寻找多个路径下的配置文件,这些路径有的是固定的,有的是可以在命令行指定的。根据操作系统的不同,配置文件的路径也有所不同,我们分开看一下。
(1) Windows操作系统的配置文件
(2)类Unix操作系统中的配置文件
2) 配置文件的内容
与在命令行中指定启动选项不同的是,配置文件中的启动选项被划分为若干个组,每个组有一个组名,用中括号[] 扩起来,像这样
3)特定MySQL版本的专用选项组
我们可以在选项组的名称后加上特定的 MySQL 版本号,比如对于 [mysqld] 选项组来说,我们可以定义一个[mysqld-5.7] 的选项组,它的含义和 [mysqld] 一样,只不过只有版本号为 5.7 的 mysqld 程序才能使用这个选 项组中的选项。
4)配置文件的优先级
5) 同一个配置文件中多个组的优先级
我们说同一个命令可以访问配置文件中的多个组,比如 mysqld 可以访问 [mysqld] 、 [server] 组,如果在同一个配置文件中,比如 ~/.my.cnf ,在这些组里出现了同样的配置项,比如这样:
defaults-file的使用
命令行和配置文件中启动选项的区别
系统变量
1)系统变量简介
MySQL 服务器程序运行过程中会用到许多影响程序行为的变量,它们被称为 MySQL 系统变量,比如允许同时连入的客户端数量用系统变量 max_connections 表示,表的默认存储引擎用系统变量 default_storage_engine 表 示,查询缓存的大小用系统变量 query_cache_size 表示, MySQL 服务器程序的系统变量有好几百条,我们就不 一一列举了。每个系统变量都有一个默认值,我们可以使用命令行或者配置文件中的选项在启动服务器时改变一 些系统变量的值。大多数的系统变量的值也可以在程序运行过程中修改,而无需停止并重新启动它。
2)查看系统变量
3) 设置系统变量
1-通过启动项设置
大部分的 系统变量 都可以通过启动服务器时传送启动选项的方式来进行设置。如何填写启动选项我们上边已经花了大篇幅来唠叨了,就是下边两种方式:1)通过命令行添加启动选项。比方说我们在启动服务器程序时用这个命令:mysqld --default-storage-engine=MyISAM --max-connections=102)通过配置文件添加启动选项。我们可以这样填写配置文件:[server]default-storage-engine=MyISAMmax-connections=10当使用上边两种方式中的任意一种启动服务器程序后,我们再来查看一下系统变量的值:
2-服务器程序运行过程中设置
系统变量 比较牛逼的一点就是, 对于大部分系统变量来说,它们的值可以在服务器程序运行过程中进行动态修改而无需停止并重启服务器 。不过系统变量有作用范围之分,下边详细唠叨下。
注意事项
并不是所有系统变量都具有 GLOBAL 和 SESSION 的作用范围 。有一些系统变量只具有 GLOBAL 作用范围,比方说 max_connections ,表示服务器程序支持同时最多有多少个客户端程序进行连接。有一些系统变量只具有 SESSION 作用范围,比如 insert_id ,表示在对某个包含 AUTO_INCREMENT 列的表进行插入时,该列初始的值。有一些系统变量的值既具有 GLOBAL 作用范围,也具有 SESSION 作用范围,比如我们前边用到的 default_storage_engine ,而且其实大部分的系统变量都是这样的,有些系统变量是只读的,并不能设置值 。比方说 version ,表示当前 MySQL 的版本,我们客户端是不能设置它的值的,只能在 SHOW VARIABLES 语句里查看。