Aracılığıyla paylaş


Yüksek Kullanılabilirlik, Olağanüstü Durum Kurtarma desteği

PHP sürücüsünü indirme

Bu konu başlığında, yüksek kullanılabilirlik ve olağanüstü durum kurtarma için SQL Server desteği (sürüm 3.0'da eklendi) için PHP için Microsoft Sürücüleri açıklanmaktadır.

SQL Server için PHP için Microsoft Sürücüleri'nin 3.0 sürümünden başlayarak, bağlantı dizesinde sunucu olarak yüksek kullanılabilirlik, olağanüstü durum kurtarma kullanılabilirlik grubu veya yük devretme kümesi örneğinin kullanılabilirlik grubu dinleyicisini belirtebilirsiniz.

MultiSubnetFailover bağlantı özelliği, uygulamanın bir kullanılabilirlik grubunda veya Yük Devretme Kümesi Örneğinde dağıtıldığını ve sürücünün tüm IP adreslerine bağlanmaya çalışarak birincil SQL Server örneğindeki veritabanına bağlanmayı deneyeceğini gösterir. Her zaman bir SQL Server kullanılabilirlik grubu dinleyicisine veya SQL Server Yük Devretme Kümesi Örneğine bağlanırken MultiSubnetFailover=True değerini belirtin. Uygulama, yük devrettiğinde özgün bağlantısı kesilen bir Always On veritabanına bağlıysa, yük devretme işleminden sonra çalışmaya devam edebilmek için uygulamanın yeni bir bağlantı açması gerekir.

Always On kullanılabilirlik gruplarıyla ilgili tüm ayrıntılar Yüksek Kullanılabilirlik, Olağanüstü Durum Kurtarma Belgeleri sayfasında bulunabilir.

Saydam Ağ IP Çözümlemesi (TNIR)

Saydam Ağ IP Çözümlemesi (TNIR), mevcut MultiSubnetFailover özelliğinin bir düzeltmesidir. Ana bilgisayar adının ilk çözümlenen IP'sinin yanıt vermemesi ve ana bilgisayar adıyla ilişkilendirilmiş birden çok IP olması sürücünün bağlantı sırasını etkiler. İlgili bağlantı seçeneği TransparentNetworkIPResolution'dır. MultiSubnetFailover ile birlikte aşağıdaki dört bağlantı dizisi sağlar:

  • TNIR Etkin ve MultiSubnetFailover Devre Dışı: Bir IP denenecek, takiben tüm IP'ler paralel olarak denenecek.
  • TNIR Aktif ve MultiSubnetFailover Aktif: IP'lerin tümü paralel olarak denenir
  • TNIR Devre Dışı & MultiSubnetFailover Devre Dışı: Tüm IP'ler birbiri ardına denenir
  • TNIR Devre Dışı & MultiSubnetFailover Etkin: Tüm IP'ler paralel olarak denenir

TNIR varsayılan olarak etkindir ve MultiSubnetFailover varsayılan olarak Devre Dışıdır.

Bu, PDO_SQLSRV sürücüsünü kullanarak hem TNIR hem de MultiSubnetFailover'ı etkinleştirme örneğidir:

<?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);
}
?>

Veritabanı Aynalamadan Çok Alt Ağ Kümelerini Kullanmak İçin Yükseltme

MultiSubnetFailover ve Failover_Partner bağlantı anahtar kelimeleri bağlantı dizisinde bulunuyorsa bağlantı hatası meydana gelir. MultiSubnetFailover kullanılırsa ve SQL Server, bunun bir veritabanı yansıtma çiftinin parçası olduğunu belirten bir devre ortağı yanıtı dönerse de hata oluşur.

