docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’

1.jpeg

执行命令如下:

docker run -d -p 3306:3306 --name mysql3306 --restart=always --privileged=true -v /myvolume/mysql-master/log:/var/log/mysql -v /myvolume/mysql-master/data:/var/lib/mysql -v /myvolume/mysql-master/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

docker run -d -p 3307:3306 --name mysql3307 --restart=always --privileged=true -v /myvolume/mysql-master/log:/var/log/mysql -v /myvolume/mysql-master/data:/var/lib/mysql -v /myvolume/mysql-master/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

背景说明:

成功启动第一个mysql实例,进入容器内然后执行登录命令:mysql -uroot -p 是可以成功访问连接mysql的,当启动第二个mysql实例的时候,进入容器报错如图1,显示Can’t connect to local MySQL server through socket ‘/var/run ,然后执行命令查看日志:docker logs --tail 50 --floow --timestamps mysql3307 报错如图2。
image.png

如图1

image.png

如图2

我的错误原因
如图2报错纯粹是docker启动2个mysql实例时指向了相同的数据卷,正常应该是启动一个实例指定唯一一个数据卷。
问题:那么为什么会出现这个常识错误呢?
因为当时在我觉得“数据卷”只是宿主机为了持久化存储数据的一种方式,所以我会觉得多个mysql实例指向相同的保存路径这个思路没问题呀,但是却忽略的数据库InnoDB是有锁机制的,当一个进程跑第1个mysql实例的时候就已经针对数据卷进行了加锁操作,这样当启动第2个mysql实例的时候,发现怎么都获取不到数据卷文件,因为被第一个实例加锁占用呢,所以就会报如图2的错误。

现实场景中使用应该是不同数据库实例指向不同的数据卷,且不同数据库实例要启动在不同的 服务器上,因为一台服务器跑公司所有项目的多个mysql实例,万一服务器有问题所有mysql都用不了,达不到高性能、高可用的效果。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
552 69
|
监控 API 开发工具
Socket.IO介绍,以及怎么连接测试Socket.IO接口?
Socket.IO 是一个用于浏览器和服务器间实时双向通信的库,支持低延迟消息传递、跨平台运行及自动重连。文章介绍了其特点与调试需求,并详细说明如何使用 Apifox 工具创建、连接、发送/接收 Socket.IO 事件,以及团队协作和调试技巧。掌握这些技能可提升实时应用开发效率与质量。
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
关系型数据库 MySQL Linux
Docker安装mysql详细教程, mysqld: Can‘t read dir of ‘/etc/mysql/conf.d/‘(报错已解决)
Docker安装mysql详细教程, mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory) 已解决
|
安全 关系型数据库 MySQL
【Python】已解决:pymysql.err.OperationalError:(2003 “Can’t connect to MySQL server on ‘localhost’ ([WinEr
【Python】已解决:pymysql.err.OperationalError:(2003 “Can’t connect to MySQL server on ‘localhost’ ([WinEr
2616 1
|
网络协议 Java
如何在Java中使用Socket编程实现TCP连接?
在Java中,通过Socket编程实现TCP连接非常常见。以下演示了基本的TCP通信流程,可根据具体需求进行扩展。
848 0
|
网络协议 开发者 Python
深度探索Python Socket编程:从理论到实践,进阶篇带你领略网络编程的魅力!
【7月更文挑战第25天】在网络编程中, Python Socket编程因灵活性强而广受青睐。本文采用问答形式深入探讨其进阶技巧。**问题一**: Socket编程基于TCP/IP,通过创建Socket对象实现通信,支持客户端和服务器间的数据交换。**问题二**: 提升并发处理能力的方法包括多线程(适用于I/O密集型任务)、多进程(绕过GIL限制)和异步IO(asyncio)。**问题三**: 提供了一个使用asyncio库实现的异步Socket服务器示例,展示如何接收及响应客户端消息。通过这些内容,希望能激发读者对网络编程的兴趣并引导进一步探索。
337 4
|
开发者 Python
Python Socket编程:不只是基础,更有进阶秘籍,让你的网络应用飞起来!
【7月更文挑战第25天】在网络应用蓬勃发展的数字时代,Python凭借其简洁的语法和强大的库支持成为开发高效应用的首选。本文通过实时聊天室案例,介绍了Python Socket编程的基础与进阶技巧,包括服务器与客户端的建立、数据交换等基础篇内容,以及使用多线程和异步IO提升性能的进阶篇。基础示例展示了服务器端监听连接请求、接收转发消息,客户端连接服务器并收发消息的过程。进阶部分讨论了如何利用Python的`threading`模块和`asyncio`库来处理多客户端连接,提高应用的并发处理能力和响应速度。掌握这些技能,能使开发者在网络编程领域更加游刃有余,构建出高性能的应用程序。
219 3
|
网络协议 测试技术 网络安全
Python编程-Socket网络编程
Python编程-Socket网络编程
252 0
|
网络协议 Python
网络世界的建筑师:Python Socket编程基础与进阶,构建你的网络帝国!
【7月更文挑战第26天】在网络的数字宇宙中,Python Socket编程是开启网络世界大门的钥匙。本指南将引领你从基础到实战,成为网络世界的建筑师。
306 2

推荐镜像

更多