linux – 恢复mysql数据库 – mysql / mysqldump给出“表.不存在
背景故事
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.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,我可以列出应该存在的表,但尝试描述或从转发中选择错误的方式与转储相同: 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指南. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |