当前位置:首页 > 文章列表 > 数据库 > MySQL > 详解MySQL中的pid与socket

详解MySQL中的pid与socket

来源:脚本之家 2023-02-24 17:45:30 0浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个数据库开发实战,手把手教大家学习《详解MySQL中的pid与socket》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

  • socket文件:当用Unix域套接字方式进行连接时需要的文件。
  • pid文件:MySQL实例的进程ID文件。

1.pid-file介绍

MySQL 中的 pid 文件记录的是当前 mysqld 进程的 pid ,pid 亦即 Process ID 。可以通过 pid-file 参数来配置 pid 文件路径及文件名,如果未指定此变量,则 pid 文件默认名为 host_name.pid ,存放的路径默认放在 MySQL 的数据目录。

建议指定 pid 文件名及路径,pid 目录权限要对 mysql 系统用户放开,具体配置可参考如下:

# my.cnf 配置文件
[mysqld]
pid-file  = /data/mysql/tmp/mysqld.pid

# 查看mysqld进程
[root@localhost ~]# ps -ef|grep mysqld
root       8670      1  0 Jun09 ?        00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/data --pid-file=/data/mysql/tmp/mysqld.pid
mysql      9353   8670  0 Jun09 ?        00:01:23 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/logs/error.log --pid-file=/data/mysql/tmp/mysqld.pid --socket=/data/mysql/tmp/mysql.sock

# 查看pid文件内容 
[root@localhost ~]# cat /data/mysql/tmp/mysqld.pid
9353

可以看到 pid 文件内容只有一行,记录了 mysqld 进程的 ID 。mysqld 进程启动后会通过 create_pid_file 函数新建 pid 文件,通过 getpid() 获取当前进程号并将进程 ID 写入 pid 文件。进程运行后会给 pid 文件加一个文件锁,只有获得 pid 文件写入权限的进程才能正常启动并把自身的 PID 写入该文件中,其它同一个程序的多余进程则自动退出。因此 pid 文件的作用是防止启动多个进程副本。

有时候可能会遇到因 pid 文件问题而启动失败的情况,这几类报错你可能遇到过:

Can‘t start server: can‘t create PID file: No such file or directory

ERROR! MySQL server PID file could not be found

ERROR! The server quit without updating PID file

上面几类 pid 相关报错解决方法其实都是类似的,首先要看下 error log 找到具体报错,然后查看配置文件,确保 pid 文件目录路径正确且有权限有空间,之后可以看下 mysqld 进程是否存在,若存在可手动 kill 掉,若有残留的 pid 文件也可以先删掉,一切排查就绪后,再次重新启动,一般即可成功。

2.socket文件介绍

socket 即 Unix 套接字文件,在类 unix 平台,客户端连接 MySQL 服务端的方式有两种,分别是 TCP/IP 方式与 socket 套接字文件方式。Unix 套接字文件连接的速度比 TCP/IP 快,但是只能连接到同一台计算机上的服务器使用。

通过设置 socket 变量可配置套接字文件路径及名称,默认值为 /tmp/mysql.sock (对于某些发行格式,目录可能有所不同)。参考配置如下:

# my.cnf 配置文件
[mysqld]
socket = /data/mysql/tmp/mysql.sock
[client]
socket = /data/mysql/tmp/mysql.sock

# 查看对应目录下的socket文件
root@localhost tmp]# ls -lh
total 8.0K
srwxrwxrwx 1 mysql mysql 0 Jun 10 15:19 mysql.sock
-rw------- 1 mysql mysql 6 Jun 10 15:19 mysql.sock.lock

# 通过 -S 命令指定socket登录
[root@localhost ~]# mysql -uroot -pxxxx -S /data/mysql/tmp/mysql.sock
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.22 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> status
--------------
mysql  Ver 8.0.22 for Linux on x86_64 (MySQL Community Server - GPL)

Connection id:          12
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         8.0.22 MySQL Community Server - GPL
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4
UNIX socket:            /data/mysql/tmp/mysql.sock
Binary data as:         Hexadecimal
Uptime:                 1 hour 27 min 31 sec

Threads: 3  Questions: 27  Slow queries: 0  Opens: 135  Flush tables: 3  Open tables: 56  Queries per second avg: 0.005

查看上述连接状态可知,MySQL 在本地可以通过 socket 方式连接。在本地登录时,如果 my.cnf 配置文件中的 [client] 部分没有指定 socket 文件路径,mysql 默认会去寻找 /tmp/mysql.sock ,所以如果 mysqld 服务启动的时候,生成的 socket 文件不是默认路径的话,登陆可能会报错(ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock')。其实 [mysqld] 部分及 [client] 部分都配置具体路径可避免此问题,也可以在 tmp 路径下建立软连接,如:ln -s /data/mysql/tmp/mysql.sock /tmp/mysql.sock 。同样的,socket 文件目录权限要对 mysql 系统用户放开。

总结:

本篇文章介绍了 MySQL 中的 pid 及 socket 文件的具体配置及作用。其实这两个参数还是比较好维护的,一开始配置好不要去动它就好了,若遇到重启报错的情况,根据错误日志慢慢来排查,细心的操作,总会找到问题的。

本篇关于《详解MySQL中的pid与socket》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于数据库的相关知识,请关注golang学习网公众号!

版本声明
本文转载于:脚本之家 如有侵犯,请联系study_golang@163.com删除
MySQL慢查询以及重构查询的方式记录MySQL慢查询以及重构查询的方式记录
上一篇
MySQL慢查询以及重构查询的方式记录
mysql高效查询left join和group by(加索引)
下一篇
mysql高效查询left join和group by(加索引)
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    514次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    499次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • SEO  AI Mermaid 流程图:自然语言生成,文本驱动可视化创作
    AI Mermaid流程图
    SEO AI Mermaid 流程图工具:基于 Mermaid 语法,AI 辅助,自然语言生成流程图,提升可视化创作效率,适用于开发者、产品经理、教育工作者。
    638次使用
  • 搜获客笔记生成器:小红书医美爆款内容AI创作神器
    搜获客【笔记生成器】
    搜获客笔记生成器,国内首个聚焦小红书医美垂类的AI文案工具。1500万爆款文案库,行业专属算法,助您高效创作合规、引流的医美笔记,提升运营效率,引爆小红书流量!
    646次使用
  • iTerms:一站式法律AI工作台,智能合同审查起草与法律问答专家
    iTerms
    iTerms是一款专业的一站式法律AI工作台,提供AI合同审查、AI合同起草及AI法律问答服务。通过智能问答、深度思考与联网检索,助您高效检索法律法规与司法判例,告别传统模板,实现合同一键起草与在线编辑,大幅提升法律事务处理效率。
    662次使用
  • TokenPony:AI大模型API聚合平台,一站式接入,高效稳定高性价比
    TokenPony
    TokenPony是讯盟科技旗下的AI大模型聚合API平台。通过统一接口接入DeepSeek、Kimi、Qwen等主流模型,支持1024K超长上下文,实现零配置、免部署、极速响应与高性价比的AI应用开发,助力专业用户轻松构建智能服务。
    729次使用
  • 迅捷AIPPT:AI智能PPT生成器,高效制作专业演示文稿
    迅捷AIPPT
    迅捷AIPPT是一款高效AI智能PPT生成软件,一键智能生成精美演示文稿。内置海量专业模板、多样风格,支持自定义大纲,助您轻松制作高质量PPT,大幅节省时间。
    624次使用
查看更多
相关文章
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码