环境说明:
CentOS Linux release 7.3.1611 (Core) 64位
mysql Ver 14.14 Distrib 5.7.19
现象:
安装完 Wordpress 及 DB 后,在 Wordpress 中删除了默认的文章,之后就突然莫名其妙的提示无法连接DB。(之前也可能做过了一些其它 DB 操作及修改,有点儿记不清了)
原因调查:
首先发现的是,不知道为什么,MySQL 被停止了,并且提示如下错误:
# systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: failed (Result: start-limit) since 五 2017-10-20 09:13:16 CST; 633ms ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 10382 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=1/FAILURE)
Process: 10365 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
10月 20 09:13:16 67-216-220-130 systemd[1]: Failed to start MySQL Server.
10月 20 09:13:16 67-216-220-130 systemd[1]: Unit mysqld.service entered failed state.
10月 20 09:13:16 67-216-220-130 systemd[1]: mysqld.service failed.
10月 20 09:13:16 67-216-220-130 systemd[1]: mysqld.service holdoff time over, scheduling restart.
10月 20 09:13:16 67-216-220-130 systemd[1]: start request repeated too quickly for mysqld.service
10月 20 09:13:16 67-216-220-130 systemd[1]: Failed to start MySQL Server.
10月 20 09:13:16 67-216-220-130 systemd[1]: Unit mysqld.service entered failed state.
10月 20 09:13:16 67-216-220-130 systemd[1]: mysqld.service failed.
之后查看 MySQL 日志:
# tail -n 100 /var/log/mysqld.log
......
2017-10-20T01:09:48.647161Z 0 [Note] InnoDB: Buffer pool(s) load completed at 171020 9:09:48
2017-10-20T01:09:48.647236Z 0 [Note] InnoDB: Starting shutdown...
2017-10-20T01:09:48.747574Z 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
2017-10-20T01:09:48.747891Z 0 [ERROR] InnoDB: Cannot open '/var/lib/mysql/ib_buffer_pool.incomplete' for writing: Permission denied
2017-10-20T01:09:50.258312Z 0 [Note] InnoDB: Shutdown completed; log sequence number 4076122
2017-10-20T01:09:50.258371Z 0 [ERROR] InnoDB: Operating system error number 13 in a file operation.
2017-10-20T01:09:50.258378Z 0 [ERROR] InnoDB: The error means mysqld does not have the access rights to the directory.
......
日志显示 '/var/lib/mysql/ib_buffer_pool.incomplete' 没有写权限。看来是权限的问题。于是执行如下命令,查看所有者及目前的权限:
# ls -ld /var/lib/mysql
drwxr-x--x 6 mysql mysql 4096 10月 20 09:17 /var/lib/mysql
看来所有者没有问题,那么尝试为其子目录和文件修改所有者:
# chown mysql:mysql -R /var/lib/mysql
之后,重新启动 MySQL 服务:
# systemctl restart mysqld
MySQL 可以正常启动了。
============================================================
若查看 MySQL Log 提示的错误像下面这样:
# tail -n 100 /var/log/mysqld.log
......
2017-10-20T02:58:09.562816Z 0 [Note] InnoDB: Initializing buffer pool, total size = 96M, instances = 1, chunk size = 96M
2017-10-20T02:58:09.562860Z 0 [ERROR] InnoDB: mmap(103071744 bytes) failed; errno 12
2017-10-20T02:58:09.562867Z 0 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2017-10-20T02:58:09.562872Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2017-10-20T02:58:09.562878Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2017-10-20T02:58:09.562882Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2017-10-20T02:58:09.562886Z 0 [ERROR] Failed to initialize plugins.
2017-10-20T02:58:09.562889Z 0 [ERROR] Aborting
2017-10-20T02:58:09.562907Z 0 [Note] Binlog end
......
说明 MySQL 启动时初始化的缓存大小太大了(也就是说可能是你的 VPS 内在太小了导致的)。默认的缓存大小是 128M,但是我已经改成了 96M 还是报错,说明还是设置的太大了(我的 VPS 只有 512M 内存,但是上面运行了好多的服务,因此可用内存不足)。
因此继续缩小缓存大小:
# vim /etc/my.cnf
修改如下值 innodb_buffer_pool_size = 64M(设置成合适的大小)
之后重新启动 MySQL 就可以了。
分享到:
相关推荐
CentOS MySQL启动和关闭命令
centos7 mysql8 (8.0.27) rpm静态安装包, tar -zxvf mysql8.tar.gz解压后,文件夹里包含mysql8安装的依赖文件,perl rpm文件和mysql rpm文件,直接执行脚本mysql8.sh install安装或者mysql8.sh uninstall卸载,基本...
CentOS 7 安装 MySQL
centos7搭建mysql集群,包含整个搭建步骤,部分错误解决方案
CentOS7环境mysql小版本升级步骤,本文介绍的是替换二进制文件升级方式的升级步骤,步骤展示的是5.7.26升级至5.7.31的升级步骤,操作系统为centos7.4。
本文档是MySQL官方文档,内容是如何在Centos7环境下用yum工具安装MySQL8。
CentOS7安装mysql5.7.19 & mysql5.7.19主从配置(CentOS7)
centos7.0安装mysql centos7.0安装mysql centos7.0安装mysql
arm架构centos7 下mysql8离线安装包 包含: mysql-community-client-8.0.20-1.el7.aarch64.rpm mysql-community-common-8.0.20-1.el7.aarch64.rpm mysql-community-devel-8.0.20-1.el7.aarch64.rpm mysql-community-...
在本地虚拟机的场合,需要更换yum安装网络地址配置文件CentOS-Base.repo 从阿里云服务器下载一份CentOS-Base.repo文件存到本地
CentOS7中将Mysql添加为系统服务 - shangyingbin - 博客园
CentOS安装MySQL5.7,带部分截图
centos7安装配置mysql5.7教程全
centos 6.5下安装配置mysql,以及mysql的安全管理和账户管理
上传centos7安装mysql的文档及软件的安装包以备后续使用
MySQL5.7版本升级操作说明_centos7 MySQL5.7版本升级操作说明_centos7 MySQL5.7版本升级操作说明_centos7
Centos7mysql5.7安装.docx
centos7 mysql登录退出命令大全。
centos 7下的mysql 5.6离线安装包(rpm文件),附readme操作手册,过程详细,亲测可用。
整理的centos下的mysql安装希望能帮到你。