关于mysql:MySQL之mycnf配置文件

7次阅读

共计 3041 个字符,预计需要花费 8 分钟才能阅读完成。

之前没有认真钻研过 my.cnf 文件,明天有工夫钻研了一下 my.cnf 中的一些概念,这里简略整顿如下,如果有什么问题,还请大家指出。

依照教程装置好 MySQL 之后,关上 etc 目录下的 my.cnf 文件,大略可看到上面这样的参数列表,可能不同版本的 mysql 参数多少会有一些不统一,然而并不障碍咱们了解。

首先,咱们能够看到这个文件外面有 mysqld 和 mysql_safe 两类参数,咱们晓得 mysqld 和 mysql_safe 都能够启动 mysql 服务,那么 mysqld 和 mysql_safe 这两个类之间有什么不同呢?要探讨这个问题,咱们须要引入第三个类别 mysql.server,并同时探讨这三种启动形式的区别。

问题 1.mysql.server,mysqld,mysqld_safe 的区别

mysql.server

它是一个服务器启动的 shell 脚本,次要作用就是为了不便启动和敞开 mysql 服务,它应用 mysql_safe 来启动 mysql 服务器,在 mysql.server 启动服务器之前,它将目录转换到 mysql 装置目录外面去,而后调用 mysqld_safe。mysql.server 通过向服务器发送一个信号来进行它,也能够应用 mysqladmin shutdown 命令来进行服务器,如果你应用源码或者二进制格局装置 mysql(没有主动装置 mysql.server 这个脚本),你能够手动装置;这个脚本在 mysql 装置目录下的 support-files 目录里边或者在源码包里边;为了能应用 service mysqld start 命令启动 mysql 服务,此时须要做的是将 mysql.server 的脚本复制到 /etc/init.d 目录下,而后重命名为 mysqld,最初给予执行权限。mysqld.server 会从配置文件的[mysqld] [mysql.server] 区域读取配置选项;

能够在全局配置文件 /etc/my.cnf 中配置 mysql.server,mysql.server 脚本反对上面这些选项;一旦指定,它们必须放在配置文件中,不能放到命令行中(mysql.server 反对的命令行参数只有 start 和 stop);

–basedir mysql 装置目录;

–datadir 数据文件的门路;

–pid-file 服务器写本人的过程号的文件;如果这个不指定,mysql 应用默认的 hostname.pid;

The PID file value 被传递给 mysqld_safe,笼罩了 [mysqld_safe] 上面指定的值;因为 mysql.server 读取 [mysqld] 选项组而不读取 [mysqld_safe] 选项组,所以为了在应用 mysql.server 调用 mysqld_safe 的时候,mysqld_safe 可能取得一样的 pid,咱们能够让 [mysqld] 选项组和 [mysqld_safe] 选项组应用同一个 pid-file;

mysql_safe

这是 mysql 服务启动脚本,它是 mysqld 的父过程,它调用 mysqld 启动数据库服务,并在启动 MySQL 服务器后持续监控其运行状况,并在其死机时重新启动它,当咱们开启 mysqld_safe 命令的时候,能够避免 mysql 服务的意外终止,这里做一个小小的测试。

首先查看以后的 mysql 服务:

而后发现服务中有一个 mysql_safe 和一个 mysqld,其中 mysqld_safe 的端口号是 1929,mysqld 的端口号是 2228,这个时候,咱们把 2228 的过程杀掉:

咱们发现,过程号为 2228 的 mysqld 过程曾经被杀掉,过程号为 1929 的 mysqld_safe 过程还在,又从新生成了一个过程号为 2288 的 mysqld 过程,接下来,咱们杀掉 mysqld_safe 的过程,kill -9 1929,失去的后果如下:

咱们发现杀掉 mysqld_safe 之后,只剩下过程号为 2288 的 mysqld 过程了,并没有生成新的 mysqld_safe 过程,这个时候,在再次杀掉 mysqld 过程 2288,后果如下:

此时,所有的过程都被敞开掉了,综合上述操作,咱们能够发现,当 mysqld_safe 过程存在时,咱们无奈间接杀掉 mysqld 过程,当咱们杀掉 mysqld_safe 过程的时候,此时才能够杀掉 mysqld 过程,这便是 mysqld_safe 的守护过程作用,它能够避免 mysqld 过程被意外终止。

mysqld

mysqld 是对于服务器端的程序,要想应用客户端程序, 该程序必须运行, 因为客户端通过连贯服务器来拜访数据库。

问题 2.mysql 的三种启动形式:

1、mysqld

启动 mysql 服务器:

客户端连贯:

2、mysqld_safe

启动 mysql 服务器:

客户端连贯:

3、mysql.server

启动 mysql 服务器:

客户端连贯: 同 1、2

问题 3.socket 文件 mysql.sock 详解

mysql 有两种连贯形式,一种是 TCP/IP 的形式,另外一种是 socket 的形式,mysql.sock 次要用户程序与 mysqlserver 在同一机器上,发动本地连接的时候应用,即无需再连贯服务时应用 host 和 IP,mysql.sock 是随着每一次 mysql server 的启动而生成的,当服务重启时,mysql.sock 也会从新生成。利用 mysql.sock 连贯服务的样例如下:

linux 下装置 mysql 连贯的时候常常回提醒说找不到 mysql.sock 文件,解决办法很简略:
1. 如果是新装置的 mysql,提醒找不到文件,就搜寻下,指定正确的地位。
2. 如果 mysql.sock 文件误删的话,就须要重启 mysql 服务,如果重启胜利的话会在 datadir 目录上面生成 mysql.sock 到时候指定即可。

问题 4. 查看 mysql 的配置文件调用程序

mysql –help|grep“my.cnf”,当启动 mysql 服务的时候,会从当前目录的 my.cnf 中去读对应的参数,优先级程序和输入程序保持一致。

问题 5.MySQL 的 pid 文件介绍

MySQL pid 文件记录的是以后 mysqld 过程的 pid,pid 亦即 Process ID。

1、未指定
pid 文件时,pid 文件默认名为 主机名.pid,寄存的门路在默认 MySQL 的数据目录。通过 mysqld_safe 启动 MySQL
时,mysqld_safe 会查看 pid 文件,如果 pid 文件不存在,不做解决;如果文件存在,且 pid 已占用则报错 “A
mysqld process already exists”,如果文件存在,但 pid 未占用,则删除 pid 文件。
2、查看 MySQL 的源码能够晓得,mysqld 启动后会通过 create_pid_file 函数新建 pid 文件,通过 getpid() 获取以后过程 pid 并将 pid 写入 pid 文件。
3、因而,通过 mysqld_safe 启动时,MySQL pid 文件的作用是:在数据文件是同一份,但端口不同的状况下,避免同一个数据库被启动屡次。

,通过 mysqld_safe 启动时,MySQL pid 文件的作用是:在数据文件是同一份,但端口不同的状况下,避免同一个数据库被启动屡次。
对于 MySQL 之 my.cnf 配置文件,你学废了么?


真诚地邀请您退出咱们的小家庭.
在这里不仅有技术常识分享, 还有博主们之间的互帮互助
不定期发红包, 每月更有抽奖环节, 游戏机和实体书相赠 (包邮)
让咱们抱团取暖, 抱团内卷. 打造美妙 C 站. 期待您的退出.
备注 : CSDN-xxxxxx (xxxxxx 代表你 csdn 的昵称)

正文完
 0