Bagaimana cara meningkatkan cadangan cepat dan memulihkan database 500GB menggunakan mysqldump?

10

Ada database ukuran 500GB. Tabel dalam database A berisi tabel MyISAM dan INNODB. Tabel MyISAM adalah tabel master dan tabel Innodb adalah tabel transaksi utama.

Cadangkan dan pulihkan menggunakan dump mysql, berhentilah lama atau berhari-hari.

  • max_allowed_packet = 1G
  • foreign_key_checks = 0
  • auto_commit = off
Martin
sumber
1
Saya hanya ingin memastikan Anda menggunakan --opt dengan utilitas mysqldump. Ini adalah penghemat waktu BESAR saat memuat ulang. tanpa itu mysqldump membuat file sql baris demi baris. --opt tidak: Menambahkan kunci, jatuhkan dan buat kembali dengan semua opsi buat diaktifkan, untuk sementara menonaktifkan kunci untuk memuat ulang cepat dan kemudian nyalakan kembali kunci di akhir untuk membangun kembali indeks setelah penulisan selesai. Ini menggabungkan beberapa baris bersama dalam sisipan untuk mengurangi filesize DAN waktu parsing dari setiap pernyataan (hingga 70%) dan memungkinkan --quick untuk mengurangi beban terhadap DB dumping ketika berjalan. mengurangi waktu muat hingga 80%
ppostma1

Jawaban:

5

Tetapi tautan tersebut juga merekomendasikan XtraBackup dari Percona, yang lebih cepat, tidak ada kunci pada tabel yang sudah digunakan dan tidak ada waktu untuk pemulihan. Untuk data 500GB saya lebih suka Percona XtraBackup lebih cepat dan efisien kecuali jika Anda ingin mengubahnya menjadi model innodb_file_per_table jika bukan dari server DB yang ada. Tautan di bawah ini menjelaskan cara melanjutkan.

http://www.percona.com/doc/percona-xtrabackup/innobackupex/creating_a_backup_ibk.html

Mannoj
sumber
1
Masalah dengan Percona Xtrabackup adalah bahwa mysqld perlu dihentikan untuk memulihkan database.
dr_
2

Lihat mydumper. Ini jauh lebih cepat daripada mysqldump: Rilis mydumper 0.6.1 baru menawarkan fitur kinerja dan kegunaan

Anda dapat mengunduh dari sini: https://github.com/maxbube/mydumper

Apa itu mydumper? Mengapa?

  • Paralelisme (karenanya, kecepatan) dan kinerja (menghindari rutinitas konversi karakter yang mahal, keseluruhan kode efisien)
  • Lebih mudah mengelola keluaran (pisahkan file untuk tabel, dump metadata, dll, mudah dilihat / parsing data)
  • Konsistensi - mempertahankan snapshot di semua utas, menyediakan posisi log master dan slave yang akurat, dll
  • Manageability - mendukung PCRE untuk menentukan basis data dan tabel inklusi dan pengecualian
Silas Palmer
sumber
1

Saya pikir pertanyaannya adalah tentang cara mengembalikan lebih cepat dari file dump yang dikosongkan mysqldump dan bukan solusi cadangan yang berbeda.

Salah satu cara, Anda dapat melakukan ini adalah dengan membuat grup tabel di skema Anda dan membuat pengguna DB terpisah untuk setiap grup dan menggunakan izin MySQL untuk tidak membiarkan tabel dimasukkan dengan menggunakan semua kecuali satu pengguna DB.

Ini adalah teknik yang terbukti, cepat, hampir paralel, tetapi tidak 100% yakin berapa lama untuk pulih dari 500G. Tapi imho, kamu butuh sesuatu yang paralel. Lihat tautan di bawah untuk contoh.

Cepat, pemulihan paralel dari SQL dumps (mysqldump) untuk MySQL

Syed
sumber
1

Coba yang berikut ini dengan innobackupex:

innobackupex --parallel=7 --rsync  /var/mysql/backup

Anda dapat mengubah nomor proses paralel yang Anda inginkan. Karena Anda menyebutkan Anda memiliki tabel myisam, parameter "rsync" akan membantu mempercepat pencadangannya.

Haluk
sumber