mysql data目录 清空_MySQL多实例启动失败,重新初始化数据库要把目录里的文件删除干净...

在配置MySQL多实例时遇到启动失败的问题,通过查看错误日志,发现是data目录中文件导致的问题。在尝试了各种解决方案无效后,最终通过清空data目录并重新初始化数据库解决了问题。删除包括ibdata1在内的所有文件,然后使用mysql_install_db命令重新创建系统表和帮助表,成功启动了MySQL实例。
摘要由CSDN通过智能技术生成

事情发生在5日,视频“L10-008-lamp环境之MySQL多实例安装配置指南”看到第2857秒的时候。

在视频里,oldboy故意让多实例启动没有成功,并进行处理。但我在按照视频里的操作步骤执行时,却出现问题。授权、删除文件之后,重新初始化数据库文件,在启动显示正常的情况下,“netstat”命令却没有显示启动成功。于是,我又一次陷入解决问题的漫长过程。

先是根据错误日志,去百度查资料:[root@Web 3306]# tail mysql_oldboy3306.err

InnoDB: Setting log file ./ib_logfile2 size to 4 MB

InnoDB: Database physically writes the file full: wait...

InnoDB: Doublewrite buffer not found: creating new

InnoDB: Doublewrite buffer created

InnoDB: Creating foreign key constraint system tables

InnoDB: Foreign key constraint system tables created

140605 16:37:06  InnoDB: Started; log sequence number 0 0

/usr/local/mysql/libexec/mysqld: Error writing file '/data/3306/slow.log' (Errcode: 28)

:

:

[root@Web 3306]# tail /data/3307/mysql_oldboy3307.err

InnoDB: Some operating system error numbers are described at

InnoDB: http://dev.mysql.com/doc/refman/5.1/en/operating-system-error-codes.html

InnoDB: Error in creating ./ibdata1: probably out of disk space

140605 16:37:05 [ERROR] Plugin 'InnoDB' init function returned error.

140605 16:37:05 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

/usr/local/mysql/libexec/mysqld: Error writing file '/data/3307/slow.log' (Errcode: 28)

140605 16:37:06 [ERROR] Unknown/unsupported table type: InnoDB

140605 16:37:06 [ERROR] Aborting

140605 16:37:06 mysqld_safe mysqld from pid file /data/3307/mysqld.pid ended

但是,根据日志里信息,在百度上找到的信息没有一点有用的。当然,上面的信息也不过是一小部分。

在想办法的过程中,我曾经多次只保留目录里的2个文件:[root@Web 3306]# ll

total 5

drwxr-xr-x 4 mysql mysql 1024 Jun  5 20:30 data

-rw-r--r-- 1 mysql mysql 1887 Apr 12  2012 my.cnf

-rwx------ 1 mysql mysql 1053 Apr 12  2012 mysql

但就是没有敢删除data目录里的mysql子目录里的文件,因为mysql目录里面的文件都是初始化数据库产生的文件。

在我针对一些方法反复尝试都失败(其实都是一些无用功),又到山穷水尽的时候,我开始越看mysql目录里的文件越不顺眼。因为问题拖了3、4个小时,但在我反复初始化数据库3次之后,mysql目录里的文件还是我第1次初始化的时间戳。

我就感觉有点不对劲。

抱着彻底没招,如果还不行就去oldboy QQ群里提问的想法,我决心把data/mysql里面的所有文件也全部删除。大不了,就重新安装数据库。

奇迹,就这样出现了。

下面是3307实例的解决步骤:[root@Web 3306]# cd ../3307

[root@Web 3307]# ll

total 8

drwxr-xr-x 4 mysql mysql 1024 Jun  5 20:41 data

-rw-r--r-- 1 mysql mysql 1888 Apr 12  2012 my.cnf

-rwx------ 1 mysql mysql 1038 Apr 12  2012 mysql

-rw-rw---- 1 mysql mysql 1738 Jun  5 20:41 mysql_oldboy3307.err

-rw-rw---- 1 mysql mysql  185 Jun  5 20:41 slow.log

[root@Web 3307]# rm -rf slow.log mysql_oldboy3307.err

[root@Web 3307]# ll

total 5

drwxr-xr-x 4 mysql mysql 1024 Jun  5 20:41 data

-rw-r--r-- 1 mysql mysql 1888 Apr 12  2012 my.cnf

-rwx------ 1 mysql mysql 1038 Apr 12  2012 mysql

[root@Web 3307]# cd data/

[root@Web data]# ll

total 33106

-rw-rw---- 1 mysql mysql 33763328 Jun  5 16:52 ibdata1

drwx------ 2 mysql mysql     3072 Jun  5 16:51 mysql

drwx------ 2 mysql mysql     1024 Jun  5 16:51 test

[root@Web data]# rm -rf *

[root@Web data]# cd ..

现在,只有2个文件(my.cnf和mysql)和1个空目录(data)。这样,才是正确的。[root@Web 3307]# mysql_install_db --datadir=/data/3307/data --user=mysql

Installing MySQL system tables...

140605 21:21:50 [Warning] '--default-character-set' is deprecated and will be removed in a future release. Please use '--character-set-server' instead.

140605 21:21:50 [Warning] '--skip-locking' is deprecated and will be removed in a future release. Please use '--skip-external-locking' instead.

OK

Filling help tables...

