Di salah satu blog kami sebelumnya, kami menjelaskan bagaimana Clone Plugin, salah satu fitur baru yang ditampilkan di MySQL 8.0.17, dapat digunakan untuk membangun kembali slave replikasi. Saat ini alat masuk untuk itu, serta untuk cadangan, adalah Xtrabackup. Menurut kami menarik untuk membandingkan cara kerja dan perilaku alat tersebut.
Membandingkan Kinerja
Hal pertama yang kami putuskan untuk diuji adalah bagaimana kinerja keduanya saat menyimpan salinan data secara lokal. Kami menggunakan instance AWS dan m5d.metal dengan dua SSD NVMe dan kami menjalankan klon ke salinan lokal:
mysql> CLONE LOCAL DATA DIRECTORY='/mnt/clone/';
Query OK, 0 rows affected (2 min 39.77 sec)
Kemudian kami menguji Xtrabackup dan membuat salinan lokal:
rm -rf /mnt/backup/ ; time xtrabackup --backup --target-dir=/mnt/backup/ --innodb-file-io-threads=8 --innodb-read-io-threads=8 --innodb-write-io-threads=8 --innodb-io-capacity=20000 --parallel=16
200120 13:12:28 completed OK!
real 2m38.407s
user 0m45.181s
sys 4m18.642s
Seperti yang Anda lihat, waktu yang diperlukan untuk menyalin data pada dasarnya sama. Dalam kedua kasus, batasannya adalah perangkat kerasnya, bukan perangkat lunaknya.
Mentransfer data ke server lain akan menjadi kasus penggunaan paling umum untuk kedua alat tersebut. Itu bisa menjadi budak yang ingin Anda sediakan atau bangun kembali. Di masa depan ini mungkin menjadi cadangan, Plugin Clone tidak memiliki fungsi seperti itu seperti sekarang, tetapi kami cukup yakin di masa depan seseorang akan memungkinkan untuk menggunakannya sebagai alat cadangan. Mengingat bahwa perangkat keras adalah batasan untuk pencadangan lokal dalam kedua kasus, perangkat keras juga akan menjadi batasan untuk mentransfer data melalui jaringan. Bergantung pada penyiapan Anda, ini bisa berupa jaringan, I/O disk, atau CPU.
Dalam operasi intensif I/O, CPU adalah hambatan yang paling tidak umum. Ini membuatnya cukup umum untuk menukar beberapa pemanfaatan CPU untuk pengurangan ukuran kumpulan data. Anda dapat melakukannya melalui kompresi. Jika dilakukan dengan cepat, Anda masih harus membaca jumlah data yang sama tetapi Anda mengirim lebih sedikit (karena dikompresi) melalui jaringan. Kemudian, Anda harus mendekompresnya dan menuliskannya. Mungkin juga file itu sendiri dikompresi. Dalam hal ini, Anda mengurangi jumlah data yang dibaca, ditransfer, dan ditulis ke disk.
Baik Plugin Clone dan Xtrabackup hadir dengan kompresi on-the-fly (kami ingin berterima kasih kepada Kenny Gryp, yang mengoreksi kami pada bagian ini). Di Plugin Clone Anda dapat mengaktifkannya melalui clone_enable_compression, yang dinonaktifkan secara default. Xtrabackup juga dapat menggunakan alat eksternal untuk mengompres data. Dalam kasus tabel InnoDB terkompresi, kompresi eksternal tidak akan membuat terlalu banyak perbedaan sehingga kedua alat harus bekerja dengan cara yang sama jika bandwidth jaringan menjadi faktor pembatas.
Membandingkan Kegunaan
Kinerja hanyalah satu hal untuk dibandingkan, ada banyak hal lain seperti alat yang mudah digunakan. Dalam kedua kasus ada beberapa langkah yang harus Anda lakukan. Untuk Plugin Klon adalah:
- Instal plugin di semua node
- Buat pengguna di node donor dan penerima
- Siapkan daftar donor di penerima
Tiga langkah itu harus dilakukan sekali. Jika sudah disetel, Anda dapat menggunakan Plugin Klon untuk menyalin data. Berdasarkan sistem init, Anda mungkin perlu memulai node MySQL setelah proses kloning selesai. Ini tidak diperlukan jika, seperti dalam kasus systemd, MySQL akan dimulai ulang secara otomatis.
Xtrabackup memerlukan beberapa langkah lagi untuk menyelesaikan sesuatu.
- Instal perangkat lunak di semua node
- Buat pengguna di donor
Dua langkah tersebut harus dijalankan satu kali. Untuk setiap pencadangan, Anda harus menjalankan langkah-langkah berikut:
- Konfigurasikan streaming jaringan. Cara yang sederhana dan aman adalah dengan menggunakan SSH, seperti:
xtrabackup --backup --innodb-file-io-threads=8 --innodb-read-io-threads=8 --innodb-write-io-threads=8 --innodb-io-capacity=20000 --parallel=8 --stream=xbstream --target-dir=/mnt/backup/ | ssh [email protected] "xbstream -x -C /mnt/backup/"
Namun, kami menemukan, untuk harddisk yang lebih cepat, dengan SSH single-threaded, CPU menjadi hambatan. Menyiapkan netcat memerlukan langkah tambahan pada penerima untuk memastikan netcat aktif, mendengarkan, dan mengarahkan lalu lintas ke perangkat lunak yang tepat (xbstream).
-
Hentikan MySQL pada node penerima
-
Jalankan Xtrabackup
-
Terapkan log InnoDB
-
Copy kembali datanya
-
Mulai MySQL pada node penerima
Seperti yang Anda lihat, Xtrabackup membutuhkan lebih banyak langkah yang harus diambil.
Pertimbangan Keamanan
Plugin Klon dapat dikonfigurasi untuk menggunakan SSL untuk transfer data meskipun secara default menggunakan teks biasa. Kloning tablespace terenkripsi dimungkinkan tetapi tidak ada opsi untuk mengenkripsi, misalnya, kloning lokal. Pengguna harus melakukannya secara terpisah, setelah proses kloning selesai.
Xtrabackup sendiri tidak memberikan keamanan apa pun. Keamanan ditentukan oleh cara Anda mengalirkan data. Jika Anda menggunakan SSH untuk streaming, data dalam perjalanan akan dienkripsi. Jika Anda memutuskan untuk menggunakan netcat, itu akan dikirim sebagai teks biasa. Tentu saja, jika data dienkripsi dalam tablespace, itu sudah diamankan, seperti dalam kasus Plugin Clone. Xtrabackup juga dapat digunakan bersama dengan enkripsi on-the-fly untuk memastikan data Anda juga dienkripsi saat tidak digunakan.
Fitur Plugin
Plugin Klon adalah produk baru, masih dalam tahap bayi. Tugas utamanya adalah menyediakan cara untuk menyediakan node di InnoDB Cluster dan itu berfungsi dengan baik. Untuk tugas lain, seperti pencadangan atau penyediaan budak replikasi, ini dapat digunakan sampai batas tertentu tetapi mengalami beberapa keterbatasan. Kami membahas beberapa di antaranya di blog kami sebelumnya sehingga kami tidak akan mengulanginya di sini tetapi yang paling serius, ketika berbicara tentang penyediaan dan pencadangan, adalah bahwa hanya tabel InnoDB yang dikloning. Jika Anda menggunakan mesin penyimpanan lain, Anda tidak dapat benar-benar menggunakan Plugin Clone. Di sisi lain, Xtrabackup akan dengan senang hati mencadangkan dan mentransfer mesin penyimpanan yang paling umum digunakan:InnoDB, MyISAM (sayangnya, masih digunakan di banyak tempat) dan CSV. Xtrabackup juga dilengkapi dengan seperangkat alat yang dimaksudkan untuk membantu streaming data dari node ke node atau bahkan streaming backup ke bucket S3.
Singkatnya, dalam hal mencadangkan data dan menyediakan budak replikasi, xtrabackup adalah dan kemungkinan besar akan tetap menjadi pilihan paling populer. Di sisi lain, Plugin Clone, kemungkinan besar, akan meningkat dan berkembang. Kita akan melihat seperti apa masa depan dan bagaimana keadaannya dalam waktu satu tahun.
Beri tahu kami jika Anda memiliki pendapat tentang Plugin Klon, kami sangat tertarik untuk mengetahui pendapat Anda tentang alat baru ini.