Apa perbedaan antara XtraBackup dan rsync?

11

Ya, saya akan menjalankan strace pada mereka berdua ... Namun, saya ingin tahu ...

  • Apa yang sedang dilakukan XtraBackup berulang-ulang di atas rsync -ac src dest?
  • Apa yang istimewa dari XtraBbackup?
  • Bagaimana XtraBackup berinteraksi dengan mysqld?
randomx
sumber
1
Ini adalah salah satu dari pertanyaan "Saya mendengar tentang XtraBackup tapi saya takut untuk bertanya". Saya suka jenis pertanyaan ini !!! +1 !!!
RolandoMySQLDBA
1
@RolandoMySQLDBA: Saya suka memancing pemikiran dan membuat orang lain berbagi pengetahuan. Begitulah cara kita menjadi lebih baik, bukan? Menjadi Lone Ranger tidak terlalu menyenangkan. :-)
randomx

Jawaban:

16

rsync hanyalah salinan data byte-demi-byte yang kasar dari satu tempat ke tempat lain. Anda harus melakukan banyak rsync hingga rsync terakhir, yang sangat cepat. Kemudian, Anda akan melakukan shutdown penuh MySQL dan melakukan satu rsync lagi.

XtraBackup adalah alat komprehensif yang berperilaku seperti rsync tetapi memiliki tujuan hidup. Itu bisa mulai menyalin semua data dan tablespace InnoDB. Ia memiliki kemampuan untuk membuat pos pemeriksaan secara internal dan melakukan in-place recovery crash InnoDB untuk membantu mendapatkan cadangan point-in-time yang sempurna. XtraBackup juga memiliki fitur tambahan yang memungkinkan untuk membuat cadangan tambahan. Fitur tambahan lainnya adalah pembuatan file log InnoDB, juga dibangun oleh pemulihan kerusakan di tempat. Ada juga beberapa perangkat lunak pembungkus untuk menyediakan salinan beku dari tabel MyISAM juga.

Kedua metode itu hebat. XtraBackup hanya mengimplementasikan fitur transaksional InnoDB ke dalam sebagian besar penyalinan awal. Xtrabackup membuat file yang dapat jatuh ke infrastruktur MySQL yang sudah mapan. Wajar untuk mengatakan, XtraBackup menyediakan cadangan instrumental dan terwujud, file InnoDB sangat berguna.

Menggunakan rsync memaksa Anda untuk mengelola proses penyalinan beberapa kali dan menutupnya dengan shutdown mysql untuk memerlukan satu intervensi rsync.

Menggunakan salah satu dari yang lain mungkin merupakan pilihan pribadi. Satu hal yang harus diakui: XtraBackup membuat cadangan yang sedikit lebih besar dari data yang disalin. Saya menyerahkan pilihan metode kepada pembaca pertanyaan ini.

Saya lebih suka rsync karena memiliki kesederhanaan penggunaan, saya dapat menentukan titik waktu tertentu sebelum proses dimulai, saya juga memiliki kontrol total untuk mengunci mysqld atau mematikannya, ketika kontrol tersebut dapat dilakukan, dan dalam urutan apa pun yang saya tetapkan .

Kedua gaya cadangan memiliki satu kesamaan : Dengan XtraBackup, titik waktu aktual adalah target bergerak hingga proses pencadangan selesai dan Anda harus mempercayai XtraBackup (sekitar 200.000 unduhan sejauh ini. Facebook adalah salah satu pengguna terbesar Ini telah mendapatkan banyak kepercayaan). Dengan kata lain, jika saya memulai XtraBackup pada tengah malam dan cadangan berlangsung hingga 2:20, maka titik waktu pencadangan sebenarnya adalah 2:20. Menggunakan rsync memiliki masalah target bergerak yang sama karena Anda harus melakukan beberapa rsyncs secara manual dan kemudian menentukan kapan harus mengeluarkan 'layanan mysql berhenti' sebelum rsync akhir.

Metode ini berbeda karena mysqld harus dimatikan menggunakan metode rsync, sedangkan XtraBackup bertindak secara independen dari mysqld. Bahkan, XtraBackup tidak berinteraksi dengan mysqld sama sekali, kecuali ketika berhadapan dengan tabel MyISAM melalui perangkat lunak pembungkus. XtraBackup mencoba membangun data InnoDB yang berfungsi penuh dan mencatat file menggunakan operasi mesin penyimpanan InnoDB terpisah dan berbeda dari mysqld.

Mematikan mysql sangat diperlukan untuk metode rsync karena alasan yang sangat besar: Pool Buffer InnoDB dapat menampung "halaman kotor", yang merupakan halaman data dan indeks (1 Halaman = 16KB) yang belum ditulis kembali ke disk. Menggunakan rsync tidak menangkap perubahan data yang tertunda di InnoDB Buffer Pool. Untuk mempercepat shutdown mysqld untuk rsync terakhir, silakan jalankan perintah ini:

SET GLOBAL innodb_max_dirty_pages_pct = 0;

Perintah ini akan menjaga jumlah halaman kotor ke minimum. Perintah ini harus dijalankan sekitar satu jam sebelum Anda melakukan metode cadangan rsync. Ini bahkan mungkin membantu XtraBackup juga meskipun XtraBackup tidak memerlukan shutdown mysql.

RolandoMySQLDBA
sumber