mysqldumpからダンプファイルを復元するにはどうすればよいですか?


544

Windows Server 2008マシンのデータベースとして復元する必要があるMySQLデータベースファイルが提供されました。

MySQL Administratorを使用してみましたが、次のエラーが発生しました:

選択したファイルはmysqldumpによって生成されたため、このアプリケーションでは復元できません。

これを機能させるにはどうすればよいですか?

回答:


587

これを実行するのと同じくらい簡単でなければなりません:

mysql -u <user> -p < db_backup.dump

ダンプが単一のデータベースのものである場合は、ファイルの先頭に行を追加する必要がある場合があります。

USE <database-name-here>;

多くのデータベースのダンプである場合、useステートメントはすでにそこにあります。

これらのコマンドを実行するには、コマンドプロンプトを開き(Windowsの場合)cdmysql.exe実行可能ファイルがあるディレクトリに移動します(そのため、少し見回す必要がある場合があります。これは、mysqlのインストール方法、つまりスタンドアロンまたはの一部として異なります。 WAMPのようなパッケージ)。そのディレクトリに移動したら、上記のようにコマンドを入力するだけです。


1
「MySQLコマンドラインクライアント」を使用しますか?これまでにMySQLを使用したことがありません。
ザックピーターソン

1
ダンプファイルをテキストエディターで開きます。「using」ステートメントがあればそれを選択するのはかなり簡単です。複数のデータベースがある場合は、何もない場合は、その前に1つ追加する必要があります。そのコマンドを実行します。
ジャスティンベネット

6
もちろん、「using」ステートメントに入れたデータベースが最初に存在している必要があります。
ジャスティンベネット

113
vogsの回答を参照してください。構文では 、ファイルの先頭にステートメントはmysql -u<user> -p mydatabasename < db_backup.dump 必要ありませんUSE
Toskan

1
「ダンプファイルをテキストエディタで開く」という提案は奇妙に見えます。それは小さなデータベースやEditPadのようなバッファ付きテキストエディタで機能するかもしれませんが、他のすべてではうまくいきません。この手順を実行する必要がなかったとしたら、すばらしいと思います。
mikato

719

復元するデータベースがまだ存在しない場合は、最初に作成する必要があります。

コマンドラインで、ダンプされたファイルが含まれているのと同じディレクトリにいる場合は、次のコマンドを(適切な置換を使用して)使用します。

C:\> mysql -u root -p

mysql> create database mydb;
mysql> use mydb;
mysql> source db_backup.dump;

52
私は個人的にこの方法が好きです。ダンプの進行状況と、さまざまなSQLにかかっている正確な時間も表示されます。
ToughPal 2010年

11
@Phrogz実際にはmysql -u root -psecret 、スペースを使用せずにコマンドラインでパスワードを指定できますが、パスワードがプロセスリストやログファイルにクリアテキストで表示されるという欠点があります。あなたが提案するように、空を使用-pしてプロンプトに入力する方が良いです。
Joe Holloway

この方法には、ダンプファイルを編集せずにセッションベースの変数(例:FOREIGN_KEY_CHECKS)を設定できるという利点があります
Chris Cooper

これは、この種のことを手作業で行う場合にはすべてうまくいきますが、bashスクリプトからは機能しません。
chacham15

1
1つの欠点:g​​zipされたダンプを読み込むことができない(例:で生成mysqldump db | gzip -9 > dumpfile.sql.gz
Marinos An

246

これを実行するだけです:

mysql -p -u[user] [database] < db_backup.dump

ダンプに複数のデータベースが含まれている場合は、データベース名を省略してください。

mysql -p -u[user] < db_backup.dump

これらのコマンドを実行するには、コマンドプロンプトを開き(Windowsの場合)cdmysql.exe実行可能ファイルがあるディレクトリに移動します(そのため、少し見回す必要がある場合があります。これは、mysqlのインストール方法、つまりスタンドアロンまたはの一部として異なります。 WAMPのようなパッケージ)。そのディレクトリに移動したら、コマンドを入力するだけです。



33

でダンプファイルを作成する場合mysqldump、そこに含まれるのは、データベースの内容を再作成するための大きなSQLスクリプトです。したがって、MySQLのコマンドラインクライアントを起動して復元します。

mysql -uroot -p 

rootMySQLの管理者ユーザー名はここにあります)。データベースに接続したら、データベースを作成してファイルを読み込むコマンドが必要です。

create database new_db;
use new_db;
\. dumpfile.sql

詳細は、ダンプファイルの作成時に使用されたオプションによって異なります。


19

コマンドを実行してDBに入力します

 # mysql -u root -p 

ユーザーのパスワードを入力してから、新しいDBを作成します

mysql> create database MynewDB;
mysql> exit

そして、exit.Afetr thatを作成します。このコマンドを実行します

# mysql -u root -p  MynewDB < MynewDB.sql

次に、dbに入力して入力します

mysql> show databases;
mysql> use MynewDB;
mysql> show tables;
mysql> exit

それで........ダンプは1つのDBから別のDBに復元されます

または、ダンプを復元する別の方法があります

# mysql -u root -p 

次に、dbに入力して入力します

mysql> create database MynewDB;
mysql> show databases;
mysql> use MynewDB;
mysql> source MynewDB.sql;
mysql> show tables;
mysql> exit

14

