物理ファイルからのMySQLデータベースの復元

2009年01月28日に質問されました。  ·  閲覧回数 254k回  ·  ソース

Abdullah Jibaly picture
2009年01月28日

物理データベースファイルからMySQLデータベースを復元することは可能ですか? 次のファイルタイプのディレクトリがあります。

client.frm
client.MYD
client.MYI

しかし、さらに約20のテーブルが必要です。

私は通常、mysqldumpまたは同様のツールを使用してすべてを1つのSQLファイルにまとめていますが、これらのタイプのファイルを処理する方法は何ですか?

回答

Vincent picture
2009年01月28日
135

MySQL MyISAMテーブルは、次の3つのファイルの組み合わせです。

  • FRMファイルはテーブル定義です。
  • MYDファイルは、実際のデータが保存される場所です。
  • MYIファイルは、テーブルに作成されたインデックスが保存される場所です。

それらをデータベースフォルダにコピーすることで復元できるはずです(Linuxでは、デフォルトの場所は/var/lib/mysql/

サーバーが実行されていないときに実行する必要があります。

biolinh picture
2017年04月03日
53

@Vicentの回答から、私はすでにMySQLデータベースを次のように復元しています。

ステップ1.Mysqlサーバーをシャットダウンします

ステップ2.データベースフォルダーにデータベースをコピーします(Linuxでは、デフォルトの場所は/ var / lib / mysqlです)。 データベースの同じ名前とデータベースの同じ名前をmysqlモードで保持します。

sudo cp -rf   /mnt/ubuntu_426/var/lib/mysql/database1 /var/lib/mysql/

ステップ3:自分自身を変更し、フォルダーのモードを変更します。

sudo chown -R mysql:mysql /var/lib/mysql/database1
sudo chmod -R 660 /var/lib/mysql/database1
sudo chown  mysql:mysql /var/lib/mysql/database1 
sudo chmod 700 /var/lib/mysql/database1

ステップ4:データベースフォルダーにibdata1をコピーします

sudo cp /mnt/ubuntu_426/var/lib/mysql/ibdata1 /var/lib/mysql/

sudo chown mysql:mysql /var/lib/mysql/ibdata1

手順5:データベースフォルダにib_logfile0ファイルとib_logfile1ファイルをコピーします。

sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile0 /var/lib/mysql/

sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile1 /var/lib/mysql/

自分自身を変更し、それらのファイルのルートを変更することを忘れないでください。

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

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

または

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

ステップ6(オプション):私のサイトには、特定の場所にファイルを保存する構成があり、それらを対応する場所に正確にコピーします。

ステップ7:Mysqlサーバーを起動します。 すべてが戻ってきて、それを楽しんでください。

それだ。

詳細については、 https

Joel Davey picture
2014年06月29日
9

フォルダを復元する場合は、ファイルをmysql:mysqlにchownすることを忘れないでください

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

そうしないと、データベースを削除したり、新しい列を追加したりするときにエラーが発生します。

MySQLを再起動します

service mysql restart
Ivan Igniter picture
2015年02月27日
9

同じ問題が発生しましたが、上記の手順に基づいてデータベースを正常に回復できませんでした。

UbuntuOSからmysqlデータベースフォルダーを回復することしかできませんでした。 私の問題は、これらの読み取り不可能なmysqlデータフォルダを使用してデータベースを回復する方法です。 そこで、開発環境用にwin7OSに切り替えました。

*注win7で実行されている既存のデータベースサーバーがあり、回復されたファイルから取得するために必要なデータベースファイルはごくわずかです。 Ubuntu OSからデータベースファイルを正常に回復するには、mysqlデータベースサーバー(win7OSのUbuntuOSと同じバージョン)を新たにインストールして、古いデータベースサーバーのすべてを回復する必要があります。

  1. 回復したファイルから別の新しいmysqlデータベースサーバーを同じバージョンにします。

  2. mysqlサーバーを停止します

  3. 復元されたフォルダーをコピーして、(C:\ ProgramData \ MySQL \ MySQL Server 5.5 \ data)mysqlデータベースに貼り付けます。

  4. linux mysqlインストールフォルダーにあるibdata1ファイルをコピーして、(C:\ ProgramData \ MySQL \ MySQL Server 5.5 \ data)に貼り付けます。 置き換える前に、既存のものを上書きするか、バックアップを作成してください。

  5. mysqlサーバーを起動し、データベースファイルが正常に回復したかどうかを確認します。

  6. 現在使用しているmysqlサーバーで復元されたデータベースを使用するには、復元されたデータベースをエクスポートして、既存のmysqlサーバーにインポートするだけです。

他に何もうまくいかなかったので、これらが役立つことを願っています。

sergey.olifirenko picture
2012年03月01日
2

MySql 5.1(Win7)を使用。 DB(InnoDbs)を再作成するために、次のdir(my.ini params)のすべての内容を置き換えました。

datadir="C:/ProgramData/MySQL/MySQL Server 5.1/Data/"
innodb_data_home_dir="C:/MySQL Datafiles/"

その後、MySql Serviceを開始し、すべて正常に動作します。

Filip Ekberg picture
2009年01月28日
1

はい、そうです! それらをデータベースフォルダに追加し(OSによって異なります)、「MySQLFixPermissions」などのコマンドを実行するだけです。 これにより、データベースが再保存されました。 ファイルにも正しい権限が設定されていることも確認してください。

Spikolynn picture
2009年01月28日
0

私はかつて、これらのファイルを、機能しているmysqlデータベースのデータベースストレージフォルダーにコピーし、dbを起動して、ファイルが「修復」されるのを待ってから、mysqldumpでそれらを抽出しました。

Aidin picture
2020年08月20日
0

物理ファイルにDBデータが含まれていた幸運にも削除されなかったDockerボリュームから誤って削除されたDockerコンテナ(oraclelinuxのMySQL)を復活させようとして、これに遭遇しました。

したがって、私がやりたかったのは、物理ファイルのデータを.sqlインポート可能なファイルに変換して、DBとデータを含むコンテナーを再作成することだけでした。

biolinのソリューションを試し[InnoDB] Multiple files found for the same tablespace IDエラーが発生しました。 特定のフォルダ/ファイルでオープンハート手術を行うのはかなり難しいことに気づきました。

私のために働いた解決策は、 my.cnfdatadir=を一時的に使用可能なフォルダーに変更し、MySQLサーバーを再起動することでした。 それは完璧に仕事をしました!

SirJohnFranklin picture
2019年02月08日
-1

私の場合、/ var / lib / mysqlのtc.logを削除するだけで、mariadb / mysqlを再開できました。