Saya baru saja mendengar tentang mysqlpump - sepertinya dirilis dengan MySQL 5.7, namun MySQL 5.7 masih menyertakan mysqldump . Keduanya merupakan program cadangan, tetapi adakah yang bisa meringkas perbedaan utama? Apakah ada skenario di mana salah satu dari mereka mungkin bekerja lebih baik? Apakah mysqldump akan dihapus untuk mysqlpump?
17
Jawaban:
Karena saya sendiri sedang meneliti ini, inilah ringkasan dari apa yang saya temukan.
Menurut posting blog 2015 dari tim MySQL dev , keuntungan utama dari mysqlpump adalah dapat menggunakan banyak utas secara paralel untuk mempercepat dumping dan tidak berbagi persyaratan kompatibilitas mundur mysqldump, yang seharusnya membuka pintu untuk lebih jauh perbaikan.
Namun, pos tersebut memperingatkan bahwa mysqlpump "saat ini tidak aman sebagai pengganti cadangan tujuan umum" karena setiap utas dapat menghasilkan bagian-bagian dump dari bagian database yang berbeda. Tidak disebutkan rencana untuk menghentikan mysqldump.
Giuseppe Maxia bermain-main dengan mysqlpump pada tahun 2015 dan menemukan kecepatan dumping cukup kecil. Dia menghargai kemampuan baru untuk memilih objek mana yang akan dibuang, tetapi mencatat bahwa memuat kembali dump hanya dapat dilakukan satu-threaded dan bahwa (tidak seperti mysqldump) dump hanya dapat dimuat kembali ke dalam database dengan nama yang sama.
sumber
mysqlpump
adalah perangkat lunak sumber tertutup (tidak pasti di masa depan). Alternatif Sumber Terbukamysqlpump
adalah github.com/maxbube/mydumpermydumper
Saya juga telah melihat perbedaan antara kedua utilitas ini, dan selain apa yang disebutkan dalam jawaban @ Neil , tampaknya mysqlpump juga memiliki lebih sedikit opsi daripada mysqldump , seperti tidak mengizinkan hal-hal berikut:
--compatible=
--tab
, dan opsi terkait:--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
Di sisi lain, mysqlpump memiliki opsi berikut yang tidak tersedia di mysqldump
--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
Berganti nama atau serupa:
--no-data
dalam dump ==--skip-dump-rows
dalam pompa--no-set-names
di dump tidak ada di pompa , tetapi sinonimnya ---skip-set-charset
- ada di keduanya--ignore-table=
di dump sebagian besar--exclude-tables=
di pompa kecuali--exclude-tables
dapat menentukan semua tabel, dipisahkan oleh koma, dan memungkinkan untuk karakter wildcard (%
dan_
)--tables
di dump sebagian besar--include-tables=
di pompa kecuali--include-tables
dapat menentukan semua tabel, dipisahkan oleh koma, dan memungkinkan untuk karakter wildcard (%
dan_
). Juga,--tables
menimpa--databases
di dump , sedangkan--include-tables=
di pompa tidak.--databases
di dump dan pump sebagian besar--include-databases=
di pump kecuali--include-databases
dapat menentukan semua database, dipisahkan dengan koma, dan memungkinkan untuk karakter wildcard (%
dan_
).sumber
Berikut ini ringkasan dari apa yang saya pahami antara kedua alat cadangan.
Definisi untuk mysqldump diberikan di halaman manual
Mysqldump sangat mudah digunakan dan sintaksisnya juga sangat sederhana. Ketika kami menjalankan ini, itu mengkonversi semua baris ke query SQL dan mencetaknya dalam output standar. Kami dapat mengarahkan output ini ke file outfile (>) atau menggunakan opsi - file hasil.
Secara default, mysqldump tidak membuang tabel information_schema dan tidak pernah menggunakan performance_schema. Kelemahan utama mysqldump adalah hanya menggunakan satu utas saat mengambil cadangan dan memulihkan.
Mysqlpump adalah utilitas lain yang diperkenalkan di MySQL 5.7 dengan beberapa fitur lebih banyak jika dibandingkan dengan mysqldump
Definisi untuk mysqlpump diberikan di halaman manual
Fitur utamanya adalah
Pemrosesan paralel (multi-threaded) untuk mempercepat cadangan
Indikator Kemajuan
Membuang akun pengguna sebagai (buat, berikan pernyataan bukan sebagai sisipan untuk basis data sistem MySQL)
Secara default, mysqlpump tidak mengambil cadangan dari basis data sistem seperti skema informasi, skema kinerja, dan beberapa tabel sistem MySQL kecuali disebutkan secara eksplisit.
Ini juga memiliki opsi – sertakan-database, –exclude-database, –include-table, –exclude-table dengan pencocokan pola (%).
Opsi ini lebih nyaman bagi pengguna yang ingin membuat cadangan hanya beberapa objek dari seluruh dataset.
Secara umum, mysqlpump membagi pekerjaannya menjadi potongan-potongan dan masing-masing ditugaskan ke antrian multi-threaded.
Antrian multithreaded ini diproses oleh N utas (Secara default menggunakan 2 utas).
Kita dapat mendefinisikan sejumlah utas dengan menggunakan opsi ini - default-paralelisme dan - skema paralel.
saat restorasi, ia menggunakan satu utas yang sama dengan mysqldump, ia tidak memiliki pemulihan paralel.
Sebagai tambahan, kami memiliki satu alat lagi yang melakukan paralelisasi dalam cadangan dan pemulihan (di mana kekurangan mysqlpump dan mysqldump) yang disebut mydumper dan myloader . Ini akan sangat digunakan saat memulihkan kumpulan data besar.
Anda dapat menemukan beberapa detail lebih lanjut dan opsi yang berguna dari alat ini di blog ini mysqldump vs mysqlpump vs mydumper .
sumber