43

バックアップを取得するために、毎週すべてのテーブルをダンプしました。しかし後で、テーブルの.frmファイルのみを保存していることを理解しました。テーブルの.MYDファイルと.MYIファイルは表示されません。したがって、データベースの.frmファイルのみがあり、mydatabaseはinnodbです。では、データベース内のデータを含むデータベースを取得できますか?

4

10 に答える 10

80

はい、これは可能です。ファイルをデータベース フォルダにコピーするだけでは十分ではなく、ファイルをデータ フォルダ.frmにコピーする必要もあります。ファイルをコピーしてそれらのファイルをコピーし、サーバーを再起動するだけで、データベースが復元されました。ib_logfilesibdata.frm

上記のファイルをコピーした後、次のコマンドを実行します -

sudo chown -R mysql:mysql /var/lib/mysql

上記のコマンドは、mysql の下のファイル所有者とそのフォルダーを MySql ユーザーに変更します。これは、mysql がファイル.frmibdataファイルを読み取るために重要です。

于 2012-06-08T06:08:22.567 に答える
18

誰かにとって役立つかもしれません:

災害後には frm ファイルしか復元できませんでしたが、少なくとも次の手順を実行することで、FRM ファイルからテーブル構造を取得できました。

1- 新しい mysql データベースに、少なくとも 1 つの列と同じ名前の frm ファイルを持つダミー テーブルをいくつか作成します。

2ストップmysqlサービス

3-古いfrmファイルをコピーして、新しく作成したテーブルのfrmファイルに貼り付けます。それぞれを上書きするかどうかを尋ねられます。すべて交換します。

4-mysqlサービスを開始すると、テーブル構造ができます...

よろしく。だれでも

于 2013-05-04T12:47:32.673 に答える
10

ここでもこの質問に答えました:https://dba.stackexchange.com/a/42932/24122

最近、この同じ問題が発生しました。私は Mac を使用しているので、MAMP を使用してデータベースを復元し、MySQL ダンプにエクスポートできるようにしました。

これに関する完全なブログ投稿は、 http ://www.quora.com/Jordan-Ryan/Web-Dev/How-to-Recover-innoDB-MySQL-files-using-MAMP-on-a-Mac で読むことができます。

絶対必要です:

-ibdata1

-ib_logfile0

-ib_logfile1

- mysql_database フォルダーの .FRM ファイル

-破棄しても構わないと思っているMAMP / MAMP Proの新規インストール(必要な場合)

  1. SSH で Web サーバー (dev、production、違いなし) に接続し、mysql フォルダーを参照します (私のフォルダーは、Linux に Plesk をインストールするために /var/lib/mysql にありました)。
  2. mysql フォルダーを圧縮します。
  3. MyISAM か innoDB かに関係なく、すべての mySQL データベースを含む mysql フォルダーのアーカイブをダウンロードします (必要に応じて、このファイルを scp するか、ダウンロード可能なディレクトリに移動できます)。
  4. MAMP のインストール (Mac、Apache、MySQL、PHP)
  5. /Applications/MAMP/db/mysql/ に移動します。
  6. /Applications/MAMP/db/mysql を zip アーカイブにバックアップします (念のため)
  7. 本番サーバー (私の場合は mt Plesk 環境) から mysql フォルダーのアーカイブに含まれるすべてのフォルダーとファイルをコピーします。ただし、上書きしないでください:

    -/アプリケーション/MAMP/db/mysql/mysql/

    -/Applications/MAMP/db/mysql/mysql_upgrade_info

    -/Applications/MAMP/db/mysql/performance_schema

  8. これで、phpMyAdmin からデータベースにアクセスできるようになりました。

しかし、これで終わりではありません。これらのファイルを本番環境に復元するために mysqldump を実行する必要があります。大規模なデータベースでは phpmyadmin インターフェイスがタイムアウトします。次の手順に従います。

http://nickhardeman.com/308/export-import-large-database-using-mamp-with-terminal/

以下、参考までにコピペ。デフォルトの MAMP インストールでは、パスワードは「root」であることに注意してください。

ターミナルを使用して MAMP の mysqldump を実行する方法

MAMP[1] からデータベースをエクスポート

ステップ 1: 新しいターミナル ウィンドウを開く

ステップ 2: ターミナル cd /applications/MAMP/library/bin に次の行を入力して、MAMP インストールに移動します。Enter キーを押します。

ステップ 3: ダンプ コマンド ./mysqldump -u [USERNAME] -p [DATA_BASENAME] > [PATH_TO_FILE] を記述します。

例:

./mysqldump -u root -p wp_database > /Applications/MAMP/htdocs/symposium10_wp/wp_db_onezero.sql

簡単なヒント: フォルダーにすばやく移動するには、フォルダーをターミナル ウィンドウにドラッグすると、フォルダーの場所が書き込まれます。誰かが私にこれを見せてくれたのは素晴らしい日でした.

ステップ 4: Enter キーを押すと、このテキスト行が表示されます パスワードを入力してください: パスワードを入力してください。

ステップ 5: ファイルを保存した場所を確認します。そこにある場合は成功です。これで、次に概説するデータベースをインポートできます。

mysql データベースをエクスポートしたので、それを本番環境にインポートできます。

于 2013-05-23T17:23:06.473 に答える
9

mysqlfrm.frm ファイルからテーブル作成 SQL コードを生成する優れたツールを利用しました。テーブルがリストされているにもかかわらず、この厄介なテーブルが見つからないというエラーが発生していました。したがって、このツールを使用してテーブルを再生成しました。ubuntu では、これを次のようにインストールする必要があります。

sudo apt install mysql-utilities

それから、

mysqlfrm --diagnostic mysql/db_name/ > db_name.sql

新しいデータベースを作成すると、

mysql -u username -p < db_name.sql

ただし、これによりテーブルは提供されますが、データは提供されません。私の場合はこれで十分でした。

于 2017-03-17T10:58:16.000 に答える
3

すべてのファイルをコピーして /var/lib/mysql に置き換えます。その後、ファイルの所有者をmysql これに変更する必要があります。これは、mariadb.service の再起動が失敗した場合に非常に重要です。

chown -R mysql:mysql /var/lib/mysql/*

chmod -R 700 /var/lib/mysql/*

于 2015-11-12T22:07:16.860 に答える
3

データベースフォルダーをコピーしてMySQLのデータフォルダーに貼り付けました。つまり、altoというデータベースがある場合は、MySQLでフォルダーaltoを見つけます->バックアップでデータフォルダーを見つけ、altoフォルダー全体をコピーして、新しくインストールしたMySQLに貼り付けます- > データ フォルダで、MySQL を再起動すると、これで問題なく動作します。

于 2013-10-29T07:04:44.070 に答える
-1

同じ名前で新しいデータベースを作成します .frm .ibd ファイルをxampp/mysql/data/[databasename]/にコピーします

内部にあるibdataファイルも必要になります

xampp/mysql/data/ 以前の ibdata1 ファイルをコピーし、ファイルを貼り付けて既存の ibdata ファイルに置き換えます

[注意: 新しい ibdata ファイルで新しく作成されたデータベースの内容が失われる可能性があります]

于 2016-02-14T16:54:54.377 に答える