MySQL Cluster


A. Pengertian

MySQL Cluster adalah teknologi yang menyediakan shared-nothing clustering dan auto-sharding untuk MySQL sistem manajemen database. Hal ini dirancang untuk menyediakan kemampuan tinggi dan throughput yang tinggi dengan latency rendah, sementara memungkinkan untuk dekat skalabilitas linear. MySQL Cluster diimplementasikan melalui NDB atau NDBCLUSTER storage enggine untuk MySQL ( "NDB" singkatan Network Data Base).
B. Arsitektur
MySQL Cluster dirancang di sekitar didistribusikan, multi-master ACID arsitektur compliant tanpa titik tunggal kegagalan . MySQL Cluster menggunakan automatic sharding (partisi) untuk skala keluar membaca dan menulis operasi pada perangkat keras komoditas dan dapat diakses melalui SQL dan Non-SQL (NoSQL) API

1. Replikasi
Secara internal MySQL Cluster menggunakan replikasi sinkron melalui dua fase komit mekanisme untuk menjamin data yang ditulis ke beberapa node saat akan ditulis. (Hal ini berbeda dengan apa yang biasanya disebut sebagai "MySQL Replikasi", yang asynchronous .) Dua salinan (dikenal sebagai replika) dari data yang diperlukan untuk menjamin ketersediaan. MySQL Cluster otomatis membuat “kelompok node” dari jumlah replika dan node data yang ditentukan oleh pengguna. Pembaruan serentak direplikasi antara anggota kelompok node untuk melindungi terhadap kehilangan data dan mendukung failover cepat antara node.

Hal ini juga memungkinkan untuk meniru asynchronous antara cluster; ini kadang-kadang disebut sebagai "MySQL Cluster Replikasi" atau "replikasi geografis". Hal ini biasanya digunakan untuk mereplikasi cluster antara pusat data untuk pemulihan bencana atau untuk mengurangi efek dari latency jaringan dengan mencari data secara fisik lebih dekat dengan satu set pengguna. Tidak seperti standar replikasi MySQL, replikasi geografis MySQL Cluster ini menggunakan kontrol konkurensi optimis dan konsep zaman menyediakan mekanisme untuk deteksi konflik dan resolusi, memungkinkan aktif / pengelompokan aktif antara pusat data.

2. Auto-sharding
MySQL Cluster diimplementasikan sebagai database multi-master sepenuhnya didistribusikan memastikan update yang dibuat oleh aplikasi atau SQL node yang langsung tersedia untuk semua node lain mengakses cluster, dan setiap node data dapat menerima operasi menulis. Data dalam MySQL Cluster (NDB) tabel secara otomatis dipartisi di semua node data dalam sistem. Hal ini dilakukan berdasarkan algoritma hashing berdasarkan primary key pada tabel , dan transparan untuk akhir aplikasi . Klien dapat terhubung ke setiap node dalam cluster dan memiliki pertanyaan secara otomatis mengakses pecahan yang benar dibutuhkan untuk memenuhi permintaan atau melakukan transaksi. MySQL Cluster mampu mendukung query cross-beling dan transaksi. Pengguna dapat menentukan skema partisi sendiri. Hal ini memungkinkan pengembang untuk menambahkan “kesadaran distribusi” untuk aplikasi dengan partisi didasarkan pada sub-kunci yang umum bagi semua baris yang diakses oleh transaksi berjalan yang tinggi. Hal ini memastikan bahwa data yang digunakan untuk menyelesaikan transaksi terlokalisir pada pecahan yang sama, sehingga mengurangi hop jaringan.

