Bagikan melalui


Dukungan untuk Ketersediaan Tinggi, Pemulihan Bencana

Unduh driver PHP

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 klausa PRIMARY_ROLE pernyataan Transact-SQL dan SECONDARY_ROLE .

  • Replikasi geografis

  • Peluasan skala

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 ke ReadOnly.

  • 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

Koneksi ke Server