私はそれをこれらのステップに従って動作させました…

  1. MySQL Administratorを開き、サーバーに接続します

  2. 左側の「カタログ」を選択します

  3. 左下のボックスを右クリックして、「新規スキーマの作成」を選択します

    MySQL管理者http://img204.imageshack.us/img204/7528/adminsx9.th.gif 画像を拡大

  4. 新しいスキーマに名前を付けます(例: "dbn")

    MySQL新しいスキーマhttp://img262.imageshack.us/img262/4374/newwa4.th.gif 画像を拡大

  5. Windowsコマンドプロンプト(cmd)を開く

    Windowsコマンドプロンプトhttp://img206.imageshack.us/img206/941/startef7.th.gif 画像を拡大

  6. ディレクトリをMySQLインストールフォルダーに変更します。

  7. コマンドを実行:

    mysql -u root -p dbn < C:\dbn_20080912.dump

    …「root」はユーザー名、「dbn」はデータベース名、「C:\ dbn_20080912.dump」はmysqldump .dumpファイルのパス/ファイル名です。

    MySQLダンプリストアコマンドラインhttp://img388.imageshack.us/img388/2489/cmdjx0.th.gif 画像を拡大

  8. 楽しい!



11

ダンプの進行状況を表示したい場合は、次のことを試してください。

pv -i 1 -p -t -e /path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME

もちろん、「pv」をインストールする必要があります。このコマンドは* nixでのみ機能します。


10

前の回答の具体例として:

SQL Serverにインポート/移行できるように、バックアップを復元する必要がありました。MySqlのみをインストールしましたが、サービスとして登録したり、実行を維持する必要がないため、パスに追加したりしていません。

Windowsエクスプローラーを使用して、ダンプファイルをC:\ code \ dump.sqlに配置しました。次に、スタートメニュー項目からMySqlを開きました。DBを作成してから、次のように完全なパスを指定してsourceコマンドを実行しました。

mysql> create database temp
mysql> use temp
mysql> source c:\code\dump.sql

9

Linuxで作成された200MBのダンプファイルを使用して、Windowsでmysql 5.5を使用して復元すると、

source file.sql

mysqlプロンプトからのアプローチよりも

mysql  < file.sql

コマンドラインでのアプローチ、それによりいくつかのエラー2006「サーバーが消えました」(Windowsの場合)

奇妙なことに、(mysql)のインストール中に作成されたサービスが、存在しないmy.iniファイルを参照しています。「大きな」サンプルファイルをmy.iniにコピーしました。このファイルは、アドバイスされた増加ですでに変更されています。

私の価値観は

[mysqld]
max_allowed_packet = 64M
interactive_timeout = 250
wait_timeout = 250

9
./mysql -u <username> -p <password> -h <host-name like localhost> <database-name> < db_dump-file

これは他のいくつかの回答と同じです。これは8年前の質問です。
miken32

2
選択された答えは非常に良いですが、この答えは実際には私にとってより有用でした。私のデータベースファイルは巨大で、Notepad ++で開くのは悪夢でした。サイズを処理できず、sqlファイルの先頭にデータベース名を追加できませんでした。その場合、コマンドラインからデータベース名を指定できるほうが実際に便利です。
Najeeb

mysqlコマンドはオプションとその引数の間にスペースを受け付けません。-u<username>代わりにする必要があり、パスワードをコマンドラインで指定しないでください。
Roland Illig

4

バックアップ/ダンプがそこから作成されていない場合、MySQL Adminの[復元]メニューを使用できません。それは一撃の価値があります。チェックボックスをオンにして「エラーを無視する」を選択した場合、インポートはほんの一部の行だけで終了しますが、これはダンプ付きです。


2

生成されたSQLを復元するワンライナーコマンド mysqldump

mysql -u <username> -p<password> -e "source <path to sql file>;"

1
mysql -u root -p12345678 -e "source /tmp/backup.sql;"
ジョセフハルシュ

このようにパスワードを使用しないでください。-pを使用するだけで、Enterキーを押すと、コマンドラインから安全なパスワード要求が表示されます。
user2473015

対話型のプロンプトを用意できるときは、あなたは正しいです。できない場合(無人スクリプトなど)は、おそらくインラインで使用します
Jossef Harush

1

MySQL Administratorの復元メニューを使用することもできます。バックアップファイルを開いて、復元ボタンをクリックするだけです。


0

MySQLWorkbenchでMySQLデータベースを復元する方法

クエリタブでドロップコマンドと作成コマンドを実行できます。

現在存在する場合はスキーマを削除します

DROP DATABASE `your_db_name`;

新しいスキーマを作成する

CREATE SCHEMA `your_db_name`;

ダンプファイルを開く

MySQLWorkbenchオープンSQLファイル

  1. [ 新しいクエリタブでSQLスクリプトを開く]アイコンをクリックし、dbダンプファイルを選択します。
  2. 次に、[ SQLスクリプトの実行...]をクリックします。
  3. その後、SQLダンプスクリプトの最初の行をプレビューできます。
  4. 次に、デフォルトのスキーマ名を選択します
  5. 次に、デフォルトの文字セットを選択します。通常、utf8は安全な賭けですが、プレビューラインを調べて、character_setのようなものを見つけることができる場合があります。
  6. 実行をクリックします
  7. 大容量のDB復元スクリプトを我慢して、ドライブスペースが溶けていくのを確認してください。🎉

0

空のデータベースがすでに作成されていると仮定すると、次のようにコマンドラインからデータベースを復元することもできます。

sudo mysql databasename < backup.sql
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.