140605 21:21:50 [Warning] '--default-character-set' is deprecated and will be removed in a future release. Please use '--character-set-server' instead.

140605 21:21:50 [Warning] '--skip-locking' is deprecated and will be removed in a future release. Please use '--skip-external-locking' instead.

OK

To start mysqld at boot time you have to copy

support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !

To do so, start the server, then issue the following commands:

/usr/local/mysql/bin/mysqladmin -u root password 'new-password'

/usr/local/mysql/bin/mysqladmin -u root -h Web password 'new-password'

Alternatively you can run:

/usr/local/mysql/bin/mysql_secure_installation

which will also give you the option of removing the test

databases and anonymous user created by default.  This is

strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:

cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl

cd /usr/local/mysql/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/local/mysql/bin/mysqlbug script!

启动MySQL实例:[root@Web 3307]# /data/3307/mysql start

Starting MySQL...

[root@Web 3307]# netstat -lnt

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State

tcp        0      0 0.0.0.0:2049                0.0.0.0:*                   LISTEN

tcp        0      0 0.0.0.0:963                 0.0.0.0:*                   LISTEN

tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN

tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN

tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN

tcp        0      0 0.0.0.0:51925               0.0.0.0:*                   LISTEN

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN

tcp        0      0 0.0.0.0:23                  0.0.0.0:*                   LISTEN

tcp        0      0 0.0.0.0:927                 0.0.0.0:*                   LISTEN

问题解决后我才想起来要回看视频里oldboy这部分处理问题的讲解,发现他说的都没有问题。只是他删除data目录里的所有文件,都是很快的过程。现在想来,即使当时反复看,也不见得能发现这个对我而言,非常关键的地方。

还是自己的老问题,总是抓不住重点。在一些非重点的地方,浪费太多的精力。

在视频的这部分讲解里:oldboy发现无法启动实例后,先后进行重新授权、删除data目录里的所有文件、重新初始化数据库(加上参数“--user=mysql”)的操作(前后顺序我已经记不清了)。当时,考虑到整理文档,我实在是无法确认这3步操作那1步是对启动实例成功有效的。

最近几次在遇到故障报错后的处理,我发现错误日志基本没有对我带来帮助。特别是这一次!在百度上搜索相关错误信息,一次次把我带到歧途,令我一次次走向崩溃。

当然,这里只是表达一下对自己的不满。说起来,可能还是自己功夫不到家吧。

下面的2个日志文件信息,对我就完全没有帮助。[root@Web ~]# tail -20 /data/3306/mysql_oldboy3306.err

140605 20:26:08 mysqld_safe Starting mysqld daemon with databases from /data/3306/data

140605 20:26:08 [Warning] '--log-long-format' is deprecated and will be removed in a future release. Please use '--log-short-format' instead.

140605 20:26:08 [Warning] '--log_slow_queries' is deprecated and will be removed in a future release. Please use ''--slow_query_log'/'--slow_query_log_file'' instead.

140605 20:26:08 [Warning] --myisam_max_extra_sort_file_size is deprecated and does nothing in this version.  It will be removed in a future release.

140605 20:26:08  InnoDB: Initializing buffer pool, size = 32.0M

140605 20:26:08  InnoDB: Completed initialization of buffer pool

InnoDB: No valid checkpoint found.

InnoDB: If this error appears when you are creating an InnoDB database,

InnoDB: the problem may be that during an earlier attempt you managed

InnoDB: to create the InnoDB data files, but log file creation failed.

InnoDB: If that is the case, please refer to

InnoDB: http://dev.mysql.com/doc/refman/5.1/en/error-creating-innodb.html

140605 20:26:08 [ERROR] Plugin 'InnoDB' init function returned error.

140605 20:26:08 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

140605 20:26:08 [ERROR] Unknown/unsupported table type: InnoDB

140605 20:26:08 [ERROR] Aborting

140605 20:26:08 [Note] /usr/local/mysql/libexec/mysqld: Shutdown complete

140605 20:26:08 mysqld_safe mysqld from pid file /data/3306/mysqld.pid ended

[root@Web 3307]# tail -20 mysql_oldboy3307.err

140605 20:41:14  InnoDB: Initializing buffer pool, size = 32.0M

140605 20:41:14  InnoDB: Completed initialization of buffer pool

InnoDB: Error: auto-extending data file ./ibdata1 is of a different size

InnoDB: 2048 pages (rounded down to MB) than specified in the .cnf file:

InnoDB: initial 8192 pages, max 0 (relevant if non-zero) pages!

InnoDB: Could not open or create data files.

InnoDB: If you tried to add new data files, and it failed here,

InnoDB: you should now edit innodb_data_file_path in my.cnf back

InnoDB: to what it was, and remove the new ibdata files InnoDB created

InnoDB: in this failed attempt. InnoDB only wrote those files full of

InnoDB: zeros, but did not yet use them in any way. But be careful: do not

InnoDB: remove old data files which contain your precious data!

140605 20:41:14 [ERROR] Plugin 'InnoDB' init function returned error.

140605 20:41:14 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

140605 20:41:14 [ERROR] Unknown/unsupported table type: InnoDB

140605 20:41:14 [ERROR] Aborting

140605 20:41:14 [Note] /usr/local/mysql/libexec/mysqld: Shutdown complete

140605 20:41:14 mysqld_safe mysqld from pid file /data/3307/mysqld.pid ended

也可能是最近这段时间,google始终连不上的原因。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值