Bir döküm dosyasını mysqldump'tan nasıl geri yüklerim?


544

Windows Server 2008 makinemde veritabanı olarak geri yüklemem gereken bir MySQL veritabanı dosyası verildi.

MySQL Administrator'ı kullanmayı denedim, ancak aşağıdaki hatayı aldım:

Seçilen dosya mysqldump tarafından oluşturuldu ve bu uygulama tarafından geri yüklenemez.

Bunu nasıl çalıştırabilirim?

Yanıtlar:


587

Bunu çalıştırmak kadar basit olmalı:

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

Döküm tek bir veritabanındaysa, dosyanın üstüne bir satır eklemeniz gerekebilir:

USE <database-name-here>;

Birçok veritabanının bir dökümü ise, kullanım ifadeleri zaten oradadır.

Bu komutları çalıştırmak için, bir komut istemi açın (Windows'ta) ve yürütülebilir dosyanın cdbulunduğu dizine mysql.exe(bunun için biraz etrafa bakmanız gerekebilir, mysql'yi nasıl yüklediğinize bağlı olacaktır, yani bağımsız veya WAMP gibi bir paket). Bu dizine girdikten sonra, komutu yukarıdaki gibi yazabilmeniz gerekir.


1
"MySQL Komut Satırı İstemcisi" ni kullanabilir miyim? Daha önce hiç MySQL kullanmadım.
Zack Peterson

1
Döküm dosyasını bir metin düzenleyicisinde açın, seçim yapmak oldukça kolaydır, eğer herhangi bir "using" ifadesi varsa, o zaman birden fazla veritabanının, eğer yoksa, yapabilmeniz için önce bir tane eklemeniz gerekir bu komutu çalıştırın.
Justin Bennett

6
Tabii ki "using" deyimine koyduğunuz veritabanının önce var olması gerekir.
Justin Bennett

112
vogs cevabına bakınız. Sözdizimi dosyanın başında mysql -u<user> -p mydatabasename < db_backup.dump bir USEifadeye gerek yoktur
Toskan

1
"Döküm dosyasını bir metin düzenleyicide aç" önerisi garip görünüyor. Bu, küçük veritabanları veya EditPad gibi arabelleğe alınmış bir metin düzenleyici ile çalışabilir, ancak diğer her şeyle boğulur. Bu adımı atmak zorunda kalmazsan iyi olur.
mikato

718

Geri yüklemek istediğiniz veritabanı zaten yoksa, önce oluşturmanız gerekir.

Komut satırında, döküm dosyasını içeren aynı dizindeyseniz, aşağıdaki komutları kullanın (uygun değişikliklerle):

C:\> mysql -u root -p

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

52
Şahsen bu yöntemi seviyorum. dökümün ilerlemesini ve aynı zamanda farklı sql'nin ne kadar zaman aldığını gösterir.
ToughPal

11
@Phrogz Aslında komut satırında mysql -u root -psecret boşluk olmadan parola sağlayabilirsiniz , ancak parolanızın işlem listelerinde ve günlük dosyalarında açık metin olarak gösterilmesi dezavantajına sahiptir. Önerdiğiniz gibi, boş kullanmak -pve bilgi istemine yazmak daha iyidir .
Joe Holloway

Bu yöntem, oturum tabanlı değişkenlerin (örn. FOREIGN_KEY_CHECKS) döküm dosyasını düzenlemek zorunda kalmadan ayarlanmasına izin verme avantajına sahiptir
Chris Cooper

elle bu tür bir şey yaparken bu iyi ve harika, ama bir bash komut dosyası çalışmaz.
chacham15

1
Tek dezavantajı: gzipli çöplüğü yükleyemez (örn. İle üretilir mysqldump db | gzip -9 > dumpfile.sql.gz)
Marinos

246

Bunu çalıştırmanız yeterlidir:

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

Döküm birden çok veritabanı içeriyorsa, veritabanı adını atlamanız gerekir:

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

