バックストーリー
Ubuntuが停止し(起動しません)、修正できませんでした。ライブCDを起動して重要なものを復元し、NASに保存しました。私がバックアップしたものの1つは/ var/lib/mysqlでした。
Ubuntu 10.0.4を使用していたため、Linux Mintを再インストールしました。これは、新しいディストリビューションを試す良い機会でした(Unityは好きではありません)。古いメディアウィキを回復したいので、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にログインしてみて、そこにあるはずのテーブルを一覧表示できますが、それらから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 /ルートディレクトリにある他の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をバックアップから復元する ガイドに従ってください。
あなたが試すことができます:
/var/db/mysql
、または特定のインストール/ディストリビューションが配置する場所に存在することを確認します。mysqlcheck --repair
を使用します。myisamchk
を実行します。