次のコマンドを使用して、運用データベースをバックアップします。
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
私はそれを行う別の方法を考え出していません。
データベースが大きくなると、これは実用的ではなくなります。
何か不足していますか?どういうわけか、データベースを復元する場所を指定しますか?別のバックアップコマンドが必要ですか?
オプションをドロップすると--databases
しかし、データベース名を指定したまま、データベース作成ステートメントを取得しません。すなわち:
mysqldump -u root --opt --skip-extended-insert my_production_db
開発用マシンで、復元したいデータベースを作成するだけです。
@minazの回答は良かったが、もう少し追加したい。
この問題は、--databases
キーワードが原因で発生しました。キーワードを省略すると、データベース作成コンテンツは含まれません。
したがって、--databases
キーワードなしでダンプします。
mysqldump -u username -p database_name > dump.sql
ターゲットデータベース名で復元します。
mysql -u username -p target_database_name < dump.sql
また、これを行うにはいくつかの方法があります。 here (dba.stackexchange)で同様の問題を参照してください。
既にダンプがある場合は、データベースを作成および使用するためのコマンドを削除できます。 4行目と新しい5行目を削除するだけです。
sed '4d' dump.sql | sed '5d' > dump-striped.sql
Windows xamppでは、次のコマンドを使用してこれを達成しました
書き出す
mysqldump -u root -p mydb > mydb.sql
インポート
mysql -u root -p mynewdb < mydb.sql