Cara saya selalu memvisualisasikan solusi ketersediaan tinggi adalah sebagai berikut:
Contoh SQL Server Failover Cluster (FCI)
Apa yang sangat tersedia? Seluruh contoh. Itu termasuk semua objek server (login, pekerjaan SQL Server Agent, dll.). Ini juga termasuk basis data dan entitas yang mengandungnya. Ini adalah solusi yang bagus untuk instance SQL Server yang sangat tersedia, karena itu akan menjadi level penahanan dengan solusi yang diberikan ini.
Bagaimana dengan pelaporan? Tidak ada, NULL, tidak ada. Sebuah instance kluster failover memiliki simpul aktif yang memberikan grup kluster yang berisi instance, VNN, dll. Dan semua node lainnya adalah pasif, duduk diam (sejauh menyangkut grup kluster saat ini) dan menunggu failover.
Apa yang terjadi ketika ada failover? Downtime untuk FCI akan ditentukan oleh jumlah waktu yang dibutuhkan node pasif untuk mengambil sumber daya cluster dan membawa contoh SQL Server dalam keadaan berjalan. Ini biasanya minimal dalam waktu.
Adakah abstraksi klien? Ya, ini akan bawaan bawaan dengan nama jaringan virtual untuk instance failover cluster. Ini akan selalu mengarah ke node aktif yang saat ini memberikan sumber daya gugus SQL Server.
Grup Ketersediaan AlwaysOn
Apa yang sangat tersedia? Grup ketersediaan akan menjadi penahanan logis ketersediaan tinggi di sini, sedangkan grup ketersediaan terdiri dari sejumlah database dan nama jaringan virtual (pendengar, sumber daya gugus opsional). Perlu dicatat bahwa objek server seperti login dan pekerjaan SQL Server Agent tidak akan menjadi bagian dari solusi HA, dan pertimbangan khusus perlu diambil untuk memastikan bahwa ini diterapkan dengan benar dengan grup ketersediaan. Bukan persyaratan yang terlalu membebani, tetapi perlu dirawat.
Bagaimana dengan pelaporan? Ini adalah solusi yang bagus untuk pelaporan, walaupun saya mungkin tidak akan menggunakan replika sinkron sebagai contoh pelaporan saya. Ada dua hubungan komit, sinkron dan asinkron. Menurut pendapat saya dan dari apa yang saya lihat dalam praktik, adalah bahwa replika sekunder sinkron Anda ada di sana menunggu bencana. Anggap saja sebagai replika yang siap untuk menerima kegagalan tanpa kehilangan data jika terjadi masalah. Lalu ada replika asinkron yang dapat menangani beban kerja pelaporan itu. Anda tidak menggunakan replika ini sebagai solusi yang disebutkan di atas, tetapi lebih untuk hal-hal seperti pelaporan. Melaporkan beban kerja dapat diarahkan ke replika ini (baik secara langsung, atau tidak langsung melalui perutean baca-saja melalui pendengar).
Apa yang terjadi ketika ada failover? Untuk replika sekunder yang dilakukan secara sinkron yang dipasangkan dengan failover otomatis, ini akan menjadi perubahan status peran replika dari SECONDARY_NORMAL ke PRIMARY_NORMAL. Agar terjadi failover otomatis, Anda harus memiliki replika sekunder sinkron yang saat ini disinkronkan, dan apa yang diterapkan adalah Kebijakan Kegagalan Failover untuk menentukan kapan sebenarnya kegagalan ini harus terjadi. Kebijakan itu memang dapat dikonfigurasi.
Adakah abstraksi klien? Ya, Anda dapat secara opsional mengkonfigurasi pendengar Grup AlwaysOn Availability. Ini pada dasarnya hanya nama jaringan virtual (dapat dilihat melalui WSFC sebagai sumber daya klaster dalam kelompok klaster AG) yang menunjuk ke replika primer saat ini. Ini adalah bagian penting dari pengalihan beban kerja pelaporan Anda, serta menyiapkan daftar perutean hanya-baca pada server apa pun yang Anda inginkan untuk mengarahkan lalu lintas ReadOnly (ini ditetapkan melalui string koneksi, dengan .NET Framework Provider untuk SQL Server, ini akan menjadi parameter Intent Aplikasi , diatur ke ReadOnly ). Anda juga perlu menetapkan URL perutean hanya-baca untuk setiap replika yang ingin Anda terima beban kerja pelaporan ini saat berada di peran replika sekunder.
Replikasi Transaksional
Apa yang sangat tersedia? Ini bisa diperdebatkan, tetapi saya tidak akan mengatakan apa-apa . Saya tidak melihat replikasi sebagai solusi ketersediaan tinggi apa pun. Ya, modifikasi data sedang didorong ke pelanggan tetapi kami sedang berbicara di tingkat publikasi / artikel. Ini akan menjadi himpunan bagian dari data (dapat mencakup semua data, tetapi itu tidak akan diberlakukan. Yaitu Anda membuat tabel baru dalam database penerbit, dan yang tidak akan secara otomatis didorong ke pelanggan). Sejauh HA berjalan, ini adalah bottom-of-the-barrel dan saya tidak akan mengelompokkannya di sana dengan solusi HA yang solid.
Bagaimana dengan pelaporan? Solusi hebat untuk melaporkan subset data, tidak ada pertanyaan tentang itu. Jika Anda memiliki basis data 1 TB yang sangat transaksional dan Anda ingin menjaga agar beban kerja pelaporan dari basis data OLTP, replikasi transaksional adalah cara yang bagus untuk mendorong subset data ke pelanggan (atau pelanggan) untuk beban kerja pelaporan. Apa yang terjadi jika dari 1 TB data, beban kerja pelaporan Anda hanya sekitar 50 GB? Ini adalah solusi cerdas, dan relatif dapat dikonfigurasi untuk memenuhi kebutuhan bisnis Anda.
Ringkasan
Apa yang muncul adalah beberapa pertanyaan yang perlu dijawab (sebagian oleh bisnis):
- Apa yang perlu tersedia sangat tinggi ?
- Apa yang ditentukan oleh SLA untuk HA / DR?
- Apa jenis pelaporan akan berlangsung dan latency apa yang diterima?
- Apa yang perlu kita tangani dengan HA yang tersebar secara geografis ? (replikasi penyimpanan mahal, tetapi harus dengan FCI. AG tidak memerlukan penyimpanan bersama dari contoh mandiri, dan Anda dapat menggunakan saksi berbagi file untuk kuorum yang berpotensi menghilangkan kebutuhan penyimpanan bersama)
Jenis pekerjaan apa? "Tergantung" - tetapi serius, ini berguna untuk aplikasi online di mana Anda perlu memiliki data lokal di pusat Ketersediaan Tinggi. Anda terlindungi dari kegagalan satu mesin, atau satu sistem operasi. Login, pekerjaan, database baru, pemeliharaan, dll. Semua secara otomatis disimpan dalam sinkronisasi oleh fakta bahwa itu adalah cluster dengan dua node yang persis sama berbagi penyimpanan yang sama sehingga mereka memiliki semua database sistem yang sama. Failover sangat cepat, tetapi masih ada cegukan yang tampak seperti SQL Server restart ketika failover terjadi.
Kekurangan / Kekhawatiran - Satu-satunya titik kegagalan adalah penyimpanan Anda dan semua komponennya. Vendor SAN selalu mengatakan "SAN tidak gagal" tetapi ada banyak bagian yang bergerak dalam jaringan area penyimpanan dan seperti yang saya blog di sini , mereka bisa. Juga - Anda membayar untuk server sekunder yang tidak bisa melakukan apa-apa selain menunggu dan menunggu .. Sekarang Anda dapat melakukan Active / Active / Multi-Node dan memiliki dua instance aktif yang dapat failover di kedua arah dan menggunakan node kedua.
Kegagalan Otomatis? Otomatis "paling". Tidak perlu saksi, ini cluster. Ini adalah tugas dari sebuah cluster, untuk membuatnya semulus mungkin. Sekarang dengan semua ini, ketika failover terjadi Anda akan "merasakannya", karena SQL harus memulai atau koneksi harus menunjuk. Di sini ketika itu terjadi, pada dasarnya Anda akan merasa seperti restart SQL, DB kembali dan menjalankan recovery / etc.
Jika saya memiliki klien mengatakan "Saya ingin sepenuhnya dengan semua database, semua login, dll" di lingkungan Ketersediaan Tinggi di pusat data lokal saya karena saya memiliki toleransi yang sangat rendah untuk downtime, saya akan mempertimbangkan Failover Cluster Instances (meskipun Opsi terakhir yang Anda sebutkan adalah pesaing yang kuat, kecuali karena harus melakukan beberapa overhead manajemen). Saya mungkin akan melakukan FCI lokal dan AG async sekunder untuk melindungi terhadap kegagalan situs atau kegagalan SAN.
Inilah yang saya telah membantu orang menerapkan lebih dan lebih belakangan ini, meskipun kadang-kadang saya masih pergi ke pengelompokan.
Ringkasan
HA dan DR berbeda. Dan teknologi ini membantu menyediakan bagian dari keduanya. Ketersediaan Tinggi berarti (bagi saya) bahwa Anda dapat dengan cepat memulihkan jika terjadi sesuatu yang buruk pada satu mesin, Anda memiliki Object Point Pemulihan yang pendek dan Objective Recovery Time Objective. Itu adalah clustering dan AG sinkron.
Disaster Recovery adalah "Anda bisa bangun ketika Anda mengalami kegagalan bahkan dalam solusi HA Anda. Bagi saya itu bisa AGs ketika Anda pergi ke pusat data lain, mirroring atau bahkan replikasi.
sumber
Penting juga untuk mempertimbangkan apa yang dibagikan .
Failover Clustering menggunakan dua atau lebih node server yang berbagi satu array disk. Jika array disk turun maka Anda kehilangan layanan, terlepas dari berapa banyak node server yang ada. Jika ruang server di mana array disk berada terkena kebakaran atau banjir maka Anda kehilangan layanan.
Grup Ketersediaan AlwaysOn dan Database Mirroring adalah teknologi pengelompokan "tidak berbagi". Basis data ada pada beberapa array disk di beberapa server. Jika Anda memiliki tautan jaringan yang baik maka beberapa servis dapat berada di beberapa ruang server, melindungi Anda dari kebakaran dan banjir.
sumber
Hanya untuk kelengkapan, ada opsi untuk menggunakan mirroring tua biasa. Keuntungannya di sini termasuk memiliki dua salinan database tanpa kerumitan menggunakan Grup Ketersediaan, dan tanpa memerlukan penyimpanan bersama untuk Failover Clustering. Kerugian, meskipun sedikit, mirroring sudah usang.
Waktu kegagalan dengan mirroring berada di urutan 10 detik, meskipun kode aplikasi harus dapat mencoba kembali setiap transaksi yang terjadi pada saat failover.
sumber