3. Penyimpanan Hybrid
MySQL Cluster memungkinkan dataset lebih besar dari kapasitas mesin tunggal untuk disimpan dan diakses di beberapa mesin.
MySQL Cluster memelihara semua diindeks kolom di memori terdistribusi. Non-diindeks kolom juga dapat dipertahankan dalam memori didistribusikan atau dapat dipertahankan pada disk yang dengan di memori cache halaman. Menyimpan kolom non-diindeks pada disk memungkinkan MySQL Cluster untuk menyimpan dataset lebih besar dari memori agregat mesin berkerumun.
MySQL Cluster menulis Redo log ke disk untuk semua perubahan data serta cek menunjuk data ke disk secara teratur. Hal ini memungkinkan cluster untuk secara konsisten pulih dari disk setelah pemadaman cluster yang penuh. Sebagai log Redo ditulis asynchronously sehubungan dengan transaksi berkomitmen, beberapa sejumlah kecil transaksi dapat hilang jika cluster penuh gagal, namun hal ini dapat diatasi dengan menggunakan replikasi geografis atau multi-situs klaster dibahas di atas. Arus standar asynchronous tulis delay 2 detik, dan dikonfigurasi. titik normal skenario kegagalan tidak mengakibatkan kehilangan data karena replikasi data sinkron dalam cluster.
Ketika meja Cluster MySQL dipertahankan dalam memori, cluster hanya akan mengakses penyimpanan disk untuk menulis Redo catatan dan pos-pos pemeriksaan. Seperti menulis ini pola akses acak sekuensial dan terbatas yang terlibat, MySQL Cluster dapat mencapai tingkat throughput yang menulis lebih tinggi dengan perangkat keras disk yang terbatas dibandingkan dengan caching RDBMS berbasis disk tradisional. checkpointing ini ke disk data tabel di memori dapat dinonaktifkan (pada basis per-tabel) jika ketekunan berbasis disk tidak diperlukan.

4. Shared Nothing
MySQL Cluster dirancang untuk tidak memiliki satu titik kegagalan. Asalkan cluster diatur dengan benar, setiap satu node, sistem, atau bagian dari perangkat keras dapat gagal tanpa seluruh gagal cluster. Disk bersama ( SAN ) tidak diperlukan. Interkoneksi antara node dapat standar Ethernet, Gigabit Ethernet, InfiniBand, atau SCI interkoneksi.

5. MySQL Cluster Manager
Bagian dari komersial MySQL Cluster CGE, MySQL Cluster Manager adalah alat yang dirancang untuk menyederhanakan pembuatan dan administrasi database MySQL Cluster CGE dengan mengotomatisasi tugas-tugas manajemen umum, termasuk on-line scaling, upgrade, backup / restore dan konfigurasi ulang. MySQL Cluster Manager juga memonitor dan secara otomatis pulih MySQL node aplikasi Server dan node manajemen, serta MySQL node Cluster data.

C. Implementasi
MySQL Cluster menggunakan tiga jenis node (proses):
Data simpul (ndbd / proses ndbmtd): node ini menyimpan data. Tabel secara otomatis sharded di node Data yang juga transparan menangani load balancing, replikasi, failover dan penyembuhan diri.
Manajemen simpul (proses ndb_mgmd): Digunakan untuk konfigurasi dan monitoring dari cluster. Mereka hanya diperlukan untuk memulai atau restart node cluster.Mereka juga dapat dikonfigurasi sebagai arbiter, tapi ini tidak wajib (MySQL Server dapat dikonfigurasi sebagai arbiter sebagai gantinya). [5]
Aplikasi node atau SQL simpul (proses mysqld): Sebuah server MySQL (mysqld) yang menghubungkan ke semua node data dalam rangka untuk melakukan penyimpanan data dan pengambilan. jenis node ini opsional; adalah mungkin untuk query node data secara langsung melalui API NDB, baik native menggunakan C ++ API atau salah satu API NoSQL tambahan yang dijelaskan di atas.
Umumnya, diharapkan bahwa setiap node akan berjalan pada host fisik yang terpisah, VM atau contoh awan (meskipun sangat umum menemukan co-Manajemen Nodes dengan MySQL Server). Untuk praktek terbaik, dianjurkan tidak menemukan co-node dalam kelompok node yang sama pada host fisik tunggal (seperti yang akan mewakili titik kegagalan).

D. Dukungan
MySQL Cluster dilisensikan di bawah GPLv 2 lisensi. dukungan komersial tersedia sebagai bagian dari MySQL Cluster CGE, yang juga termasuk addons sumber non-terbuka seperti MySQL Cluster Manager, MySQL Enterprise Monitor, selain MySQL Enterprise Security dan Audit MySQL Enterprise.

Sumber
https://en.wikipedia.org/wiki/MySQL_Cluster

    Popular Posts