Bu komutları çalıştırmak için, bir komut istemi açın (Windows'ta) ve yürütülebilir dosyanın cdbulunduğu dizine mysql.exe(bunun için biraz etrafa bakmanız gerekebilir, mysql'yi nasıl yüklediğinize bağlı olacaktır, yani bağımsız veya WAMP gibi bir paket). Bu dizine girdikten sonra, sadece komutu yazabilmeniz gerekir.



33

İle bir döküm dosyası yaptığımızda mysqldump, içerdiği şey, veritabanı içeriğini yeniden oluşturmak için büyük bir SQL betiğidir. Bu yüzden MySQL'in komut satırı istemcisini başlatarak geri yüklüyoruz:

mysql -uroot -p 

( rootMySQL için yönetici kullanıcı adımız nerede ) ve veritabanına bağlandıktan sonra veritabanını oluşturmak ve dosyayı okumak için komutlara ihtiyacımız var:

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

Ayrıntılar döküm dosyasını oluştururken hangi seçeneklerin kullanıldığına göre değişir.


19

DB'ye girmek için komutu çalıştırın

 # mysql -u root -p 

Kullanıcı için parolayı girin ve ardından Yeni DB oluşturun

mysql> create database MynewDB;
mysql> exit

Ve çıkış yapın.

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

Sonra db'ye girin ve yazın

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

İşte ........ Çöplüğü bir DB'den başka bir DB'ye geri yüklenecek

Ya da döküm geri yükleme için alternatif bir yol var

# mysql -u root -p 

Sonra db'ye girin ve yazın

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

14

Bu adımları izleyerek işe başladım…

  1. MySQL Yöneticisini açın ve sunucuya bağlanın

  2. Sol taraftaki "Kataloglar" ı seçin

  3. Sol alt kutuya sağ tıklayın ve "Yeni Şema Oluştur" u seçin

    MySQL Yöneticisi http://img204.imageshack.us/img204/7528/adminsx9.th.gif resmi büyüt

  4. Yeni şemayı adlandırın (örnek: "dbn")

    MySQL Yeni Şeması http://img262.imageshack.us/img262/4374/newwa4.th.gif Resmi büyüt

  5. Windows Komut İstemi'ni (cmd) açın

    Windows Komut İstemi http://img206.imageshack.us/img206/941/startef7.th.gif resmi büyüt

  6. Dizini MySQL kurulum klasörüne değiştirme

  7. Komutu çalıştır:

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

    … Burada "root" kullanıcının adı, "dbn" veritabanı adı ve "C: \ dbn_20080912.dump" mysqldump .dump dosyasının yolu / dosya adıdır

    MySQL döküm geri yükleme komut satırı http://img388.imageshack.us/img388/2489/cmdjx0.th.gif Resmi büyüt

  8. Zevk almak!


12

Sql / dump dosyalarını içe aktarmak için SQLyog 'SQL betiğini yürüt' aracını deneyebilirsiniz .

resim açıklamasını buraya girin


11

Dökümün ilerlemesini görüntülemek istiyorsanız şunu deneyin:

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

Tabii ki 'pv' kurulu olmalı. Bu komut yalnızca * nix üzerinde çalışır.


10

Önceki bir cevabın özel bir örneği olarak:

Bir yedeklemeyi geri yüklemem gerekiyordu, böylece SQL Server'a alabilirim / taşıyabilirim. Yalnızca MySql'i yükledim, ancak bir hizmet olarak kaydetmedim veya çalışma yoluma ihtiyaç duymadığım için yoluma eklemedim.

Döküm dosyamı C: \ code \ dump.sql dosyasına koymak için Windows Gezgini'ni kullandım. Daha sonra başlat menüsü öğesinden MySql'i açın. DB oluşturuldu, sonra source komutunu tam yolla şöyle çalıştırdı:

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

9

Mysql 5.5 w / Windows üzerinde geri yüklemek için Linux üzerinde oluşturulan bir 200 MB dökümü dosyası kullanarak,

