物理データベースファイルからMySQLデータベースを復元することは可能ですか?次のファイルタイプのディレクトリがあります。
client.frm
client.MYD
client.MYI
しかし、さらに約20のテーブルがあります。
私は通常、mysqldumpまたは同様のツールを使用してすべてを1つのSQLファイルに入れますが、これらのタイプのファイルを処理する方法は何ですか?
MySQL MyISAMテーブルは、3つのファイルの組み合わせです。
データベースフォルダーにコピーして復元できるはずです(Linuxでは、デフォルトの場所は/var/lib/mysql/
です)
サーバーが実行されていないときに実行する必要があります。
@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://biolinh.wordpress.com/2017/04/01/restoring-mysql-database-from-physical-files-debianubuntu/
同じ問題がありますが、上記の手順に基づいてデータベースを正常に回復できませんでした。
Ubuntu OSからmysqlデータベースフォルダーのみを復元しました。私の問題は、これらの読み取り不能なmysqlデータフォルダーでデータベースを回復する方法です。開発環境をwin7 OSに戻します。
*注win7で実行されている既存のデータベースサーバーがあり、リカバリしたファイルから取得するデータベースファイルはほとんど必要ありません。 Ubuntu OSからデータベースファイルを正常に回復するには、win7 OSのUbuntu OSから新しくインストールしたmysqlデータベースサーバーと同じバージョンを使用して、古いデータベースサーバーのすべてを回復する必要があります。
リカバリされたファイルから、別の新しいmysqlデータベースサーバーと同じバージョンを作成します。
Mysqlサーバーを停止します
復元したフォルダをコピーして、(C:\ ProgramData\MySQL\MySQL Server 5.5\data)に貼り付けて、mysqlデータベースを保存します。
linux mysqlがインストールされているフォルダーにあるibdata1ファイルをコピーして、(C:\ ProgramData\MySQL\MySQL Server 5.5\data)に貼り付けます。交換する前に、既存のバックアップを作成するか、バックアップを作成してください。
mysqlサーバーを起動し、データベースファイルを正常に回復したかどうかを確認します。
現在使用しているmysqlサーバーで回復したデータベースを使用するには、回復したデータベースをエクスポートして、既存のmysqlサーバーにインポートします。
私は私の問題の解決策を見つけられなかったので、これらが役立つことを願っています。
フォルダーを復元する場合は、ファイルをmysql:mysqlにchownすることを忘れないでくださいchown -R mysql:mysql /var/lib/mysql-data
それ以外の場合、データベースを削除したり、新しい列を追加したりするときにエラーが発生します。
mySQLを再起動します
service mysql restart
MySql 5.1(Win7)を使用。 DB(InnoDbs)を再作成するために、次のディレクトリ(my.iniパラメーター)のすべてのコンテンツを置き換えました。
datadir="C:/ProgramData/MySQL/MySQL Server 5.1/Data/"
innodb_data_home_dir="C:/MySQL Datafiles/"
その後、MySqlサービスを開始しましたが、すべて正常に動作します。
はい、そうです! (OSに応じて)データベースフォルダーに追加し、「MySQL Fix Permissions」などのコマンドを実行するだけです。これにより、データベースが再保存されました。また、ファイルに正しいアクセス許可が設定されていることも確認してください。
私の場合、/ var/lib/mysqlのtc.logを削除するだけで、mariadb/mysqlを再起動できます。
これらのファイルを、動作していたmysqlデータベースのデータベースストレージフォルダーにコピーし、dbを起動してファイルを「修復」するのを待ってから、mysqldumpで抽出しました。