Bagaimana cara mengembalikan file dump dari mysqldump?

544

Saya diberi file database MySQL yang harus saya pulihkan sebagai database pada mesin Windows Server 2008 saya.

Saya mencoba menggunakan Administrator MySQL, tetapi saya mendapatkan kesalahan berikut:

File yang dipilih dihasilkan oleh mysqldump dan tidak dapat dipulihkan oleh aplikasi ini.

Bagaimana saya membuatnya bekerja?

Zack Peterson
sumber

Jawaban:

587

Seharusnya semudah menjalankan ini:

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

Jika dump adalah dari satu database Anda mungkin harus menambahkan baris di bagian atas file:

USE <database-name-here>;

Jika itu adalah dump dari banyak basis data, pernyataan penggunaan sudah ada di sana.

Untuk menjalankan perintah ini, buka command prompt (di Windows) dan cdke direktori di mana mysql.exeexecutable berada (Anda mungkin harus melihat-lihat sedikit untuk itu, itu akan tergantung pada bagaimana Anda menginstal mysql, yaitu mandiri atau sebagai bagian dari paket seperti WAMP). Setelah Anda berada di direktori itu, Anda harus bisa mengetikkan perintah seperti yang saya miliki di atas.

Justin Bennett
sumber
1
Apakah saya menggunakan "Klien Baris Perintah MySQL"? Saya belum pernah menggunakan MySQL sebelumnya.
Zack Peterson
1
Buka file dump di editor teks, cukup mudah untuk mengambil, jika ada pernyataan "menggunakan", maka itu dari beberapa database, jika tidak ada, Anda harus menambahkan satu di bagian atas sebelum Anda dapat jalankan perintah itu.
Justin Bennett
6
Tentu saja database yang Anda masukkan ke dalam pernyataan "using" harus ada terlebih dahulu.
Justin Bennett
113
lihat jawaban vogs. Sintaksnya mysql -u<user> -p mydatabasename < db_backup.dump tidak perlu untuk sebuah USEpernyataan di awal file
Toskan
1
"Buka file dump di editor teks" saran tampaknya aneh. Itu mungkin bekerja dengan basis data kecil atau editor teks buffer seperti EditPad, tetapi dengan semua yang lain itu akan tersedak. Akan lebih baik jika Anda tidak harus mengambil langkah ini.
mikato
719

Jika database yang ingin Anda pulihkan belum ada, Anda harus membuatnya terlebih dahulu.

Pada baris perintah, jika Anda berada di direktori yang sama yang berisi file yang dibuang, gunakan perintah ini (dengan substitusi yang sesuai):

C:\> mysql -u root -p

mysql> create database mydb;
mysql> use mydb;
mysql> source db_backup.dump;
Dónal
sumber
52
Saya pribadi suka metode ini. ini menunjukkan kemajuan dari dump dan juga berapa banyak waktu yang dibutuhkan sql.
ToughPal
11
@ Phrogz Sebenarnya Anda dapat memasok kata sandi pada baris perintah menggunakan mysql -u root -psecret tanpa spasi, tetapi memiliki kelemahan bahwa kata sandi Anda muncul di cleartext dalam daftar proses dan file log. Lebih baik, seperti yang Anda sarankan, untuk menggunakan kosong -pdan ketik di prompt.
Joe Holloway
Metode ini memiliki manfaat memungkinkan variabel berbasis sesi (misalnya FOREIGN_KEY_CHECKS) ditetapkan tanpa harus mengedit file dump
Chris Cooper
ini semua baik dan bagus ketika melakukan hal semacam ini dengan tangan, tetapi tidak bekerja dari bash script.
chacham15
1
Satu kekurangan: itu tidak dapat memuat dump gzipped (misalnya dihasilkan dengan mysqldump db | gzip -9 > dumpfile.sql.gz)
Marinos An
246

Anda hanya perlu menjalankan ini:

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

Jika dump berisi banyak database, Anda harus menghilangkan nama database:

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

