恢复mysql数据库 - mysql / mysqldump给出“table 。不存在(1146)”

Modified on: Sat, 21 Sep 2019 21:00:02 +0800

背景故事强>

Ubuntu死了(不会启动),我无法解决它。我启动了一张live cd以恢复重要的东西并将其保存到我的NAS中。我备份的其中一件事是/ var / lib / mysql。

重新安装了Linux Mint,因为我在Ubuntu 10.0.4上这是一个尝试新发行版的好机会(我不喜欢Unity)。现在我想恢复我的旧mediawiki,所以我关闭了mysql守护进程,cp -R /media/NAS/Backup/mysql/mediawiki@002d1_19_1 /var/lib/mysql/,设置文件所有权和权限正确,并启动mysql备份。

问题强>

现在我正在尝试导出数据库,这样我就可以恢复数据库,但是当我执行mysqldump时出现错误:

$ mysqldump -u mediawikiuser -p mediawiki-1_19_1 -c | gzip -9 > wiki.2012-11-15.sql.gz
Enter password:
mysqldump: Got error: 1146: Table 'mediawiki-1_19_1.archive' doesn't exist when using LOCK TABLES

我尝试过的事情

我尝试使用--skip-lock-tables,但我明白了:

Error: Couldn't read status information for table archive ()
mysqldump: Couldn't execute 'show create table `archive`': Table 'mediawiki-1_19_1.archive' doesn't exist (1146)

我尝试登录到mysql并且我可以列出应该存在的表,但是尝试describeselect会出现与转储相同的错误:

mysql> show tables; +----------------------------+ | Tables_in_mediawiki-1_19_1 | +----------------------------+ | archive | | category | | categorylinks | ... | user_properties | | valid_tag | | watchlist | +----------------------------+ 49 rows in set (0.00 sec) mysql> describe archive; ERROR 1146 (42S02): Table 'mediawiki-1_19_1.archive' doesn't exist

我相信mediawiki是使用innodb和二进制数据安装的。

我搞砸了还是有办法恢复这个?

作者:,Matthew

最佳答案

发现有人问类似问题:MySQL&gt ;表不存在。但它确实(或它应该)

Mike Dacre得到的答案解决了我的问题。问题是ib_logfile0和ib_logfile1(以及mysql / root目录中的其他一些ib *文件)与我新安装的mysql不一致。您不能只从旧的mysql /目录中删除db文件并期望它能够正常工作。

我恢复数据库所做的是在全新安装上备份我当前的/ var / lib / mysql /:

$ sudo service mysql stop # Stop mysql. Command could be different on different distros
$ sudo mv /var/lib/mysql ~/mysql.bku

然后将紧急备份目录复制到/ var / lib

$ sudo cp -R /media/NAS/Backup/mysql /var/lib/

然后适当地设置权限(如果需要,请参阅〜/ mysql.bku /以供参考)。可能有更有效的命令,但我包括我所知道的完整性,以防有经验不足的人可能需要它。

$ sudo chown -R mysql:mysql /var/lib/mysql
$ sudo find /var/lib/mysql/ -type d -exec chmod 700 {} \;
$ sudo find /var/lib/mysql/ -type f -exec chmod 660 {} \;
$ sudo chmod 644 /var/lib/mysql/debian-5.1.flag # Not sure what this is but the permissions were a bit different so include it just in case

再次启动mysql

$ sudo service mysql start # Again command might be different on different distros

然后我备份了我需要的数据库:

$ mysqldump -u root -p mediawiki-1_19_1 -c | gzip -9 > wiki.2012-11-15.sql.gz

当我完成后,我将mysql /目录放回原处,然后从转储文件中导入数据库。

$ sudo service mysql stop
$ sudo mv /var/lib/mysql ~/mysql-discard # Too nervous to start typing "sudo rm -r /" for /var/lib/mysql, so move it away instead
$ sudo mv ~/mysql.bku /var/lib/mysql
$ sudo service mysql start

问题解决了,我现在正确导出数据库,mysql也正常运行。剩下的就是关注从备份中恢复wiki指南。

作者:Community,Matthew

相关问答

添加新评论