Dukungan untuk Ketersediaan Tinggi, Pemulihan Bencana
Topik ini membahas Driver Microsoft untuk PHP untuk dukungan SQL Server (ditambahkan dalam versi 3.0) untuk ketersediaan tinggi, pemulihan bencana.
Dimulai dengan versi 3.0 dari Microsoft Drivers untuk PHP untuk SQL Server, Anda dapat menentukan pendengar grup ketersediaan grup ketersediaan tinggi, grup ketersediaan pemulihan bencana atau instans kluster failover sebagai server di string koneksi.
Properti koneksi MultiSubnetFailover menunjukkan bahwa aplikasi sedang disebarkan dalam grup ketersediaan atau Instans Kluster Failover dan driver akan mencoba menyambungkan ke database pada instans SQL Server utama dengan mencoba menyambungkan ke semua alamat IP. Selalu tentukan MultiSubnetFailover=True saat menyambungkan ke pendengar grup ketersediaan SQL Server atau Instans Kluster Failover SQL Server. Jika aplikasi terhubung ke database Always On yang gagal, koneksi asli rusak dan aplikasi harus membuka koneksi baru untuk terus bekerja setelah failover.
Detail lengkap tentang grup ketersediaan AlwaysOn dapat ditemukan di halaman Ketersediaan Tinggi, Dokumen Pemulihan Bencana.
Resolusi IP Jaringan Transparan (TNIR)
Resolusi IP Jaringan Transparan (TNIR) adalah revisi dari fitur MultiSubnetFailover yang ada. Ini mempengaruhi urutan koneksi driver ketika IP pertama yang diselesaikan dari nama host tidak merespons dan ada beberapa IP yang terkait dengan nama host. Opsi koneksi yang sesuai adalah TransparentNetworkIPResolution. Bersama dengan MultiSubnetFailover , ia menyediakan empat urutan koneksi berikut:
- TNIR Diaktifkan & MultiSubnetFailover Dinonaktifkan: Satu IP dicoba, diikuti oleh semua IP secara paralel
- TNIR Diaktifkan & MultiSubnetFailover Diaktifkan: Semua IP dicoba secara paralel
- TNIR Dinonaktifkan & MultiSubnetFailover Dinonaktifkan: Semua IP dicoba satu demi satu
- TNIR Dinonaktifkan & MultiSubnetFailover Diaktifkan: Semua IP dicoba secara paralel
TNIR diaktifkan secara default, dan MultiSubnetFailover dinonaktifkan secara default.
Ini adalah contoh mengaktifkan TNIR dan MultiSubnetFailover menggunakan driver PDO_SQLSRV:
<?php
$serverName = "yourservername";
$username = "yourusername";
$password = "yourpassword";
$connectionString = "sqlsrv:Server=$serverName; TransparentNetworkIPResolution=Enabled; MultiSubnetFailover=yes";
try {
$conn = new PDO($connectionString, $username, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
// your code
// more of your code
// when done, close the connection
unset($conn);
} catch(PDOException $e) {
print_r($e->errorInfo);
}
?>
Memutakhirkan untuk Menggunakan Kluster Multi-Subnet dari Pencerminan Database
Kesalahan koneksi akan terjadi jika kata kunci koneksi MultiSubnetFailover dan Failover_Partner ada di string koneksi. Kesalahan juga akan terjadi jika MultiSubnetFailover digunakan dan SQL Server mengembalikan respons mitra failover yang menunjukkan bahwa itu adalah bagian dari pasangan pencerminan database.
Saat memutakhirkan aplikasi PHP yang saat ini menggunakan pencerminan database ke skenario multi-subnet, hapus properti koneksi Failover_Partner dan ganti dengan MultiSubnetFailover yang diatur ke True dan ganti nama server di string koneksi dengan pendengar grup ketersediaan. Jika string koneksi menggunakan Failover_Partner dan MultiSubnetFailover=true, driver akan menghasilkan kesalahan. Namun, jika string koneksi menggunakan Failover_Partner dan MultiSubnetFailover=false (atau ApplicationIntent=ReadWrite), aplikasi akan menggunakan pencerminan database.
Driver akan mengembalikan kesalahan jika pencerminan database digunakan pada database utama di AG, dan jika MultiSubnetFailover=true digunakan dalam string koneksi yang tersambung ke database utama alih-alih ke pendengar grup ketersediaan.
Tentukan niat aplikasi
Anda dapat menentukan kata kunci ApplicationIntent
di string koneksi Anda. Nilai yang dapat ditetapkan adalah ReadWrite
(default) atau ReadOnly
.
Saat Anda mengatur ApplicationIntent=ReadOnly
, klien meminta beban kerja baca saat menyambungkan. Server memberlakukan niat pada waktu koneksi, dan selama USE
pernyataan database.
Kata ApplicationIntent
kunci tidak berfungsi dengan database baca-saja lama.
Target ReadOnly
Saat koneksi memilih ReadOnly
, koneksi ditetapkan ke salah satu konfigurasi khusus berikut yang mungkin ada untuk database:
Selalu Aktif. Database dapat mengizinkan atau melarang beban kerja baca pada database grup ketersediaan yang ditargetkan. Pilihan ini dikendalikan dengan menggunakan
ALLOW_CONNECTIONS
klausaPRIMARY_ROLE
pernyataan Transact-SQL danSECONDARY_ROLE
.
Jika tidak ada target khusus yang tersedia, database reguler dibaca.
Kata ApplicationIntent
kunci memungkinkan perutean baca-saja.
Perutean baca-saja
Perutean baca-saja adalah fitur yang dapat memastikan ketersediaan replika database baca-saja. Untuk mengaktifkan perutean baca-saja, semua hal berikut ini berlaku:
Anda harus tersambung ke pendengar grup ketersediaan AlwaysOn.
Kata
ApplicationIntent
kunci string koneksi harus diatur keReadOnly
.Administrator database harus mengonfigurasi grup ketersediaan untuk mengaktifkan perutean baca-saja.
Beberapa koneksi yang masing-masing menggunakan perutean baca-saja mungkin tidak semuanya tersambung ke replika baca-saja yang sama. Perubahan sinkronisasi database atau perubahan konfigurasi perutean server dapat mengakibatkan koneksi klien ke replika baca-saja yang berbeda.
Anda dapat memastikan bahwa semua permintaan baca-saja tersambung ke replika baca-saja yang sama dengan tidak meneruskan pendengar grup ketersediaan ke Server
kata kunci string koneksi. Sebagai gantinya, tentukan nama instans baca-saja.
Perutean baca-saja mungkin memakan waktu lebih lama daripada menyambungkan ke primer. Ini karena perutean baca-saja pertama kali terhubung ke primer, lalu mencari sekunder yang dapat dibaca terbaik yang tersedia. Karena beberapa langkah ini, Anda harus meningkatkan batas waktu anda login
menjadi setidaknya 30 detik.
Lihat Juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk