mysqldump vs mysqlpump


17

Sadece mysqlpump'ı duydum - MySQL 5.7 ile piyasaya sürülmüş gibi görünüyor, ancak MySQL 5.7 hala mysqldump içeriyor . İkisi de yedekleme programıdır, ancak ana farkları özetleyen var mı? Birinin daha iyi çalışabileceği senaryolar var mı? Mysqldump mysqlpump için aşamalı olarak kaldırılacak mı?


Bu, iki benzer aracı neredeyse aynı şekilde adlandırmak anlamına gelir.
Erik

Bir "gibi @Erik görünüyor p arallel d ump " ve olabilir pompa veri daha hızlı .. ama aksi kabul ediyorum.
jkavalik

1
Ayrıca ilginizi çekebilir MyDumper . Görünüşe göre mysqlpump birkaç fikir aldı - kötü bir şey değil, çünkü proje bir yıldan fazla
sürmedi

Bazı performans testlerini görmek isterim!
Ryan Foley

XtradbBackup başka bir ciddi rakip.
Rick James

Yanıtlar:


16

Bunu kendim araştırmaya başladığımdan beri, bulduğum şeyin bir özeti.

Göre MySQL dev ekibinden bir 2015 blog post , mysqlpump başlıca avantajı damping ve daha da kapıyı açmak gerekir değil payı mysqldump en geriye dönük uyumluluk gerekliliklerini, yaptığı hızlandırmak için paralel olarak birden konuları kullanabileceği vardır iyileştirmeler.

Ancak, mesaj mysqlpump "şu anda genel amaçlı bir yedek yedek olarak güvenli değil" uyarılar çünkü tek tek iş parçacıkları kendi bölümlerini veritabanının farklı durumlarından üretebilir. MySQLdump'ı kullanımdan kaldırma planlarından bahsetmiyor.

