バックアップを取得するために毎週すべてのテーブルをダンプしました。しかし、後で、テーブルの.frmファイルのみを保存していることを理解しています。テーブルの.MYDおよび.MYIファイルは表示されません。そのため、データベースの.frmファイルのみを持ち、mydatabaseもinnodbです。データベースのデータを使用してデータベースを取得できますか?
はい、これは可能です。 .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サービスを開始すると、テーブル構造ができました...
よろしく。なんとなく
.frmファイルからテーブル作成SQLコードを生成する優れたツールであるmysqlfrm
を使用しました。テーブルがリストされていても、この厄介なテーブルが見つかりませんというエラーが表示されました。したがって、このツールを使用してテーブルを再生成しました。 Ubuntuでは、これを次のようにインストールする必要があります。
Sudo apt install mysql-utilities
その後、
mysqlfrm --diagnostic mysql/db_name/ > db_name.sql
新しいデータベースを作成すると、使用できます。
mysql -u username -p < db_name.sql
ただし、これはテーブルを提供しますが、データは提供しません。私の場合、これで十分でした。
私もこの質問に答えました: 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の新規インストール(必要な場合)
Mysqlフォルダーのアーカイブに含まれるすべてのフォルダーとファイルを運用サーバーからコピーします(私の場合はmt Plesk環境)。ただし、上書きしないでください。
-/ Applications/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からのデータベースのエクスポート[1]
ステップ1:新しいターミナルウィンドウを開く
ステップ2:端末cd/applications/MAMP/library/binに次の行を入力してMAMPインストールに移動しますEnterキーを押します
ステップ3:ダンプコマンドを書く./mysqldump -u [USERNAME] -p [DATA_BASENAME]> [PATH_TO_FILE] Enterキーを押す
例:
./mysqldump -u root -p wp_database > /Applications/MAMP/htdocs/symposium10_wp/wp_db_onezero.sql
クイックヒント:フォルダーにすばやく移動するには、フォルダーをターミナルウィンドウにドラッグすると、フォルダーの場所が書き込まれます。誰かがこれを見せてくれたのは素晴らしい日でした。
ステップ4:Enterを押すと、このテキスト行が表示されますEnter password:だから、推測して、パスワードを入力します。表示されますが、そこにありますEnterキーを押します
ステップ5:ファイルを保存した場所を確認します。ファイルが存在する場合は、SUCCESSこれで、次に概要を説明するデータベースをインポートできます。
Mysqlデータベースのエクスポートができたので、実稼働環境にインポートできます。
データベースフォルダーをMySQLのデータフォルダーにコピーします。つまり、altoというデータベースがある場合は、MySQLでaltoフォルダーを見つけ、バックアップでデータフォルダーを探し、altoフォルダー全体をコピーして、新しくインストールしたMySQLに貼り付けます。 >データフォルダー、MySQLを再起動し、これは完璧に動作します。
すべてのファイルをコピーして/ var/lib/mysqlに置き換えます。その後、ファイルの所有者をmysql
に変更する必要がありますmariadb.serviceの再起動が失敗した場合、これは非常に重要です
chown -R mysql:mysql/var/lib/mysql/*
そして
chmod -R 700/var/lib/mysql/*
開始する前に、WAMPサービスを停止するか、少なくともサービスの開始を求められたらサービスを再起動する必要があります。
古いサーバーインスタンスでは、デフォルトでMySQLデータフォルダーに移動します。これは、C:\wamp\bin\mysql\mysql5.1.53\data\
どこ mysql5.1.53
は、以前にインストールされたMySQLデータベースのバージョン番号です。
このフォルダー内に、いくつかのファイルとフォルダーが表示されます。フォルダーは実際のMySQLデータベースであり、必要な.frmファイルの束が含まれています。フォルダ名をデータベース名として認識する必要があります。これらのフォルダーとそのすべてのコンテンツは、MySQLデータフォルダーに直接コピーできます。デフォルトのデータベースmysql、performance_schema、testは無視できます。
サーバーを起動した場合、データベースが選択されていることがわかりますが、データベースにはコピーされたテーブルは含まれていません。データベースの内容を取得するには、データフォルダーに戻ってファイルibdata1
、これはテーブルのデータファイルです。これをデータフォルダーに直接コピーします。新しいデータフォルダーに「ibdata1」というファイルが既にあるはずなので、この名前をibdata1.bak
は、ibdata1
古いMySQLデータフォルダーから。
これが完了したら、すべてのWAMPサービスを再起動します。 PhpMyAdminを使用して、データベースが正常に復元されたかどうかを確認できます。
同じ名前で新しいデータベースを作成します。frm .ibdファイルをxampp/mysql/data/[databasename] /にコピーします
内部にあるibdataファイルも必要になります
xampp/mysql/data /以前のibdata1ファイルをコピーしてファイルに貼り付け、既存のibdataファイルに置き換えます
[注意:新しいibdataファイルに新しく作成されたデータベースの内容を失う可能性があります]
長いアプローチですが、_.frm
_ファイルだけを使用してすべてのデータを取得できます。もちろん、_mysql/data
_ディレクトリに他のファイルが必要です。
ある日、ハードディスクがクラッシュし、起動中のブルースクリーンエラーが発生しました。複数のマシンで接続しようとしましたが、うまくいきませんでした。起動エラーなので、ファイルについて心配していました。そして、セカンダリハードディスクを試し、フォルダとファイルを復元しようとしました。また、念のため、完全なxamppフォルダー_c:/xampp
_もバックアップしました。最近のデータベースのバックアップがなかったため、データベースの取得方法が本当に心配でした。データベースには多くのクライアントプロジェクト管理と個人ドキュメントがあります。
Stackoverflowコメントにリストされている方法はどれも、私にとっては少なくとも機能しません。 _.frm
_ファイルからデータを取得するための答えを得るために丸2日かかった。多くの人々からの複数のアプローチに出くわしましたが、すべてがフラストレーションであり、実装時に何らかのエラーが発生しました。彼らのほとんどが(彼らのコメントに基づいて)それを機能させるなら、私は何が欠けていますか。
私はとても必死だったので、私はすべてのソフトウェアを失い、再試行するウィンドウを再インストールすることさえした。それでも同じエラー
彼のブログで解決策を見つけ、彼とまったく同じように機能させることができました。この男、Dustin Davisに感謝します( https://dustindavis.me/restoring-mysql-innodb-files-on-windows/ )。ここから彼のブログにジャンプして、彼の方法を試すことができます。
しかし、彼のブログで説明していないアプローチを試したときに発見したことがあります。私がどのようにしたか、あなたが探す必要があるものを説明するために最善を尽くします。
重要:必ず同じバージョンのXAMPPをインストールしてください。古いXAMPPから新しいバージョンに貼り付けをコピーすることはできません。これにより、___config
_または___tracking
_エラーが発生します。
readme_en.txt
_ファイルを開きます。これはxamppのルートディレクトリにあります。###### ApacheFriends XAMPP Version X.X.XX ######
_xampp(old folder)/mysql/data/
_ibdata1
ib_logfile0
ib_logfile1
<databasename>/*.frm
<databasename>/*.ibd
_
mysql/data
_フォルダーに移動し、replace_ibdata1
_、_ib_logfile0
_、および_ib_logfile1
_database
フォルダーを古いxamppバックアップから、_c:/xampp/mysql/data/
_および_.frm
_ファイルを含む新しくインストールされたxamppフォルダー_.ibd
_にコピーペーストします。データベース。c:/xampp/mysql/bin
_に移動し、_my.cn
_を探します。my.cn
_ファイルを開いて_#skip-innodb
_を探し、その下で_innodb_log_file_size=5M
_という行を探して_170M
_に変更します。 _innodb_log_file_size=170M
_。これはログファイルのサイズであり、不明な場合は_170
_に設定するだけですmysql_start.bat
_ディレクトリにあるファイル_c:/xampp/
_(Windowsバッチファイル)を開きます。_–innodb_force_recovery=6
_の後に_... --console
_を追加します
_....
mysql\bin\mysqld --defaults-file=mysql\bin\my.ini --standalone --console
–innodb_force_recovery=6
if errorlevel 1 goto error
goto finish
_
phpmyadmin
に移動して、データベースとそのテーブルを確認します。エラーが発生しない場合、正しい軌道に乗っています。