Apa itu pengelompokan basis data? Jika Anda mengizinkan database yang sama berada di 2 server yang berbeda, bagaimana mereka menjaga data tetap tersinkronisasi. Dan bagaimana ini berbeda dari load balancing dari perspektif server database?
Apa itu pengelompokan basis data? Jika Anda mengizinkan database yang sama berada di 2 server yang berbeda, bagaimana mereka menjaga data tetap tersinkronisasi. Dan bagaimana ini berbeda dari load balancing dari perspektif server database?
Jawaban:
Database clustering adalah sedikit istilah yang ambigu, beberapa vendor menganggap sebuah cluster memiliki dua atau lebih server berbagi penyimpanan yang sama, beberapa yang lain menyebut sebuah cluster satu set server yang direplikasi.
Replikasi mendefinisikan metode di mana satu set server tetap disinkronkan tanpa harus berbagi penyimpanan agar dapat tersebar secara geografis, ada dua cara utama untuk melakukannya:
replikasi master-master (atau multi-master): Server apa pun dapat memperbarui database. Biasanya diurus oleh modul yang berbeda dalam database (atau beberapa perangkat lunak yang berbeda berjalan di atasnya dalam beberapa kasus).
Kelemahannya adalah sangat sulit untuk melakukannya dengan baik, dan beberapa sistem kehilangan sifat ACID ketika dalam mode replikasi ini.
Sisi positifnya adalah fleksibel dan Anda dapat mendukung kegagalan server mana pun selagi database diperbarui.
replikasi master-slave: Hanya ada satu salinan data otoritatif, yang didorong ke server slave.
Kelemahannya adalah bahwa itu kurang toleran terhadap kesalahan, jika master mati, tidak ada perubahan lebih lanjut pada budak.
Keuntungannya adalah lebih mudah dilakukan daripada multi-master dan biasanya mempertahankan properti ACID.
Load balancing adalah konsep yang berbeda, terdiri dari mendistribusikan kueri yang dikirim ke server-server tersebut sehingga bebannya didistribusikan secara merata. Biasanya dilakukan di lapisan aplikasi (atau dengan kolam koneksi). Satu-satunya hubungan langsung antara replikasi dan load balancing adalah bahwa Anda memerlukan replikasi untuk dapat memuat keseimbangan, jika tidak, Anda akan memiliki satu server.
Dari sudut pandang SQL Server:
Clustering akan memberi Anda konfigurasi aktif-pasif. Berarti dalam cluster 2 simpul, salah satunya akan menjadi aktif (melayani) dan yang lainnya akan pasif (menunggu untuk mengambil alih ketika simpul aktif gagal). Ini ketersediaan tinggi dari sudut pandang perangkat keras.
Anda dapat memiliki cluster aktif-aktif, tetapi akan membutuhkan beberapa contoh SQL Server yang berjalan di setiap node. (yaitu Instance 1 pada Node A gagal ke Instance 2 pada Node B, dan instance 1 pada Node B gagal ke instance 2 pada Node A).
Load balancing (setidaknya dari sudut pandang SQL Server) tidak ada (setidaknya dalam arti yang sama load balancing server web). Anda tidak dapat menyeimbangkan muatan dengan cara itu. Namun, Anda dapat membagi aplikasi Anda untuk berjalan pada beberapa database pada server 1 dan juga menjalankan pada beberapa database pada server 2, dll. Ini adalah rata-rata utama "load balancing" di dunia SQL.
Clustering menggunakan penyimpanan bersama dari beberapa jenis (drive cage atau SAN, misalnya), dan menempatkan dua ujung depan database di atasnya. Server ujung depan berbagi alamat IP dan nama jaringan cluster yang digunakan klien untuk terhubung, dan mereka memutuskan di antara mereka sendiri yang saat ini bertugas melayani permintaan klien.
Jika Anda bertanya tentang server basis data tertentu, tambahkan itu ke pertanyaan Anda dan kami dapat menambahkan detail tentang penerapannya, tetapi pada intinya, itulah pengelompokan itu.
Database Clustering sebenarnya adalah mode replikasi sinkron antara dua atau lebih node dengan fungsi tambahan toleransi kesalahan ditambahkan ke sistem Anda, dan itu juga dalam arsitektur apa-apa bersama. Dengan tidak membagikan apa pun, itu berarti bahwa masing-masing node sebenarnya tidak berbagi sumber daya fisik seperti disk atau memori.
Sejauh menjaga data disinkronkan, ada server manajemen yang semua node data terhubung bersama dengan node SQL untuk mencapai ini (berbicara khusus tentang MySQL).
Sekarang tentang perbedaan: penyeimbangan beban hanyalah salah satu hasil yang dapat dicapai melalui pengelompokan, yang lain termasuk ketersediaan tinggi, skalabilitas dan toleransi kesalahan.