Giuseppe Maxia 2015 yılında mysqlpump ile oynadı ve damping hızının oldukça küçük olduğunu buldu. Tam olarak hangi nesnelerin boşaltılacağını seçme yeteneğini takdir etti, ancak dökümü geri yüklemenin sadece tek iş parçacıklı hale getirilebildiğini ve (mysqldump'ın aksine) dökümlerin yalnızca aynı ada sahip veritabanlarına geri yüklenebileceğini belirtti.


2
Uyarı: mysqlpumpkapalı kaynaklı yazılımdır (belirsiz gelecek). An Açık Kaynak alternatif mysqlpumpolan github.com/maxbube/mydumper mydumper
Ivanov

12

Ayrıca bu iki yardımcı program arasındaki farkları inceliyordum ve @ Neil'in cevabında belirtilenlere ek olarak , mysqlpump'ın mysqldump'tan daha az seçeneğe sahip olduğu gibi aşağıdakilere izin vermiyor gibi görünüyor :

  • --compatible=
  • --tabve ilgili seçenekleri:
    • --fields-terminated-by=
    • --fields-enclosed-by=
    • --fields-optionally-enclosed-by=
    • --fields-escaped-by=
    • --lines-terminated-by=
  • --quote-names
  • --add-drop-trigger
  • --allow-keywords
  • --apply-slave-statements
  • --comments
  • --compact
  • --compatible
  • --create-options
  • --delete-master-logs
  • --disable-keys
  • --dump-date
  • --dump-slave
  • --enable-cleartext-plugin
  • --flush-logs
  • --flush-privileges
  • --force
  • --ignore-error
  • --include-master-host-port
  • --lock-all-tables
  • --lock-tables
  • --master-data
  • --no-autocommit
  • --no-tablespaces
  • --opt
  • --order-by-primary
  • --pipe
  • --quick
  • --quote-names
  • --set-gtid-purged
  • --shared-memory-base-name
  • --skip-add-drop-table
  • --skip-add-locks
  • --skip-comments
  • --skip-compact
  • --skip-disable-keys
  • --skip-extended-insert
  • --skip-opt
  • --skip-quick
  • --skip-quote-names
  • --skip-triggers
  • --skip-tz-utc
  • --verbose
  • --where
  • --xml

Öte yandan, mysqlpump , mysqldump'ta bulunmayan şu seçeneklere sahiptir

  • --compress-output
  • --default-parallelism
  • --defer-table-indexes
  • --exclude-databases=
  • --exclude-events=
  • --exclude-routines=
  • --exclude-triggers=
  • --exclude-users=
  • --include-events=
  • --include-routines=
  • --include-triggers=
  • --include-users=
  • --parallel-schemas=
  • --skip-definer
  • --users
  • --watch-progress

Yeniden adlandırılmış veya benzeri:

  • --no-dataiçinde dökümü == --skip-dump-rowsiçinde pompa
  • --no-set-namesiçinde dökümü var olmayan pompa , ama onun eşanlamlı - --skip-set-charset- hem var
  • --ignore-table=içinde dökümü çoğunlukla --exclude-tables=içinde pompa hariç --exclude-tablesvirgülle ayırarak tüm tabloları, belirleyebilir ve joker karakterler için izin verir ( %ve _)
  • --tablesiçinde dökümü çoğunlukla --include-tables=içinde pompa hariç --include-tablesvirgülle ayırarak tüm tabloları, belirleyebilir ve joker karakterler (sağlar %ve _). Ayrıca, --tablesgeçersiz kılar --databasesiçinde dökümü , oysa --include-tables=içinde pompa değildir.
  • --databaseshem dökümü ve pompa çoğunlukla --include-databases=içinde pompa hariç --include-databasesvirgülle ayırarak tüm veritabanlarını, belirleyebilir ve joker karakterler (sağlar %ve _).

3

İşte her iki yedekleme aracı arasında anladıklarımın özeti.

Manuel sayfada verilen mysqldump tanımı

Mysqldump istemci yardımcı programı, mantıksal yedeklemeler gerçekleştirerek özgün veritabanı nesnesi tanımlarını ve tablo verilerini yeniden oluşturmak için yürütülebilen bir SQL ifadeleri kümesi üretir. Yedekleme için bir veya daha fazla MySQL veritabanını döker veya başka bir SQL sunucusuna aktarır. Mysqldump komutu ayrıca CSV, diğer ayrılmış metin veya XML biçiminde çıktı oluşturabilir.

Mysqldump'ın kullanımı çok kolaydır ve sözdizimi de çok basittir. Bunu yürüttüğümüzde, tüm satırları SQL sorgularına dönüştürür ve bunu standart çıktıda yazdırır. Bu çıktıyı bir dış dosyaya (>) veya bir seçenek - sonuç dosyası kullanarak yönlendirebiliriz.

Varsayılan olarak, mysqldump, information_schema tablolarını dökmez ve asla performance_schema almaz. MySQLdump'ın en büyük dezavantajı, yedekleme ve geri yükleme sırasında yalnızca bir iş parçacığı kullanmasıdır.

Mysqlpump, MySQL 5.7'de mysqldump ile karşılaştırıldığında birkaç özellik daha tanıtılan başka bir yardımcı programdır

Manuel sayfada verilen mysqlpump tanımı

Mysqlpump istemci yardımcı programı, mantıksal yedeklemeler gerçekleştirerek özgün veritabanı nesnesi tanımlarını ve tablo verilerini çoğaltmak için yürütülebilen bir SQL ifadeleri kümesi üretir. Yedekleme için bir veya daha fazla MySQL veritabanını döker veya başka bir SQL sunucusuna aktarır.

Başlıca özellikleri

  • Yedeklemeyi hızlandırmak için paralel işleme (çok iş parçacıklı)

  • Ilerleme göstergesi

  • Kullanıcı hesaplarının dökümü (MySQL sistem veritabanı için ek olarak değil ifadeler oluştur)

Varsayılan olarak, mysqlpump, açıkça belirtilmedikçe, bilgi şeması, performans şeması ve bazı MySQL sistem tabloları gibi sistem veritabanlarının yedeğini almaz.

Ayrıca, desen eşleşmesi (%) içeren –include-veritabanı, –exclude-veritabanı, –include-tablosu, –exclude-tablosu seçenekleri vardır.

Bu seçenekler, tüm veri kümesindeki yalnızca birkaç nesneyi yedeklemek isteyen kullanıcılar için daha uygundur.

Genel olarak, mysqlpump çalışmalarını parçalara böler ve her biri çok iş parçacıklı bir kuyruğa atanır.

  • Bu çok iş parçacıklı kuyruk N iş parçacıkları tarafından işlenir (Varsayılan olarak 2 iş parçacığı kullanır).

  • Bu seçeneği - varsayılan paralellik ve paralel paralel şemalar kullanarak tanımlayabiliriz.

  • Restorasyon yaparken, mysqldump ile aynı olan tek bir iplik kullanır, paralel geri yüklemeden yoksundur.

Bir eklenti olarak, mydumper ve myloader adı verilen hem yedekleme hem de restorasyonda (mysqlpump ve mysqldump'ın bulunmadığı) paralelleştirme yapan bir aracımız daha var . Bu, büyük veri kümelerini geri yüklerken büyük ölçüde kullanılacaktır.

Bu blogda mysqldump vs mysqlpump vs mydumper hakkında daha fazla ayrıntı ve bu aracın kullanışlı seçeneklerini bulabilirsiniz .

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.