环境说明:
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的启动与关闭命令详解 在Linux系统中,特别是CentOS发行版中,MySQL作为一款广泛使用的开源数据库管理系统,在服务器应用中扮演着重要的角色。本文将详细介绍CentOS环境下MySQL服务的启动与关闭...
在CentOS7环境下,对MySQL的小版本升级是一个关键的维护任务,以确保数据库系统的稳定性和安全性。本文将详细阐述如何从MySQL 5.7.26升级到5.7.31,这是一个典型的二进制文件替换升级方法。以下是具体的步骤: 一、...
### CentOS 7 搭建 MySQL 集群详解 #### 一、概述 随着业务规模的扩大,单一数据库服务器往往难以满足高并发、大数据量的需求。为了提高系统的可用性和性能,采用 MySQL 集群成为一种常见的解决方案。本文将详细...
CentOS 7 安装 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-...
这篇博客文章“CentOS7中将Mysql添加为系统服务”介绍了如何手动将自安装的MySQL服务添加到`systemd`中,以便进行自动化管理和维护。 首先,如果你是通过源码包自行安装的MySQL,那么默认情况下,MySQL不会自动添加...
在本教程中,我们将深入探讨如何在CentOS7操作系统上安装MySQL 5.7.19并设置主从复制配置。MySQL的主从复制是一种常用的技术,它允许数据从一个服务器(主服务器)同步到另一个服务器(从服务器),从而实现数据备份...
对于Linux系统,尤其是CentOS 7这样的企业级发行版,MySQL的安装和管理至关重要。本文将详细讲解如何在CentOS 7上离线进行MySQL8的一键自动安装。 首先,离线安装意味着我们需要提前下载MySQL8的安装包,并通过本地...
centos7.0安装mysql centos7.0安装mysql centos7.0安装mysql
总结,安装配置MySQL 5.7在CentOS 7上是一个多步骤的过程,包括安装依赖、启动服务、安全配置、远程访问权限设定、日志与性能调整以及数据管理。理解并熟练掌握这些步骤对于管理Linux服务器上的数据库至关重要。在...
在CentOS操作系统中,安装MySQL服务器需要经过一系列的步骤,包括下载、编译、安装、初始化数据库、注册服务、启动服务等。本文将详细介绍CentOS下MySQL的安装过程。 下载MySQL源代码 首先,需要下载MySQL的源代码...
本文详细介绍了在CentOS环境下安装MySQL 5.7的过程,包括创建MySQL用户、安装MySQL软件包、初始化MySQL、修改配置文件、启动服务、管理用户与权限等多个步骤。通过这些步骤,您可以顺利地在CentOS上部署并运行MySQL...
在本地虚拟机的场合,需要更换yum安装网络地址配置文件CentOS-Base.repo 从阿里云服务器下载一份CentOS-Base.repo文件存到本地
在Linux系统中,CentOS 7是一个非常流行的服务器操作系统,而MySQL 5.6则是一个广泛应用的关系型数据库管理系统。在没有网络的情况下,离线安装MySQL是必要的,这通常涉及到RPM包的处理。本篇文章将详细讲解如何在...
在Linux系统中,CentOS 7是最常用的发行版之一,而MySQL是世界上最流行的开源关系型数据库管理系统。本文将详细介绍如何在CentOS 7上安装MySQL 5.7,基于提供的安装包进行操作。 首先,我们需要了解MySQL的组件结构...
首先,我们从【标题】入手,"CentOS7下MySQL8的主主互备安装文档"意味着我们将学习在CentOS7这个Linux发行版上安装MySQL 8.0数据库服务器,并设置主主复制(也称为主备同步),使得两个或多个MySQL实例可以相互备份...
在 CentOS 7 系统中,配置启动顺序是非常重要的,因为它决定了系统开机时选择加载哪个内核版本。在多系统或内核更新后,确保设置正确的启动顺序有助于避免不必要的开机问题。下面我们将详细讨论如何在 CentOS 7 中...
本话题将详述在CentOS7操作系统上安装MySQL 5.7.17以及使用jemalloc进行内存优化的过程,这对于提升MySQL性能具有显著作用。 首先,让我们了解MySQL 5.7.17。这是MySQL数据库管理系统的一个版本,它在5.7系列中引入...
在Linux系统中,CentOS 7是一个广泛应用的服务器操作系统,对于系统管理员来说,配置开机自启动脚本是一项基本任务,可以确保系统启动时自动运行特定的服务或程序。这里我们将详细探讨如何在CentOS 7中设置开机自...
centos 6.5下安装配置mysql,以及mysql的安全管理和账户管理