Şu anda veritabanı yansıtma kullanan bir PHP uygulamasını çoklu alt ağ senaryosuna yükseltirken, Failover_Partner bağlantı özelliğini kaldırın ve MultiSubnetFailoverTrue olarak ayarlayın ve bağlantı dizesindeki sunucu adını bir erişilebilirlik grubu dinleyicisiyle değiştirin. Bağlantı dizesi Failover_Partner ve MultiSubnetFailover=true kullanıyorsa, sürücü bir hata oluşturur. Ancak, bir bağlantı dizesi Failover_Partner ve MultiSubnetFailover=false (veya ApplicationIntent=ReadWrite) kullanıyorsa, uygulama veritabanı yansıtmayı kullanır.

AG'deki birincil veritabanında veritabanı yansıtması kullanılıyorsa ve kullanılabilirlik grubu dinleyicisi yerine birincil veritabanına bağlanan bağlantı dizesinde MultiSubnetFailover=true kullanılıyorsa sürücü hata döndürür.

Uygulama niyetini belirt

Anahtar kelimeyi ApplicationIntent bağlantı dizisinde belirtebilirsiniz. Atananabilir değerler ReadWrite (varsayılan olan) veya ReadOnly.

Ayarlarsanız ApplicationIntent=ReadOnly, istemci bağlanırken okuma iş yükü ister. Sunucu, niyeti bağlantı anında ve veritabanı USE ifadesi sırasında uygular.

Anahtar kelime, ApplicationIntent eski okunabilir veritabanlarında çalışmaz.

Sadece Okuma Hedefleri

Bir bağlantı seçtiğinde ReadOnly, bağlantı veritabanı için var olabilecek aşağıdaki özel yapılandırmalardan herhangi birine atanır:

  • Her zaman açık. Bir veritabanı, hedeflenen erişilebilirlik grubu veritabanında okuma iş yüklerine izin verebilir veya yasaklayabilir. Bu seçim, ve ALLOW_CONNECTIONSPRIMARY_ROLE Transact-SQL cümlesinin cümlesi kullanılarak SECONDARY_ROLE kontrol edilir.

  • Geo-replication

  • Okuma amaçlı ölçeklendirme

Bu özel hedeflerden hiçbiri mevcut değilse, normal veritabanından okunur.

Anahtar kelime, ApplicationIntentyalnızca okunabilir yönlendirme imkanı sağlar.

Salt okunur yönlendirme

Yalnızca okunan yönlendirme, veritabanının yalnızca okunabilir bir kopyasının erişilebilirliğini garanti eden bir özelliktir. Yalnızca okunan yönlendirmeyi etkinleştirmek için aşağıdakilerin hepsi geçerlidir:

  • Her Zaman Açık bir erişilebilirlik grubu dinleyicisine bağlanmalısınız.

  • ApplicationIntent Bağlantı dizesi anahtar sözcüğü olarak ReadOnlyayarlanmalıdır.

  • Veritabanı yöneticisi, kullanılabilirlik grubunu yalnızca okunan yönlendirmeyi etkinleştirecek şekilde yapılandırmalıdır.

Her biri sadece okunur yönlendirmesi kullanan birden fazla bağlantı, hepsi aynı tek okuma replikasına bağlanmayabilir. Veritabanı eşitlemesindeki değişiklikler veya sunucunun yönlendirme yapılandırmasındaki değişiklikler, istemcinin farklı salt okunur çoğaltmalara bağlanmasına neden olabilir.

Tüm okunan isteklerin aynı tek okuyan replikaya bağlanmasını sağlayabilirsiniz; bir kullanılabilirlik grubu dinleyicisini bağlantı Server dizisi anahtar kelimesine aktarmadan. Bunun yerine salt okunur örneğin adını belirtin.

Sadece okunan yönlendirme, birincil yönlendirmeye bağlanmaktan daha uzun sürebilir. Bunun nedeni, sadece okunan yönlendirmenin önce birincil yönlendirmeye bağlanması ve ardından en iyi okunabilir ikincil yönlendirmeyi aramasıdır. Bu çoklu adımlar nedeniyle, molayı en az 30 saniyeye çıkarmalısınız login .

Ayrıca Bkz.

Sunucuya Bağlanma