MySQL之my.cnf配置文件_mysql my.cnf配置

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

图片

之前没有仔细研究过my.cnf文件今天有时间研究了一下my.cnf中的一些概念这里简单整理如下如果有什么问题还请大家指出。

按照教程安装好MySQL之后打开etc目录下的my.cnf文件大概可看到下面这样的参数列表可能不同版本的mysql参数多少会有一些不一致但是并不妨碍我们理解。

图片

首先我们可以看到这个文件里面有mysqld和mysql_safe两类参数我们知道mysqld和mysql_safe都可以启动mysql服务那么mysqld和mysql_safe这两个类之间有什么不同呢要讨论这个问题我们需要引入第三个类别mysql.server并同时讨论这三种启动方式的区别。

问题1.mysql.servermysqldmysqld_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.servermysql.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的端口号是1929mysqld的端口号是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和IPmysql.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 进程的 pidpid 亦即 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的昵称)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql