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)