背景故事
Ubuntu死了(不会启动),我无法修复它。 我启动了一个现场光盘恢复重要的东西,并将其保存到我的NAS。 我备份的其中一个是/ var / lib / mysql。
重新安装了Linux Mint,因为我在Ubuntu 10.0.4上,这是尝试一个新的发行版(我不喜欢Unity)的好机会。 现在我想恢复旧的mediawiki,所以我closures了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)
我试图login到MySQL,我可以列出应该在那里的表,但试图describe或select他们的错误出来的转储相同的方式:
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>表不存在。 但它确实(或应该) 。
迈克·达克(Mike Dacre )的答案解决了我的问题。 问题是ib_logfile0和ib_logfile1(也可能是mysql / root目录中的其他一些ib *文件)与我的新安装的mysql不一致。 你不能只放在旧的MySQL /目录的数据库文件,并期望它的工作。
我所做的恢复数据库是在全新的安装中备份我当前的/ 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 /以供参考)。 这可能会有更高效的命令,但我包括我所知道的完整性,以防经验较less的人可能需要它。
$ 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 。
你可以试试:
/var/db/mysql ,或者是你的特定安装/发行版放在哪里。 mysqlcheck --repair 。 myisamchk 。