教程集 www.jiaochengji.com
教程集 >  数据库  >  mysql  >  正文 解决Centos系统中mysql无法启动问题

解决Centos系统中mysql无法启动问题

发布时间:2023-04-29   编辑:jiaochengji.com
教程集为您提供解决Centos系统中mysql无法启动问题等资源,欢迎您收藏本站,我们将为您提供最新的解决Centos系统中mysql无法启动问题资源
mysql无法启动问题我们可以用千万种原因导致了,所以不同的原因可能解决 办法也是不一样了,下面来看一篇解决Centos系统中mysql无法启动问题的方法,具体如下所示。

今天一来公司,开发人员就对我说mysql无法启动起来了,一问才知道他对测试服务器上的服务都执行了重启,当时心里那个气啊,想给他124,你说你要重启服务也要问问我啊,现在整出问题来了,就知道来找我了.气归气,问题还是要解决.先检查了下服务器的磁盘空间,发现没有满,再检查了下mysql配置,也没有问题,最后看了下mysql日志,才终于找到问题,如图

  原来是有个表有问题,找到开发问了下,这个表是他才备份的,还不能删,服务器上的数据是今天最新的,还没有备份,真是日个狗了,好吧,那只能根据日志里的提示先修改innodb_force_recovery了.
  ps:

  innodb_force_recovery影响整个InnoDB存储引擎的恢复状况.默认为0,表示当需要恢复时执行所有的恢复操作.当不能进行有效的恢复操作时,mysql有可能无法启动,并记录下错误日志.innodb_force_recovery可以设置为1-6,大的数字包含前面所有数字的影响.当设置参数值大于0后,可以对表进行select,create,drop操作,但insert,update或者delete这类操作是不允许的.

  1(SRV_FORCE_IGNORE_CORRUPT):忽略检查到的corrupt页.
  2(SRV_FORCE_NO_BACKGROUND):阻止主线程的运行,如主线程需要执行full purge操作,会导致crash.
  3(SRV_FORCE_NO_TRX_UNDO):不执行事务回滚操作.
  4(SRV_FORCE_NO_IBUF_MERGE):不执行插入缓冲的合并操作.
  5(SRV_FORCE_NO_UNDO_LOG_SCAN):不查看重做日志,InnoDB存储引擎会将未提交的事务视为已提交.
  6(SRV_FORCE_NO_LOG_REDO):不执行前滚的操作.

操作如下:

在my.cnf中添加了以下两个参数:
innodb_force_recovery=6
innodb_purge_thread=0

然后重启mysql
service mysqld restart

重启好了之后,立即对数据库做逻辑导出,然后将innodb_force_recovery设置为0,innodb_purge_thread=1,重建数据库.这样mysql的问题就解决了,最后把mysql的定时备份也改成早上备一次和晚上备一次了.

问题二,CentOS上不能启动MySQL的问题解决办法

1. /etc/my.cnf的默认配置

配置文件的内容如下:

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

# Default to using old password format for compatibility with mysql 3.x

# clients (those using the mysqlclient10 compatibility package).

old_passwords=1

[mysql.server]

user=mysql

basedir=/var/lib

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

 

由于项目需要需要修改datadir的值,如下

datadir=/usr/local/project/etc/data

 

在CentOS中启动MySQL:

[wzhwho@local~]#service mysqld start

Starting mysqld daemon  [FAILED]

 

2. 先看错误日志

采用rpm安装的MySQL日志文件的默认路径是/var/log/mysqld.log

mysqld started

InnoDB: Operating system error number 13 in a file operation.

InnoDB: The error means mysqld does not have the access rights to

InnoDB: the directory.

InnoDB: File name /usr/local/project/etc/data/ibdata1

InnoDB: File operation call: 'create'.

InnoDB: Cannot continue operation.

mysqld ended

 

从日志可以知道,mysql的数据文件目录没有权限,所以我需要按照/var/lib/mysql目录的权限给/usr/local/project/etc/data目录设置权限和属主。

[wzhwho@local~]#ll /var/lib

drwxr-x-r-x 1        mysql         mysql  4  Apr 11 2009    mysql

[wzhwho@local~]#ll /var/lib

[wzhwho@local~]chown -R mysql:mysql /usr/local/project/etc/data

[wzhwho@local~]chmod -R 755 /usr/local/project/etc/data

[wzhwho@local~]#ll  /usr/local/project/etc

drwxr-x-r-x 1        mysql         mysql  4  Apr 11 2009    data

接着我又启动了MySQL,但是还是失败,日志信息还是一样。

 

3. 修改配置文件/etc/selinux/config

最后,我在外国友人的邮件来往中查到这样的回复:

If you are using SE linux, set it to permissive mode by editing /etc/selinux/config

and changing

SELINUX=enforcing to SELINUX=permissive

This solved all of my problems with the

"Operating system error number 13 in a file operation" error

 

所以,最后确定为selinux的问题,输入命令ls -Z,你会发现在文件或文件夹上面打的标签。如果一个文件是在selinux打开的时候创建的,那么即使你关闭selinux,它的权限控制还是会起作用的。可以通过chcon来改变权限。

 

4. MySQL成功启动

[wzhwho@local~]#service mysqld start

Starting mysqld daemon  [OK]

您可能感兴趣的文章:
centos mysql不能随主机启动怎么办
mysql启动错误报1067错误怎么解决
CentOS 6.2 源码安装MySQL5.5.11
mysql 报错:MYSQL:The server quit without updating PID file
mysql中1067错误及其它的解决方法集合
MySQL启动错误Starting MySQL.Manager of pid-file quit without updating file.[FAILED]
让centos6.2支持NTFS分区的方法
新编译的MySQL无法通过service启动的解决方法
CentOS 6.2 RPM安装MySQL5.0.16的方法介绍
删除注册表键值导致系统无法正常启动提示错误恢复

[关闭]
~ ~