バックアップを取得するために、毎週すべてのテーブルをダンプしました。しかし後で、テーブルの.frmファイルのみを保存していることを理解しました。テーブルの.MYDファイルと.MYIファイルは表示されません。したがって、データベースの.frmファイルのみがあり、mydatabaseはinnodbです。では、データベース内のデータを含むデータベースを取得できますか?
10 に答える
はい、これは可能です。ファイルをデータベース フォルダにコピーするだけでは十分ではなく、ファイルをデータ フォルダ.frm
にコピーする必要もあります。ファイルをコピーしてそれらのファイルをコピーし、サーバーを再起動するだけで、データベースが復元されました。ib_logfiles
ibdata
.frm
上記のファイルをコピーした後、次のコマンドを実行します -
sudo chown -R mysql:mysql /var/lib/mysql
上記のコマンドは、mysql の下のファイル所有者とそのフォルダーを MySql ユーザーに変更します。これは、mysql がファイル.frm
とibdata
ファイルを読み取るために重要です。
誰かにとって役立つかもしれません:
災害後には frm ファイルしか復元できませんでしたが、少なくとも次の手順を実行することで、FRM ファイルからテーブル構造を取得できました。
1- 新しい mysql データベースに、少なくとも 1 つの列と同じ名前の frm ファイルを持つダミー テーブルをいくつか作成します。
2ストップmysqlサービス
3-古いfrmファイルをコピーして、新しく作成したテーブルのfrmファイルに貼り付けます。それぞれを上書きするかどうかを尋ねられます。すべて交換します。
4-mysqlサービスを開始すると、テーブル構造ができます...
よろしく。だれでも
ここでもこの質問に答えました: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の新規インストール(必要な場合)
- SSH で Web サーバー (dev、production、違いなし) に接続し、mysql フォルダーを参照します (私のフォルダーは、Linux に Plesk をインストールするために /var/lib/mysql にありました)。
- mysql フォルダーを圧縮します。
- MyISAM か innoDB かに関係なく、すべての mySQL データベースを含む mysql フォルダーのアーカイブをダウンロードします (必要に応じて、このファイルを scp するか、ダウンロード可能なディレクトリに移動できます)。
- MAMP のインストール (Mac、Apache、MySQL、PHP)
- /Applications/MAMP/db/mysql/ に移動します。
- /Applications/MAMP/db/mysql を zip アーカイブにバックアップします (念のため)
本番サーバー (私の場合は mt Plesk 環境) から mysql フォルダーのアーカイブに含まれるすべてのフォルダーとファイルをコピーします。ただし、上書きしないでください:
-/アプリケーション/MAMP/db/mysql/mysql/
-/Applications/MAMP/db/mysql/mysql_upgrade_info
-/Applications/MAMP/db/mysql/performance_schema
これで、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 データベースをエクスポートしたので、それを本番環境にインポートできます。
mysqlfrm
.frm ファイルからテーブル作成 SQL コードを生成する優れたツールを利用しました。テーブルがリストされているにもかかわらず、この厄介なテーブルが見つからないというエラーが発生していました。したがって、このツールを使用してテーブルを再生成しました。ubuntu では、これを次のようにインストールする必要があります。
sudo apt install mysql-utilities
それから、
mysqlfrm --diagnostic mysql/db_name/ > db_name.sql
新しいデータベースを作成すると、
mysql -u username -p < db_name.sql
ただし、これによりテーブルは提供されますが、データは提供されません。私の場合はこれで十分でした。
すべてのファイルをコピーして /var/lib/mysql に置き換えます。その後、ファイルの所有者をmysql
これに変更する必要があります。これは、mariadb.service の再起動が失敗した場合に非常に重要です。
chown -R mysql:mysql /var/lib/mysql/*
と
chmod -R 700 /var/lib/mysql/*
データベースフォルダーをコピーしてMySQLのデータフォルダーに貼り付けました。つまり、altoというデータベースがある場合は、MySQLでフォルダーaltoを見つけます->バックアップでデータフォルダーを見つけ、altoフォルダー全体をコピーして、新しくインストールしたMySQLに貼り付けます- > データ フォルダで、MySQL を再起動すると、これで問題なく動作します。
同じ名前で新しいデータベースを作成します .frm .ibd ファイルをxampp/mysql/data/[databasename]/にコピーします
内部にあるibdataファイルも必要になります
xampp/mysql/data/ 以前の ibdata1 ファイルをコピーし、ファイルを貼り付けて既存の ibdata ファイルに置き換えます
[注意: 新しい ibdata ファイルで新しく作成されたデータベースの内容が失われる可能性があります]