2010-09-23 3 views
18

Düz metin sayfalarından daha iyi (daha hızlı veya daha küçük) bir şey var mı? MySql veritabanlarını döküm için CREATE TABLE ve INSERT deyimleri? Büyük miktarda veri için oldukça verimsiz görünüyor.MySql ikili döküm formatı var mı? Ya da düz metin INSERT ifadelerinden daha iyi bir şey?

Temel veritabanı dosyalarının kopyalanabileceğini biliyorum, ancak bunların yalnızca geldikleri MySql sürümüyle çalışacaklarını varsayalım.

Bilmediğim bir araç var mı, yoksa bu eksikliğin bir nedeni var mı?

+0

Bu mysql tarafından sağlanmaz şaşırdım yapardı. İkili bir çöplük daha hızlı bir şekilde soooo olur. –

cevap

10

Bu sizin peşinde olduğunuzdan emin değil, ancak genellikle mysqldump çıktısını doğrudan gzip veya bzip2 (vb.) Olarak borularım. Stdout'a veya buna benzer bir şeye dökülmekten çok daha hızlıdır ve çıktı dosyaları, sıkıştırma sayesinde çok daha küçüktür. Eğer "taşınabilirlik" arıyorsanız

mysqldump --all-databases (other options) | gzip > mysql_dump-2010-09-23.sql.gz 

O

+1

Bunu seviyorum ve ayrıca .sql dosyalarımı sıkıştırıyorum, ancak MySql'nin neden ikili bir biçimde dışa aktarılamayacağını merak ediyorum. –

+0

evet ... Bu projeye çok yakından bakmadım, ama belki de ilginizi çekecek: http://2ze.us/ym Hala kaputun altındaki normal mysqldump'ı kullandığından şüpheleniyorum. – codekoala

+0

Görünüşe göre tablolarınız MyISAM ise, mysqlhotcopy kullanabilirsiniz: http://2ze.us/hm – codekoala

1

Bu ... gzip'lenmiş SQL daha (çok) daha fazla disk alanı tüketen pahasına --xml seçeneği ile XML dökümü de mümkündür MySQL'in toplu ekler yapmak için özel bir sözdizimine sahip olduğuna dikkat edin. the manual Gönderen:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9); 

tek operasyonda 3 satır eklemek istiyorum. Bu şekilde yükleme, aksi halde satır başına tek bir ifade ile verimsiz ve 3 INSERT ifadesinde 129 bayt yerine, bu 59 bayttır ve bu avantaj yalnızca sahip olduğunuz daha fazla satırı artırır.

5

Üzgünüz, MySQL için ikili dosya yok. Ancak MySQL'in ikili günlükleri özellikle yedekleme ve veritabanı çoğaltma amaçları için http://dev.mysql.com/doc/refman/5.5/en/binary-log.html'dur. Yapılandırılması zor değil. Sadece güncelleme ve silme gibi değişiklikler kaydedilir, böylece her günlük dosyası (MySQL tarafından oluşturulmuş) da DB'deki değişikliklerin artımlı bir yedeğidir. Bu sayede zaman zaman db'nin bir anlık görüntüsünü (ayda bir?) Kaydedebilir ve daha sonra sadece günlük dosyalarını depolayabilir ve çökme durumunda en son anlık görüntüyü geri yükleyebilir ve günlükleri çalıştırabilirsiniz.

0

Bunu hiç denemedim, ancak sabit diskteki mysql tabloları değil mi? Tablo dosyalarını kendin kopyalayamadın mı? Muhtemelen bu sizin için ne soruyorsun.

O arada dikiş bilmiyorum, ama bana bir kopyasını görünüyor/var/lib/mysql kandırmasına