mysql启动


title: mysql启动
date: 2020-11-13 20:39:13
categories: 数据库
tags:
- mysql
description: mysql的一些启动命令介绍


mysql服务器可执行文件非常多,大多都在安装目录下的bin目录

  • mysqld
    这个可执行文件就代表着MySQL服务器程序,运行这个可执行文件就可以直接启动一个服务器进程。但这个命令不常用,我们继续往下看更牛逼的启动命令

  • mysqld_safe
    mysqld_safe是一个启动脚本,它会间接的调用mysqld,而且还顺便启动了另外一个监控进程,这个监控进程在服务器进程挂了的时候,可以帮助重启它。另外,使用mysqld_safe启动服务器程序时,它会将服务器程序的出错信息和其他诊断信息重定向到某个文件中,产生出错日志,这样可以方便我们找出发生错误的原因。

    ./bin/mysqld_safe --user=mysql &
    200331 20:16:57 mysqld_safe Starting mysqld daemon with databases from /home/software/mysql/data
    #测试  
    bin/mysqladmin variables  
    bin/mysqladmin version
    
  • mysqld_multi
    其实我们一台计算机上也可以运行多个服务器实例,也就是运行多个MySQL服务器进程。mysql_multi可执行文件可以对每一个服务器进程的启动或停止进行监控。这个命令的使用比较复杂,本书主要是为了讲清楚MySQL服务器和客户端运行的过程,不会对启动多个服务器程序进行过多唠叨。

mysqld后缀的命令都是服务器相关的命令,mysql后缀的命令都是客户端相关的命令

  • mysqladmin
    也是一种客户端,不过是用来管理的特殊客户端,比如查看服务器状态、关闭服务器、创建或删除数据库,重新加载授权表等

    # 关闭服务器
    bin/mysqladmin -u root shutdown  
    
  • mysql客户端程序
    mysql -h主机名 -u用户名 -p密码
    如果服务器进程监听的端口号不是默认的3306,我们也可以在使用mysql启动客户端程序时使用-P参数(大写的P,小写的p是用来指定密码的)来指定需要连接到的端口号

像 h、u、p 这样名称只有一个英文字母的参数称为短形式的参数,使用时前边需要加单短划线,像 host、user、password 这样大于一个英文字母的参数称为长形式的参数,使用时前边需要加双短划线。大写的P指定端口,小写的p是用来指定密码的

服务器处理客户端的请求

mysql处理过程

从图中我们可以看出,服务器程序处理来自客户端的查询请求大致需要经过三个部分,分别是连接管理、解析与优化、存储引擎。下边我们来详细看一下这三个部分都干了什么。

  • 连接管理
    客户端进程可以采用TCP/IP、命名管道或共享内存、Unix域套接字这几种方式之一来与服务器进程建立连接,每当有一个客户端进程连接到服务器进程时,服务器进程都会创建一个线程来专门处理与这个客户端的交互(采用线程池模式)

  • 查询缓存
    MySQL服务器会把刚刚处理过的查询请求和结果缓存起来,如果下一次有一模一样的请求过来,直接从缓存中查找结果就好了,就不用再傻呵呵的去底层的表中查找了,不同客户端之间共享

  • 语法解析
    如果查询缓存没有命中,接下来就需要进入正式的查询阶段了。因为客户端程序发送过来的请求只是一段文本而已,所以MySQL服务器程序首先要对这段文本做分析,判断请求的语法是否正确,然后从文本中将要查询的表、各种查询条件都提取出来放到MySQL服务器内部使用的一些数据结构上来

  • 查询优化

语法解析之后,服务器程序获得到了需要的信息,但光有这些是不够的,MySQL的优化程序会对我们的语句做一些优化,如外连接转换为内连接、表达式简化、子查询转为连接吧啦吧啦的一堆东西。优化的结果就是生成一个执行计划,表明了应该使用哪些索引进行查询,表之间的连接顺序是啥样的。我们可以使用EXPLAIN语句来查看某个语句的执行计划。

存储引擎

为了管理方便,人们把连接管理、查询缓存、语法解析、查询优化这些并不涉及真实数据存储的功能划分为MySQL server的功能,把真实存取数据的功能划分为存储引擎的功能。
各种不同的存储引擎向上边的MySQL server层提供统一的调用接口(也就是存储引擎API),包含了几十个底层函数,像”读取索引第一条内容”、”读取索引下一条内容”、”插入记录”等等。

mysql> mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)
  • 创建表时指定存储引擎
CREATE TABLE 表名(
    建表语句;
) ENGINE = 存储引擎名称;

启动选项和配置文件

  • 第一种:在启动服务器程序名时加入选项,--启动选项1[=值1] --启动选项2[=值2] ... --启动选项n[=值n]

mysqld -P3307
使用短形式指定启动选项时,选项名和选项值之间可以没有间隙,或者用空白字符隔开(-p选项有些特殊,-p和密码值之间不能有空白字符),也就是说上边的命令形式和下边的是等价的:
mysqld -P 3307

  • 第二种:修改配置文件
    在类unix操作系统中,Mysql会按照下列路径来寻找配置文件:
    /etc/my.cnf
    /etc/mysql/my.cnf
    SYSCONFDIR/my.cnf
    $MYSQL_HOME/my.cn
    defaults-extra-file
    ~/.my.cnf
    ~/.mylogin.cnf
    从上往下,优先级依次增高

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

    [mysqld]
    (具体的启动选项...)
    
    [mysqld_safe]
    (具体的启动选项...)
    [client]
    
    (具体的启动选项...)
    
    [mysql]
    (具体的启动选项...)
    
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容