docker部署mysql无法启动

环境

系统: centos7.7

docker: 19

mysql: 8.0.18

将原网址变更为

报错分析

日志内容

140505 16:05:59 InnoDB: Using Linux native AIO
140505 16:05:59  InnoDB: Warning: io_setup() failed with EAGAIN. Will make 5 attempts before giving up.
InnoDB: Warning: io_setup() attempt 1 failed.
InnoDB: Warning: io_setup() attempt 2 failed.
InnoDB: Warning: io_setup() attempt 3 failed.
InnoDB: Warning: io_setup() attempt 4 failed.
InnoDB: Warning: io_setup() attempt 5 failed.
140505 16:06:02  InnoDB: Error: io_setup() failed with EAGAIN after 5 attempts.
InnoDB: You can disable Linux Native AIO by setting innodb_use_native_aio = 0 in my.cnf
140505 16:06:02 InnoDB: Fatal error: cannot initialize AIO sub-system
140505 16:06:02 [ERROR] Plugin 'InnoDB' init function returned error.
140505 16:06:02 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140505 16:06:02 [ERROR] Unknown/unsupported storage engine: InnoDB

问题分析

看到io_setup用来创建异步I/O上下文环境用于特定目的,错误代码EAGAIN意为指定的maxevents 超出了用户可用events的限制。
该服务器上已经运行了较多的MySQL实例,创建异步I/O的资源已经达到了临界,所以新的实例启动失败。

解决方案一

启动MySQL实例时加入 --innodb_use_native_aio = 0

解决方案二

cat /proc/sys/fs/aio-max-nr可以查看到当前的aio-max-nr的值一般为65536(64k个)

/etc/sysctl.conf

fs.aio-max-nr=262144  #(256k个)

执行命令使其生效

sysctl -p

可以看到/proc/sys/fs/aio-max-nr中的值发生了变化
cat /proc/sys/fs/aio-max-nr

重启MySQL实例

原文链接: https://www.cnblogs.com/nb-blog/p/8391601.html

原文地址:https://www.cnblogs.com/peitianwang/p/12173242.html

时间: 2024-10-31 13:13:03

docker部署mysql无法启动的相关文章

使用docker部署mysql主从复制集群

一.环境搭建 虚拟机环境:centos7 IP:192.168.37.134 用户名:root 密码:123 启动3个容器,一个是master,端口是3307,另外两个是slaver,端口是3308和3309 docker pull mysql:5.7 docker run -p 3307:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7 docker run -p 3308:3306 --name mysql-sl

docker部署mysql 实现远程连接

1.docker search mysql   查看mysql版本 2.docker pull mysql  要选择starts最高的那个name 进行下载 3.docker images  查看下载好的镜像 4.启动mysql实例 docker run --name dockermysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql  --name 为mysql的实例设置别名. -p 3307为对外暴露的端口.3306是内部端口: 需

Docker - 部署MySQL, Redis

部署MySQL 拉取MySQL镜像 docker pull mysql:5.7 创建MySQL容器 docker run -di --name=mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql # 这里做了映射 -p 代表端口映射,格式为  宿主机映射端口:容器运行端口 -e 代表添加环境变量  MYSQL_ROOT_PASSWORD 是root用户的登陆密码 远程登录mysql,连接宿主机的IP ,指定端口为3306 部署Redis

docker 部署mysql服务之后,执行sql脚本

1,先将.sql文件copy到docker容器里 docker ps //找到容器的短ID或者指定的name. docker inspect  -f '{{.Id}}' id or name 得到指定容器的全ID docker cp 本地文件路径 ID全称:容器路径[docker cp mysql.sql 12345:/tmp/] 2,将文件copy进容器之后,进入docke 容器 docker exec -it mysql bash 进入容器 mysql -u root -p 进入mysql服

利用docker部署mysql数据库

前面两篇博客中,我们讨论了如何安装和使用docker,以及如何在docker中部署一个apache服务器,并在外部电脑中访问这个服务器 下面我们来讨论下如何利用docker来部署一个mysql数据库,并在外部电脑中访问这个数据库: 注意:如果你对以下某些命令不了解,请看我的第一篇博客 上面安装的xampp中已经包含了mysql数据库了,所以我就不重新安装mysql了. 首先按照上面教程在本机电脑中安装好xampp,并配置好.bashrc: 然后启动刚才新建的那个镜像ubuntu2,并将本机电脑的

docker部署mysql远程连接 解决1251 client does not support ..

现象:用虚拟机上Docker启动mysql之后无法在本地安装的navicat上远程连接已启动的mysql,错误截图: 原因:mysql 8.0 默认使用 caching_sha2_password 身份验证机制:客户端不支持新的加密方式. 解决方案: 修改用户(root)的加密方式 步骤: 1.进入mysql容器内部 [[email protected] ~]# docker exec -it mysql01 bash 进入之后输入如下命令: [email protected]:/# mysql

[转]docker 部署 mysql + phpmyadmin 3种方法

本文转自:https://blog.csdn.net/Gekkoou/article/details/80897309 方法1: link # 创建容器 test-mysql (千万别用 mysql:latest, 会哭)# docker run --name test-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS

Docker部署Mysql

简介 MySQL 是开源的关系数据库实现. Docker官方仓库提供了 MySQL 各个版本的镜像 https://hub.docker.com/_/mysql . 使用方法 默认内部端口为 3306 : sudo docker run -P --name mysql8.0 -v ~/mysql/conf:/etc/mysql/conf.d -v ~/mysql/logs:/logs -v ~/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=ro

docker docker-compose部署mysql和redis

一 docker部署mysql和redis 1. docker 安装mysql docker run -p 3306:3306 --name mysql --env MYSQL_ROOT_PASSWORD=123zxc -d mysql:5.7 # 停止容器服务命令 docker stop mysql 2. docker 安装redis docker run -d --name myredis -p 6379:6379 redis --requirepass "mypassword"