web-dev-qa-db-ja.com

別のデータベースへのmysqlリストア

次のコマンドを使用して、運用データベースをバックアップします。

mysqldump -u root --opt --skip-extended-insert --databases my_production_db

結果のダンプファイルには、上部近くに次の行があります。

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `my_production_db` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `my_production_db `;

データベースを別の宛先に復元するために。 my_debvelopment_dbダンプファイルを開いて、データベースに名前が付けられている部分を編集する必要があります。

次に実行します:

mysql -u root  -p <password> < mydumpfile

私はそれを行う別の方法を考え出していません。

データベースが大きくなると、これは実用的ではなくなります。

何か不足していますか?どういうわけか、データベースを復元する場所を指定しますか?別のバックアップコマンドが必要ですか?

21
giorgio

オプションをドロップすると--databasesしかし、データベース名を指定したまま、データベース作成ステートメントを取得しません。すなわち:

mysqldump -u root --opt --skip-extended-insert  my_production_db

開発用マシンで、復元したいデータベースを作成するだけです。

15
minaz

@minazの回答は良かったが、もう少し追加したい。

この問題は、--databasesキーワードが原因で発生しました。キーワードを省略すると、データベース作成コンテンツは含まれません。

したがって、--databasesキーワードなしでダンプします。

mysqldump -u username -p database_name > dump.sql

ターゲットデータベース名で復元します。

mysql -u username -p target_database_name < dump.sql

また、これを行うにはいくつかの方法があります。 here (dba.stackexchange)で同様の問題を参照してください。

49
lqez

既にダンプがある場合は、データベースを作成および使用するためのコマンドを削除できます。 4行目と新しい5行目を削除するだけです。

sed '4d' dump.sql | sed '5d' > dump-striped.sql
2
netAction

Windows xamppでは、次のコマンドを使用してこれを達成しました

書き出す

mysqldump -u root -p mydb > mydb.sql

インポート

mysql -u root -p mynewdb < mydb.sql
1
Mukesh