web-dev-qa-db-ja.com

/ varバックアップからMySQLデータベースを取得する方法はありますか?

Ubuntu 12.10からUbuntu 13.10にアップグレードしました。しばらくして、MySQLデータベースをすべてエクスポートしていないことがわかりました。それらのいくつかは欠落しています。 /var/パーティションからのバックアップはまだありますが、不足しているデータベース(ディレクトリ)を/var/lib/mysql/からコピーするだけでは機能せず、機能しません。 MySQLデーモンは再起動に失敗します。

現在の/var/lib/mysql/全体をバックアップしたもので置き換えることもできません。欠けているテーブルをエクスポートし、新しいディレクトリを元に戻して、エクスポートしたテーブルをインポートすることができます。データベースとテーブルはphpMyAdminに表示されましたが、内容はすべて空でした。

厄介なことは、デーモンはすぐにいじくった後、再起動に失敗するということです。 MySQLは*を敏感な少女に変えました。私の(手つかずの、アップグレードされていない、アップグレード後の)mysqlディレクトリの正確なコピーを元に戻しても、再起動しないため、apt-get install mysql-server-5.5 --reinstallを使用してアジャイルで動作させる必要があります。

それで、バックアップされたファイルからデータベースを取り戻す方法はありますか?彼らはそこにとても便利に座っており、データベースとまったく同じ名前が付けられており、ファイルはテーブルとまったく同じ名前が付けられています。

*)これは以前は機能していました。通常、私は自分のものをエクスポートするので、前回これを行ったのは数年前でしたが、以前は機能していました。 MySQLは泣き虫のように振る舞います。新品のほうが良いとは限りません。

少なくともMongoDBは、適切なbsonである限り、あなたが/var/lib/mongodbに入れたすべてのファイルを食べるだけです。

エラーログは非常に詳細ですが、実際には役に立ちません。

これらの百:

131120 5:23:48 [エラー]テーブルの.frmファイルが存在するが、InnoDBの内部データディクショナリからテーブルsome_database/some_tableが見つからないか、開けません。 InnoDBデータファイルを削除して再作成したが、対応するInnoDBテーブルの.frmファイルを削除するのを忘れたか、または.frmファイルを別のデータベースに移動した可能性がありますか?または、このバージョンのエンジンがサポートしていないインデックスがテーブルに含まれています。 http://dev.mysql.com/doc/refman/5.5/en/innodb-troubleshooting.html を参照して、問題を解決する方法をご覧ください。

また、mysqlをn回目に再インストールしているときにエディタでログを誤って更新したために再現できないInnoDBに関するその他のメッセージがいくつかあります。

とにかく、このInnoDBのものは何ですか?それは、成長し多用途なMySQLの弱者で小さな泣き虫の兄弟または妹のようなものです。彼らはそれをサーバー5.5のデフォルトにしました。おそらく正当な理由がありますが、これまでのところ、私はサンドイッチを作っていませんでした。

1
Redsandro

InnoDBMyISAM と同様にストレージエンジンです。

ファイルをコピーして戻す古い方法はMyISAMデータベースでも機能しますが、InnoDBにはいくつかの機能(ACIDへの準拠やロック制御の向上など)があり、その代償として機能しなくなります。

StackOverflowのこのスレッドは、ファイルから InnoDBデータベースを復元する方法 についていくつかの回答があります。

2
drc