Untuk menjalankan perintah ini, buka command prompt (di Windows) dan cdke direktori di mana mysql.exeexecutable berada (Anda mungkin harus melihat-lihat sedikit untuk itu, itu akan tergantung pada bagaimana Anda menginstal mysql, yaitu mandiri atau sebagai bagian dari paket seperti WAMP). Setelah Anda berada di direktori itu, Anda harus bisa mengetikkan perintah.

vog
sumber
60
mysql -u username -p -h localhost DATA-BASE-NAME < data.sql

lihat di sini - langkah 3 : dengan cara ini Anda tidak perlu pernyataan USE

womd
sumber
33

Ketika kita membuat file dump mysqldump, isinya adalah skrip SQL besar untuk membuat ulang konten databse. Jadi kami mengembalikannya dengan memulai klien baris perintah MySQL:

mysql -uroot -p 

(di mana rootnama pengguna admin kami untuk MySQL), dan setelah terhubung ke database kami perlu perintah untuk membuat database dan membaca file di dalamnya:

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

Detail akan bervariasi sesuai dengan opsi mana yang digunakan saat membuat file dump.

pdc
sumber
19

Jalankan perintah untuk masuk ke dalam DB

 # mysql -u root -p 

Masukkan kata sandi untuk pengguna Lalu Buat DB Baru

mysql> create database MynewDB;
mysql> exit

Dan keluarlah. Setelah itu. Jalankan Perintah ini

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

Lalu masukkan ke dalam db dan ketik

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

Itu ........ dump Anda akan dikembalikan dari satu DB ke DB lainnya

Atau ada cara alternatif untuk mengembalikan dump

# mysql -u root -p 

Lalu masukkan ke dalam db dan ketik

mysql> create database MynewDB;
mysql> show databases;
mysql> use MynewDB;
mysql> source MynewDB.sql;
mysql> show tables;
mysql> exit
Javeed Shakeel
sumber
14

Saya mulai bekerja mengikuti langkah-langkah ini ...

  1. Buka MySQL Administrator dan sambungkan ke server

  2. Pilih "Katalog" di sebelah kiri

  3. Klik kanan di kotak kiri bawah dan pilih "Buat Skema Baru"

    Administrator MySQL http://img204.imageshack.us/img204/7528/adminsx9.th.gif memperbesar gambar

  4. Beri nama skema baru (contoh: "dbn")

    Skema Baru MySQL http://img262.imageshack.us/img262/4374/newwa4.th.gif memperbesar gambar

  5. Buka Prompt Perintah Windows (cmd)

    Prompt Perintah Windows http://img206.imageshack.us/img206/941/startef7.th.gif memperbesar gambar

  6. Ubah direktori ke folder instalasi MySQL

  7. Jalankan perintah:

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

    ... di mana "root" adalah nama pengguna, "dbn" adalah nama basis data, dan "C: \ dbn_20080912.dump" adalah path / nama file file mysqldump .dump

    MySQL dump restore command line http://img388.imageshack.us/img388/2489/cmdjx0.th.gif memperbesar gambar

  8. Nikmati!

Zack Peterson
sumber
12

Anda dapat mencoba alat 'Laksanakan skrip SQL' SQLyog untuk mengimpor file sql / dump.

masukkan deskripsi gambar di sini

Ashwin A
sumber
11

Jika Anda ingin melihat kemajuan dump coba ini:

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

Anda tentu saja perlu 'pv' diinstal. Perintah ini hanya berfungsi pada * nix.

Hengjie
sumber
10

Sebagai contoh spesifik dari jawaban sebelumnya:

Saya perlu memulihkan cadangan sehingga saya dapat mengimpor / memigrasikannya ke SQL Server. Saya menginstal MySql saja, tetapi tidak mendaftarkannya sebagai layanan atau menambahkannya ke jalur saya karena saya tidak perlu membuatnya tetap berjalan.

Saya menggunakan windows explorer untuk meletakkan file dump saya di C: \ code \ dump.sql. Kemudian buka MySql dari item menu mulai. Membuat DB, lalu jalankan perintah sumber dengan path lengkap seperti:

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

Menggunakan file dump 200MB yang dibuat di Linux untuk mengembalikan pada Windows dengan mysql 5.5, saya lebih sukses dengan

source file.sql

pendekatan dari prompt mysql daripada dengan

