linux – 恢复mysql数据库 – mysqlmysqldump给出“表.不存在(1146)“

linux – 恢复mysql数据库 – mysqlmysqldump给出“表.不存在(1146)“,第1张

概述背景故事 Ubuntu死了(不会启动),我无法解决它.我启动了一张live cd以恢复重要的东西并将其保存到我的NAS中.我备份的一件事是/ var / lib / mysql. 重新安装了Linux Mint,因为我在Ubuntu 10.0.4上这是一个尝试新发行版(我不喜欢Unity)的好机会.现在我想恢复我的旧mediawiki,所以我关闭mysql守护进程,cp -R / media / 背景故事

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起来.

问题

现在我正在尝试export the database,所以我可以restore the database,但是当我执行MysqLdump时,我收到一个错误:

$MysqLdump -u mediawikiuser -p mediawiki-1_19_1 -c | gzip -9 > wiki.2012-11-15.sql.gzEnter 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,我可以列出应该存在的表,但尝试描述或从转发中选择错误的方式与转储相同:

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和二进制数据安装的.

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

解决方法 找到有人问类似的问题: MySQL > Table doesn’t exist. But it does (or it should).

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也正常运行.剩下的就是遵循Restoring a wiki from backup指南.

总结

以上是内存溢出为你收集整理的linux – 恢复mysql数据库 – mysql / mysqldump给出“表.不存在(1146)“全部内容,希望文章能够帮你解决linux – 恢复mysql数据库 – mysql / mysqldump给出“表.不存在(1146)“所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/1038137.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存