admin 管理员组文章数量: 1086019
2024年3月22日发(作者:eva零)
责任编辑:赵志远 投稿信箱:
netadmin@
故障诊断与处理
Trouble Shooting
MariaDB数据库不运行故障
■ 江西 黎忠东
笔者通过
moodle网络课
程平台,在课程
中添加资源时突
然变得很慢,浏
编者按: 笔者有一个FreeBSD+Nginx+MariaDB+PHP环
境下的moodle网络课程平台,在近期出现了不能登录并
且提示“数据库连接失败”的故障,本文详细介绍了查找
数据库连接失败的原因以及解决问题的对策,以期对解
决“数据库连接失败”故障及配置MariaDB数据库有所
过程,注意本
moodle课程平
台的操作系统
是FreeBSD,
数据库是
览器总是在转,
帮助。
而且等待很长时
间也是这样,课程不能正常
工作。
根据笔者经验,重启服
务器应该能够解决。但重
启服务器后不仅没有解决
问题,反而不能登录moodle
课程了,并且出现“Error:
Database connection
failed,It is possible
that the database is
overloaded or otherwise
not running properly.
The site administrator
should also check that
the database details
have been correctly
specified in ”
的提示。
该提示说明,moodle课
程的数据连接失败。
根据提示:一种原因可
能是数据库超载;二可能是
数据库无法正常运行;三可
能是课程中数
据库信息不正确。
第一个原因不应该,因
为刚重启了服务器,没有什
么用户,不应该超载。
第三个原因也不应该,
因为配置的是
数据库连接用户名、密码等
相关信息,课程平台一直正
常运行,也未修改过config.
php配置。
最有可能的是第二个原
因就是数据库无法正常运
行。
既然最有可能的原因是
数据库无法正常运行,所以
首先要确认数据库是否正常
运行,找到没有正常运行的
问题所在,然后根据问题采
取相应的对策。
下面介绍故障解决的
MariaDB。
确认数据库是否正常启动
1.输入“MySQL”看能否
登录数据库,提示不能连接
到本地数据库。
2.输入“service
mysql-server status”命
令查看数据库当前状态,显
示数据库没有运行:“mysql
is not running.”。
3.输入“service
mysql-server start”命令
启动数据库,系统提示正在
启动,由于没有数据库是否
已经正常启动的提示,因此
再次用“service mysql-
server status”查看数据
库当前状态,本案例显示数
据库仍然没有运行。
查找数据库不能运行的原因
数据库不能运行的原因
是多种多样的,数据库错误
2019.04
151
Trouble Shooting
故障诊断与处理
责任编辑:赵志远 投稿信箱:
netadmin@
日志文件会记录一些数据库
服务器运行期间发生的严重
错误,查看日志文件往往会
找到问题的原因。
1.查找数据库的日志,
看能否找到原因。
Mariadb数据库日志有
错误日志、通用查询日志、慢
查询日志和二进制日志,其
中错误日志包含数据库服务
器运行过程中所有较为严重
的警告和错误信息,数据表
损坏的情况,以及每一次启
动和关闭的详细信息。
在默认情况下,系统错
误日志的功能是开启的,错
误日志的默认存放位置是在
数据目录下,以“hostname.
err”命名,但也可以使用
“log-error[=file_name]”
命令修改其存放目录和文件
名。
由于本案例为默认设
置,所以用“locate .err”
查找错误日志的存放路径为
/var/db/mysql,文件名称为
“”。
2.打开错
误日志,查找错误信息。
为了获取错误信息,
使用命令“sudo service
mysql-server start”启
动数据库,使用命令“sudo
nano ”打开错
误日志,发现有如下几条:
2019-02-14 12:16:59
34424840192 [ERROR]
InnoDB: preallocating
12582912 bytes for file
./ibtmp1 failed with
error 28
2019-02-14 12:16:59
34424840192 [ERROR]
InnoDB: Could not set
the file size of './
ibtmp1'. Probably out of
disk space
2019-02-14 12:16:59
34424840192 [ERROR]
InnoDB: Unable to create
the shared innodb_
temporary
以上信息显示,可能由
于数据所在磁盘空间不足而
未能创建12MB的innodb_
temporary临时文件,这就
说明/var/db/mysql所在的
磁盘空间很有可能不够。
3.用命令df查看分区/
var的容量为10G,但已全部
用完,显然是由于空间不足,
造成数据库不能运行。
4.用“du –h /var”看
看/var文件占用情况,发
现/var/db/mysql文件占
用了7.9G,主要是一些诸如
mysql-bin.000003等类型
的二进制日志文件。
至此,已经找到了数据
库不运行的原因,就是随着
系统使用时间的增加,数据
库二进制日志文件也不断增
加,最终充满磁盘,造成了数
据库因磁盘空间不足而不能
运行。
怎么腾出磁盘空间
二进制日志包含数据库
所有更改的记录,包括数据
152
2019.04
责任编辑:赵志远 投稿信箱:
netadmin@
故障诊断与处理
Trouble Shooting
和结构,以及每个语句执行
的时间。它由一组二进制日
志文件和索引组成,主要用
于主从服务器数据库复制以
及辅助备份操作。
磁盘空间不足可以重新
调整磁盘分区,但这种方式
最终还是会由于日志文件的
积累而耗尽空间。
因此可以删除部分日志
文件,以启动数据库服务,同
时还必须要找到解决日志因
时间的增长而耗尽空间的解
决方法。
但是不能简单地直接删
除mysql-bin二制文件,因
为它还包括了索引。因此需
要登录数据库服务器,可以
使用命令“reset master”
删除所有二进制日志,或者
使用“purge binary to” 命
令删除部分日志,以腾出空
间。
但现在数据库是不能运
行的,无法使用上面的方法,
只能在不登录数据库的情况
下,用cat命令清空二进制
日志。
1.在本例中先清空1G
的mysql-bin.000003日志
文件,为了安全起见,在清空
日志之前先应当备份日志文
件。
2.因日志文件的权限所
有者为MySQL,用“ls –lh”
查看mysql-bin.000003权
限为“660”,其他用户没有
写入权限,因此使用“chmod
667 mysql-bin.000003”命
令更改权限后,再使用“sudo
cat /dev/null > mysql-
bin.000003”命令清空,最终
mysql-bin.000003的容量
为0B。
3.清空mysql-
不足而导致数据库不运行的
故障。
因此登录数据库,使用
命令“purge binary logs
to 'mysql-bin.000015'”
删除15号日志之前的所有
日志,并使用“set global
expire_logs_days=30”命
令让系统自动删除30天前
的日志。
经验教训
本故障的出现就是由于
数据库日志为默认配置,二
进制日志文件随时间而增
加,最终占满磁盘空间,导致
数据库因磁盘空间不足而不
能运行。
因此,我们应该根据实
际情况选择关闭二进制日
志,或设置自动删除多少天
的日志,以防止类似故障的
出现。
bin.000003日志文件后,/
var分区约有1G空闲空间,
启动数据库后显示正常,再
次登录moodle课程,终于显
示正常。
4.虽然现在数据库能正
常运行,但还有大量不再使
用的日志仍占用着磁盘空
间,如果故障处理至此结束
的话,在一段时间后又会出
现因日志过多造成磁盘空间
2019.04
153
版权声明:本文标题:MariaDB数据库不运行故障 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1711045357a585680.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论