2010-02-26 11 views
52

Tek bir veritabanını --all veritabanları mysqldump'tan almak mümkün mü? Sanırım dosyayı el ile değiştirebilirim ancak bunu yapmak için herhangi bir komut satırı seçeneğinin olup olmadığını merak edebilirim.Tek veritabanını --all veritabanları dökümünden içe aktar

Sunucuları taşıyorum ve şu anda ihtiyaç duymadığım veya şu anda istemediğim, ancak gerekirse tek bir seçeneği geri yükleme seçeneğine sahip olmak istediğim birçok veritabanına sahibim.

cevap

70

mysqldump çıktı yalnızca SQL ifadelerin bir kümesidir.

komut satırında istenen veritabanını sağlamak ve kullanan diğer veritabanları karşı komutları atlayabilirsiniz:

+0

Teşekkür! Muhteşem. – savageguy

+2

Benim için çok yararlı, Teşekkürler! Eğer yabancı anahtarların hatalarını önlemek için --Disable-tuşları ekleyebilirsiniz;) mysql -u user -D --disable-keys veritabanı -o davidselo

+15

Bu cevap çok pervasız ve inanılmaz derecede tehlikelidir. Eğer mysqldump --all-databases 'i çalıştırırsanız, mysqldump çıkışı' DROP DATABASE EXISTS dbname; DATABASE dbname CREATE; MySQL örneğindeki mysql şema dahil her veritabanı için dbname; Lütfen mysqldump belgelerine bakın: http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html#option_mysqldump_all-databases. Yani her veritabanı acımasızca üzerine yazılacak demektir. Tüm veritabanını atlayacağına dair kanıt sağlayabilir misiniz ama bir ??? Not: Bunu mysqlbinlog kullanarak ikili günlüklere yapabilirdiniz. – RolandoMySQLDBA

48

kullanabilirsiniz mydatabase kullanımda iken

mysql -D mydatabase -o < dump.sql 

Bu yalnızca komutları çalıştırır komutunun ardından:

mysql -u root -p --one-database destdbname < alldatabases.sql 

destdbname geri yüklemek istediğiniz istediğiniz veritabanı.

IMHO daha güvenli olan başka bir seçenek de DB'yi --all-databases dökümünden ayıklamaktır. Örnek:

sed -n '/^-- Current Database: `dbname`/,/^-- Current Database: `/p' alldatabases.sql > output.sql 

istenen veritabanı adıyla dbname değiştirin. alldatabases.sql, sql-dump dosyanızın adıdır. Böylece dosyada ayrılmış DB'ye sahip olacaksınız ve sonra basit bir mysql komutu kullanarak geri yükleyebilirsiniz.

İyi şanslar

(Kredi gider: Darren Mothersele - his page bakınız) hızlı yanıt için

+2

Harika çözüm! Bu, bazı hatalardan kaçınmak için orijinal dökümü başlığını eklemem gerektiğini söyledi ... – neuro

İlgili konular