物理データベースファイルからMySQLデータベースを復元することは可能ですか?次のファイルタイプのディレクトリがあります。
client.frm
client.MYD
client.MYI
しかし、約20のテーブルが追加されます。
私は通常、mysqldumpまたは同様のツールを使用してすべてを1つのSQLファイルに取得するので、これらのタイプのファイルを処理する方法は何ですか?
物理データベースファイルからMySQLデータベースを復元することは可能ですか?次のファイルタイプのディレクトリがあります。
client.frm
client.MYD
client.MYI
しかし、約20のテーブルが追加されます。
私は通常、mysqldumpまたは同様のツールを使用してすべてを1つのSQLファイルに取得するので、これらのタイプのファイルを処理する方法は何ですか?
回答:
MySQL MyISAMテーブルは、3つのファイルの組み合わせです。
それらをデータベースフォルダーにコピーすることで復元できるはずです(Linuxでは、デフォルトの場所はです/var/lib/mysql/
)。
サーバーが稼働していないときに行う必要があります。
mysql
必要があったため、mysqld
プロセスを実行しているユーザーはファイルにアクセスできませんでした。やってchmod -R mysql:mysql .
MySQLのデータディレクトリには、迅速かつ簡単ですが、考え出す、その前に、なぜすべての私resoterdのDBが何のテーブルは少し時間がかかっていない持っているように見えました。
chown
。そのようなコピーされたファイルsudo chown -R mysql:mysql /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/をご覧ください。
同じ問題がありますが、上記の指示に基づいてデータベースを正常に回復できませんでした。
mysqlデータベースフォルダーはUbuntu OSからしか回復できませんでした。私の問題は、これらの読み取り不可能なmysqlデータフォルダーでデータベースを回復する方法です。そこで、開発環境をwin7 OSに戻しました。
*注意:win7で実行されている既存のデータベースサーバーがあり、回復したファイルから取得するデータベースファイルはほとんど必要ありません。Ubuntu OSからデータベースファイルを正常に回復するには、mysqlデータベースサーバー(Win7 OSのUbuntu OSと同じバージョン)を新たにインストールして、古いデータベースサーバーのすべてを回復する必要があります。
リカバリされたファイルから、別の新しい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 5.1(Win7)。DB(InnoDbs)を再作成するために、以下のディレクトリ(my.ini params)のすべてのコンテンツを置き換えました。
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を再起動できました。