どのように私からのMySQLデータベースのいずれかを復元するには.myd
、.myi
、.frm
ファイル?
どのように私からのMySQLデータベースのいずれかを復元するには.myd
、.myi
、.frm
ファイル?
回答:
これらがMyISAMテーブルの場合、.FRM、.MYD、および.MYIファイルをデータベースディレクトリ(例:)に展開/var/lib/mysql/dbname
すると、そのテーブルが使用可能になります。元のデータベース、同じサーバー、同じMySQLバージョン、同じアーキテクチャである必要はありません。あなたはまた、フォルダの所有者を変更する必要があるかもしれません(例えば、chown -R mysql:mysql /var/lib/mysql/dbname
)
パーミッション(GRANT
など)はmysql
データベースの一部であることに注意してください。したがって、テーブルと一緒に復元されることはありません。GRANT
ユーザーの作成、アクセス権の付与などを行うには、適切なステートメントを実行する必要がある場合があります(mysql
データベースの復元は可能ですが、MySQLバージョンと必要なmysql_upgrade
ユーティリティの実行に注意する必要があります)。
実際には、おそらく.FRM(テーブル構造)と.MYD(テーブルデータ)だけが必要ですが、.MYI(インデックス)を再構築するにはテーブルを修復する必要があります。
唯一の制約は、ダウングレードする場合は、リリースノートをチェックすることです(そしておそらく修復テーブルを実行します)。もちろん、新しいMySQLバージョンには機能が追加されています。
[当然のことですが、テーブルを混在させて一致させる場合、それらのテーブル間の関係の整合性が問題になります。MySQLは関係ありませんが、アプリケーションとユーザーは関係ありません。また、この方法はInnoDBテーブルに対してはまったく機能しません。MyISAMだけですが、あなたが持っているファイルを考えると、あなたはMyISAMを持っています]
check table sometable;
次に修復を実行します(必要な場合のみ): repair table sometable;
私はこれの解決策を見つけました。MySQL 5.1または5.6をWindows 7で使用しています。
このリカバリでは、.MYIファイルと.MYDファイルを見つける必要はありません。
innodb_force_recovery = 4
レベルを使用しました(この場合、それが必要かどうかはわかりません)よかった!
ibdata1
InnoDBであり、MyISAMではありません。
注意すべきこと:
.FRMファイルにはテーブル構造があり、MySQLバージョンに固有です。
.MYDファイルはバージョンに固有ではなく、少なくともマイナーバージョンではありません。
.MYIファイルは特定のものですが、省略しREPAIR TABLE
て他の回答のように再生成することができます。
この回答の要点は、テーブルのスキーマダンプがある場合は、それを使用してテーブル構造を生成し、それらの.MYDファイルをバックアップで置き換え、MYIファイルを削除して修復できることを通知することです。すべて。これにより、バックアップを別のMySQLバージョンに復元したり、を使用せずにデータベースを完全に移動したりできますmysqldump
。大規模なデータベースを移動するときに、これは非常に役立ちました。
シンプル!ダミーデータベースを作成します(abcなど)。
これらすべての.myd、.myi、.frmファイルをmysql \ data \ abcにコピーします。mysql\ data \は、すべてのデータベースの.myd、.myi、.frmが格納されている場所です。
次に、phpMyadminに移動し、db abcに移動すると、データベースが見つかります。
mysql内から修復できる.myiだと思います。
MySQLから次のタイプのエラーメッセージが表示される場合:データベースはクエリ(クエリ)の実行に失敗しました1016:ファイルを開けません: 'sometable.MYI'。(errno:145)エラーメッセージ:1034:テーブルのキーファイルが正しくありません: 'sometable'。おそらくクラッシュまたは破損したテーブルがある場合は、それを修復してください。
次のようにmysqlプロンプトからテーブルをチェックして修復できます。
check table sometable;
+------------------+-------+----------+----------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------------------------+
| yourdb.sometable | check | warning | Table is marked as crashed |
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------------------------+
repair table sometable;
+------------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+--------+----------+----------+
| yourdb.sometable | repair | status | OK |
+------------------+--------+----------+----------+
そして今あなたのテーブルはうまくいくはずです:
check table sometable;
+------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------+
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------+
ディレクトリにアクセスする必要なく、ファイルをファイルに変換するソリューション.sql
(.sql
ファイルをサーバーにインポートしてデータベースを回復できる)を見つけたため/var
、これを行うためにサーバー管理者である必要もありません。
コンピュータにXAMPPまたはMAMPをインストールする必要があります。
C:\XAMPP
)、およびサブディレクトリに移動しmysql\data
ます。フルパスはC:\XAMPP\mysql\data
内部には、作成した他のデータベースのフォルダが表示されます。コピー&の完全なフォルダを貼り付け.myd
、.myi
および.frm
そこにファイルを。そのフォルダへのパスは
C:\XAMPP\mysql\data\foldername\.mydfiles
次にlocalhost/phpmyadmin
、ブラウザーでアクセスします。mysql\data
フォルダに貼り付けたデータベースを選択し、ナビゲーションバーの[エクスポート]をクリックします。.sql
ファイルとしてエクスポートを選択します。次に、ファイルを保存する場所を尋ねるポップアップが表示されます
これで完了です。あなたは今持っている(はずです).sql
もともと含むデータベースファイル.myd
、.myi
および.frm
ファイルを。次に、新しいデータベースを作成し、ナビゲーションバーで[インポート]を押して、phpMyAdminを介して別のサーバーにインポートし、インポートする手順に従います。
mySQLの完全に同じバージョンであり、そのディレクトリ内のすべての関連ファイルを保持している限り、ファイルをdataフォルダの適切な名前のサブディレクトリディレクトリにコピーできます。すべてのファイルがない場合は、問題が発生すると確信しています。
http://forums.devshed.com/mysql-help-4/mysql-installation-problems-197509.html
ib_ *ファイルの名前を変更するように言われています。私はそれをしました、そして、それは私にdbを返しました。
上記の説明は、物事をうまく機能させるのに十分ではなかった(おそらく密であるか怠惰である)ので、将来役立つ助けとなる答えを見つけたら、このスクリプトを作成しました。他の人の役に立つことを願っています
vim fixperms.sh
#!/bin/sh
for D in `find . -type d`
do
echo $D;
chown -R mysql:mysql $D;
chmod -R 660 $D;
chown mysql:mysql $D;
chmod 700 $D;
done
echo Dont forget to restart mysql: /etc/init.d/mysqld restart;
MySQLサーバー5.5がインストールされているWindows XPを使用している場合-データベースの場所は、MySql Workbenchインストール内の場所を変更していない限り、C:\ Documents and Settings \ All Users \ Application Data \ MySQL \ MySQL Server 5.5 \ dataです。 GUI。