source file.sql

mysql isteminden yaklaşım

mysql  < file.sql

bazı hata 2006 "sunucu gitti" neden komut satırında yaklaşım (Windows)

Garip bir şekilde, (mysql) yüklemesi sırasında oluşturulan hizmet, var olmayan bir my.ini dosyasına başvurur. Önerilen büyük artışlarla zaten değiştirmiş olduğum "büyük" örnek dosyasını my.ini dosyasına kopyaladım.

Değerlerim

[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

Bu, diğer birkaç cevapla aynıdır ve bu sekiz yıllık bir sorudur.
miken32

2
Seçilen cevap çok iyi olmasına rağmen, bu cevap aslında benim için daha yararlı oldu. Benim veritabanı dosyası BÜYÜK ve Notepad ++ ile açmak bir kabus oldu, sadece boyutu işleyemedi ve sql dosyasının üstüne veritabanı adını eklememe izin vermedi. Bu durumda, komut satırından db adını belirleyebilmek aslında daha yararlı olur.
Najeeb

mysqlKomut seçenekleri ve bunların argümanları arasında boşluk kabul etmez. Bunun -u<username>yerine, parola komut satırında verilmemelidir.
Roland Illig

4

Yedekleme / dökümü oradan oluşturulmamışsa MySQL Yöneticisi'nde Geri Yükle menüsünü kullanamazsınız. Yine de denemeye değer. Bunun için onay kutusuyla "hataları yoksay" seçeneğini belirlerseniz, başarılı bir şekilde tamamlandığını söyleyecektir, ancak içe aktarılan satırların yalnızca bir kısmı ile açıkça çıkılıyor olsa da, bu bir dökümü ile, unutmayın.


2

Oluşturulan SQL'i geri yüklemek için tek satırlık komut mysqldump

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

1
ör.mysql -u root -p12345678 -e "source /tmp/backup.sql;"
Jossef Harush

Parolayı böyle kullanmayın, sadece -p kullanın ve komut satırı enter tuşuna bastıktan sonra güvenli bir parola isteğinde bulunmanızı sağlar.
user2473015

Etkileşimli komut istemi alabildiğinizde haklısınız.
Yapamadığınızda

1

MySQL Yöneticisi içindeki geri yükleme menüsünü de kullanabilirsiniz. Yedek dosyasını açmanız ve ardından geri yükle düğmesini tıklamanız yeterlidir.


0

MySQL Veritabanı MySQLWorkbench ile Geri Yükleme

Bırakmayı çalıştırabilir ve bir sorgu sekmesinde komutlar oluşturabilirsiniz.

Şuan Varsa Şemayı Bırakın

DROP DATABASE `your_db_name`;

Yeni Şema Oluşturma

CREATE SCHEMA `your_db_name`;

Döküm Dosyanızı Açın

MySQLWorkbench açık sql dosyası

  1. Click yeni sorgu sekmede açın bir SQL komut dosyası simgesi ve db döküm dosyası seçin.
  2. Ardından SQL Komut Dosyasını Çalıştır ... seçeneğini tıklayın .
  3. Daha sonra SQL döküm komut dosyasının ilk satırlarını önizlemenize izin verir.
  4. Daha sonra Varsayılan Şema Adı'nı seçeceksiniz
  5. Sonra Varsayılan Karakter Kümesini seçin utf8 normalde güvenli bir bahistir, ancak character_set gibi bir şey için önizleme satırlarına bakmasını fark edebilirsiniz. .
  6. Çalıştır'ı tıklayın
  7. Büyük DB geri yükleme komut dosyalarına karşı sabırlı olun ve sürücü alanınız eridikçe izleyin! 🎉

0

Boş veritabanının zaten oluşturulduğunu varsayarsak, komut satırından şu şekilde bir veritabanını geri yükleyebilirsiniz:

sudo mysql databasename < backup.sql
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.