Apa kelemahan menggunakan Galera Cluster alih-alih Replikasi Master / Slave?

13

Apa kekurangan menggunakan Galera Cluster daripada Replikasi Master / Slave biasa? 0 waktu jeda budak Galera, replikasi sinkron, dan tidak ada titik kegagalan tampaknya sangat menarik, mengapa mengapa cluster Galera tidak umum?

Sam
sumber

Jawaban:

16

Karena seperti optimasi lainnya, itu tidak sesuai dengan setiap beban kerja.

Galera bisa kewalahan oleh tingkat transaksi yang tinggi, atau ketika transaksi memperbarui banyak baris. Itu juga dapat membuat aplikasi Anda mengalami keterlambatan pada COMMIT karena cluster disinkronkan.

Galera juga tidak memperbarui node lain secara sinkron. Itu hanya mentransmisikan workets secara sinkron. Dengan cara ini, ini seperti replikasi standar dalam mode semi-sinkron. Oleh karena itu masih ada sedikit peluang untuk membaca data basi dari node cluster lain. Ada opsi yang dapat Anda atur untuk memaksa SELECT untuk menunggu sampai antrian workets telah memperbarui database, tetapi ini berarti Anda memiliki penundaan pada SELECT. Dan bahkan peluang mendapatkan kebuntuan pada SELECT, yang tampaknya kontra-intuitif.

Galera brilian, tetapi bukan teknologi satu ukuran untuk semua. Masih ada alasan bagus untuk menggunakan replikasi asinkron.

Bill Karwin
sumber
Terima kasih Bill, tapi saya sudah membaca presentasi Percona Anda sebentar.
Sam
3
Kelemahan lain adalah memiliki simpul donor dari dirinya sendiri dan digunakan untuk menyalin (melalui xtrabackup, rsync, mysqldump) ke sembarang simpul yang diperkenalkan ke klaster, meninggalkan simpul yang tersisa di kluster untuk melakukan pengangkatan berat hingga simpul baru tersinkronisasi. Ini bukan kelemahan untuk DB berukuran kecil atau menengah.
RolandoMySQLDBA
1
@RolandoMySQLDBA Metode SST seperti xtrabackup justru menghindari mengunci donor. Meskipun benar bahwa dalam kasus apa pun, donor akan menurunkan kinerja jika databasenya besar.
jynus
3
@ jynus, masalah ini tidak mengunci pada simpul donor , tetapi bahwa simpul penerima offline dan tidak tersedia untuk pertanyaan apa pun saat SST sedang berlangsung. Oleh karena itu jika Anda menggunakan kluster untuk menyeimbangkan pemuatan kueri, kueri yang akan pergi ke node penerima harus dikirim ke node lain hingga SST selesai.
Bill Karwin
2
Jika ada orang lain yang melihat, pilihan yang dirujuk oleh Bill adalah wsrep_causal_reads... atur ON dengan SET GLOBAL wsrep_causal_reads = 'ON';agar selektif menunggu sampai semua set penulisan selesai.
Luke Cousins
2

Beberapa kekurangan Galera meliputi:

  • Dukungan mesin penyimpanan: terbatas pada InnoDB / XtraDB (ditambah dukungan eksperimental untuk MyISAM)
  • Dukungan OS: hanya Linux / Unix-like Oses

Ada juga beberapa batasan yang harus diperhatikan, tetapi mungkin dapat diselesaikan:

  • Secara default (Total Order Isolasi) Operasi DDL memblokir seluruh cluster sampai selesai
  • Setiap tabel harus memiliki kunci primer eksplisit, baik tunggal atau multi-kolom
  • Mengunci: beberapa jenis penguncian eksplisit tidak didukung.

Untuk info lebih lanjut, lihat detail di Codership (dan di sini tentang pemblokiran DDL), MariaDB , dan Percona .

EDIT: Perhatikan juga bahwa beberapa orang berpendapat bahwa klaster basis data yang dipasangkan dengan ketat, seperti Galera, seharusnya tidak memiliki simpul yang terdistribusi secara geografis karena masalah yang berasal dari ketidakcocokan yang melekat pada lapisan jaringan. Sebagai gantinya, solusi asinkron harus digunakan dalam kasus ini. Lihat: Bagaimana Tidak Melakukan Ketersediaan Tinggi MySQL: Distribusi Node Geografis dengan Penyalahgunaan Replikasi Berbasis Galera . Namun demikian, blog Galera menyatakan bahwa (2015):

Kasus untuk membangun cluster basis data geo-didistribusikan kuat. Pendekatan Galera untuk replikasi dan fitur spesifik dalam produk membuatnya praktis untuk membangun cluster Galera yang menjangkau beberapa pusat data dan banyak pengguna sudah memiliki cluster tersebut dalam produksi.

dbdemon
sumber