最近hddエラーが発生し、_/var/lib/mysql/griffith
_ファイルのコピーからグリフィス( https://github.com/micjahn/Griffith )データベースを復元しようとしています。私の新しいコンピューターは、より新しいバージョンのMySQLを使用しています。
InnoDBデータベースの回復に関するスレッドをたくさん読んで、多くのテーブルの復元に成功しましたが、メインテーブル(ムービー)の復元に失敗しました。
これが私がすることです:
すべてのテーブルに使用:
_ALTER TABLE mytable DISCARD TABLESPACE;
_
バックアップされたファイルをコピーする
すべてのテーブルに使用:
_ALTER TABLE mytable IMPORT TABLESPACE;
_
movies
テーブルの最後のステップで失敗し、mysqlサーバーが終了します。
分析の結果、元のデータベースがutf8エンコーディングで作成されていることがわかりました(twindbスクリプトはlatin1を使用していました)。しかし、それは問題を修正しません。
また、mysqlの設定を次のように変更しました。
_innodb_force_recovery=6
_
select count(*)
を実行するといくつかの情報が得られますが、realバックアップを作成するためにテーブルをダンプできません。
Mysqlログで、_IMPORT TABLESPACE
_コマンドを実行するとこのエラーが発生します。
_[...many errors and warnings...] [ERROR] InnoDB: Table `mysql`.`innodb_table_stats` not found. [ERROR] InnoDB: Fetch of persistent statistics requested for table `griffith`.`movies` but the required system tables mysql.innodb_table_stats and mysql.innodb_index_stats are not present or have unexpected structure. Using transient stats instead. [ERROR] InnoDB: Trying to access page number 1647523377 in space 238, space name griffith/movies, which is outside the tablespace bounds. Byte offset 0, len 16384, i/o type read. If you get this error at mysqld startup, please check that your my.cnf matches the ibdata files that you have in the MySQL server. [ERROR] InnoDB: Server exits.
_
誰かが私を助けてくれますか?
Movies.ibdのページの1つが破損しているため、読み取れません。
ここには2つのオプションがあります。
1)破損したInnoDBテーブルからMyISAMテーブルに可能な限り多くのレコードをコピーできるスクリプト fetch_data.sh があります。 innodb_force_recovery = 6でMySQLを起動し、同じ構造のMyISAMテーブルを作成し、スクリプトを使用してレコードをコピーします。
2)同じツールキットからc_parser/stream_parserを使用して、movies.ibdからレコードをフェッチします。破損しているため、とにかくインポートできません。
ああ、TwinDBの作者として、もう1つのオプションを提案できます:-)- https://recovery.twindb.com/ を使用して映画を復元しますibd。しかし、それは$$$の費用がかかります。