mysql  < file.sql

pendekatan pada baris perintah, yang menyebabkan beberapa kesalahan 2006 "server telah hilang" (di windows)

Anehnya, layanan yang dibuat saat instalasi (mysql) merujuk ke file my.ini yang tidak ada. Saya menyalin file contoh "besar" ke my.ini yang sudah saya modifikasi dengan peningkatan yang disarankan.

Nilai saya adalah

[mysqld]
max_allowed_packet = 64M
interactive_timeout = 250
wait_timeout = 250
Jerome_B
sumber
9
./mysql -u <username> -p <password> -h <host-name like localhost> <database-name> < db_dump-file
vkrishna17
sumber
Ini sama dengan beberapa jawaban lainnya, dan ini adalah pertanyaan berumur delapan tahun.
miken32
2
Meskipun jawaban yang dipilih sangat bagus, jawaban ini sebenarnya lebih bermanfaat bagi saya. File database saya adalah BESAR, dan membukanya di Notepad ++ adalah mimpi buruk, tidak bisa menangani ukurannya dan tidak memungkinkan saya untuk menambahkan nama database di bagian atas file sql. Dalam hal ini dapat menentukan nama db dari baris perintah sebenarnya lebih bermanfaat.
Najeeb
The mysqlperintah tidak menerima spasi antara pilihan dan argumen mereka. Itu harus -u<username>sebaliknya, dan kata sandi tidak boleh diberikan pada baris perintah sama sekali.
Roland Illig
4

Anda tidak dapat menggunakan menu Pulihkan di Admin MySQL jika cadangan / dump tidak dibuat dari sana. Ini layak dicoba. Jika Anda memilih untuk "mengabaikan kesalahan" dengan kotak centang untuk itu, itu akan mengatakan itu selesai dengan sukses, meskipun jelas keluar hanya dengan sebagian kecil dari baris yang diimpor ... ini dengan dump, ingatlah.


sumber
2

Perintah satu-liner untuk mengembalikan SQL yang dihasilkan mysqldump

mysql -u <username> -p<password> -e "source <path to sql file>;"
Jossef Harush
sumber
1
misalnyamysql -u root -p12345678 -e "source /tmp/backup.sql;"
Jossef Harush
Jangan gunakan kata sandi seperti ini, cukup gunakan -p dan baris perintah akan meminta Anda meminta kata sandi yang aman setelah Anda menekan enter.
user2473015
Ketika Anda dapat membeli prompt interaktif, Anda benar. Ketika Anda tidak bisa (mis. Naskah tanpa pengawasan) Anda mungkin akan menggunakannya sebaris
Jossef Harush
1

Anda juga dapat menggunakan menu pemulihan di Administrator MySQL. Anda hanya perlu membuka file cadangan, lalu klik tombol restore.

pengguna26087
sumber
0

Cara Mengembalikan Database MySQL dengan MySQLWorkbench

Anda bisa menjalankan drop dan membuat perintah di tab kueri.

Jatuhkan Skema jika Saat Ini Ada

DROP DATABASE `your_db_name`;

Buat Skema Baru

CREATE SCHEMA `your_db_name`;

Buka File Dump Anda

File sql terbuka MySQLWorkbench

  1. Klik Buka skrip SQL di ikon tab kueri baru dan pilih file db dump Anda.
  2. Kemudian Klik Jalankan SQL Script ...
  3. Kemudian Anda dapat melihat pratinjau baris pertama skrip dump SQL.
  4. Anda kemudian akan memilih Nama Skema Default
  5. Selanjutnya pilih Default Character Set utf8 biasanya merupakan taruhan yang aman, tetapi Anda mungkin dapat membedakannya dari melihat garis pratinjau untuk sesuatu seperti character_set .
  6. Klik Jalankan
  7. Bersabarlah untuk skrip pemulihan DB yang besar dan perhatikan ruang drive Anda mencair! 🎉
CTS_AE
sumber
0

Dengan asumsi Anda sudah memiliki database kosong yang dibuat, Anda juga dapat mengembalikan database dari baris perintah seperti ini:

sudo mysql databasename < backup.sql
Suragch
sumber