Aracılığıyla paylaş


Always On kullanılabilirlik grubu için salt okunur yönlendirmeyi yapılandırma

Şunlar için geçerlidir: SQL Server

SQL Server'da salt okunur yönlendirmeyi destekleyecek bir Always On kullanılabilirlik grubu yapılandırmak için Transact-SQL veya PowerShell kullanabilirsiniz. Salt okunur yönlendirme, SQL Server'ın uygun salt okunur bağlantı taleplerini, kullanılabilir bir Always On okunabilir ikincil replikaya (yani, ikincil rolde çalışırken salt okunur iş yüklerine izin verecek şekilde yapılandırılmış bir replikaya) yönlendirme yeteneğini ifade eder. Salt okunur yönlendirmeyi desteklemek için kullanılabilirlik grubunun bir kullanılabilirlik grubu dinleyicisine sahip olması gerekir. Salt okunur istemcilerin bağlantı isteklerini bu dinleyiciye yönlendirmesi ve istemcinin bağlantı dizelerinin uygulama amacını "salt okunur" olarak belirtmesi gerekir. Diğer bir ifadeyle, okuma amaçlı bağlantı istekleri olmalıdır.

Salt okunur yönlendirme SQL Server 2016 (13.x) ve sonraki sürümlerde kullanılabilir.

Uyarı

Okunabilir bir ikincil çoğaltmayı yapılandırma hakkında bilgi için bkz. Erişilebilirlik Çoğaltmasında (SQL Server) Read-Only Erişimini Yapılandırma.

Önkoşullar

Read-Only Yönlendirmesini Desteklemek için Hangi Replika Özelliklerini Yapılandırmanız Gerekiyor?

  • Salt okunur yönlendirmeyi destekleyen her okunabilir ikincil çoğaltma için bir salt okunur yönlendirme URL'si belirtmeniz gerekir. Bu URL yalnızca yerel çoğaltma ikincil rol altında çalışırken geçerlilik kazanır. Salt okunur yönlendirme URL'si, gerektiği gibi her bir çoğaltma için ayrı ayrı belirtilmelidir. Her salt okunur yönlendirme URL'si, okuma amacı bağlantı isteklerini belirli bir okunabilir ikincil çoğaltmaya yönlendirmek için kullanılır. Genellikle, her okunabilir ikincil kopyaya salt okunur yönlendirme URL'si atanır.

    Kullanılabilirlik çoğaltması için salt okunur yönlendirme URL'sinin hesaplanması hakkında bilgi için bkz Always On için read_only_routing_url hesaplama

  • Birincil çoğaltma olduğunda salt okunur yönlendirmeyi desteklemek istediğiniz her kullanılabilirlik çoğaltması için bir salt okunur yönlendirme listesi belirtmeniz gerekir. Belirli bir salt okunur yönlendirme listesi yalnızca yerel çoğaltma birincil rol altında çalışırken geçerlilik kazanır. Bu liste, gerektiğinde, her çoğaltma için ayrı ayrı belirtilmelidir. Genellikle, her salt okunur yönlendirme listesi, tüm salt okunur yönlendirme URL'lerini ve listenin sonunda yerel çoğaltmanın URL'sini içerir.

    Uyarı

    Okuma amacıyla yapılan bağlantı istekleri, mevcut birincil replikadan salt okunur yönlendirme listesindeki ilk uygun girişe yönlendirilir. Ancak, salt okunur çoğaltmalar arasında yük dengeleme yapılabilir. Daha fazla bilgi için salt okunur çoğaltmalar arasında yük dengelemeyi yapılandırın kısmına bakın.

Uyarı

Kullanılabilirlik grubu dinleyicileri ve salt okunur yönlendirme hakkında daha fazla bilgi için bkz. Kullanılabilirlik Grubu Dinleyicileri, İstemci Bağlantısı ve Uygulama Yük Devretme (SQL Server).

İzinler

Görev İzinler
Kullanılabilirlik grubu oluştururken çoğaltmaları yapılandırmak için sysadmin sabit sunucu rolü üyeliği ve CREATE AVAILABILITY GROUP sunucu izni, ALTER ANY AVAILABILITY GROUP izni veya CONTROL SERVER izni gerektirir.
Kullanılabilirlik çoğaltmasını değiştirmek için Kullanılabilirlik grubu üzerinde ALTER AVAILABILITY GROUP izni, CONTROL AVAILABILITY GROUP izni, ALTER ANY AVAILABILITY GROUP izni veya CONTROL SERVER izni gerektirir.

Transact-SQL Kullanımı

Salt okunur bir yönlendirme listesini yapılandırın.

Transact-SQL kullanarak salt okunur yönlendirmeyi yapılandırmak için aşağıdaki adımları kullanın. Kod örneği için bu bölümün devamında yer alan Örnek (Transact-SQL) bölümüne bakın.

  1. Birincil replikayı çalıştıran sunucu örneğine bağlanın.

  2. Yeni bir kullanılabilirlik grubu için çoğaltma belirtiyorsanız CREATE AVAILABILITY GROUP Transact-SQL deyimini kullanın. Mevcut bir kullanılabilirlik grubu için bir kopya ekliyor veya değiştiriyorsanız ALTER AVAILABILITY GROUP Transact-SQL deyimini kullanın.

    • İkincil rol için salt okunur yönlendirmeyi yapılandırmak için, ADD REPLICA veya MODIFY REPLICA WITH yan tümcesinde aşağıdaki gibi SECONDARY_ROLE seçeneğini belirtin:

      SECONDARY_ROLE ( READ_ONLY_ROUTING_URL ='TCP://sistem-adresi:port')

      Salt okunur yönlendirme URL'sinin parametreleri aşağıdaki gibidir:

      sistem adresi
      Sistem adı, tam etki alanı adı veya IP adresi gibi hedef bilgisayar sistemini kesin olarak tanımlayan bir dizedir.

      bağlantı noktası
      SQL Server örneğinin Veritabanı Altyapısı tarafından kullanılan bir bağlantı noktası numarasıdır.

      Örneğin: SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433')

      MODIFY REPLICA yan tümcesinde, replika zaten salt okunur bağlantılara izin verecek şekilde yapılandırılmışsa ALLOW_CONNECTIONS isteğe bağlı hale gelir.

      Daha fazla bilgi için bkz Always On için read_only_routing_url Hesaplama.

    • Birincil rol için salt okunur yönlendirmeyi yapılandırmak için, ADD REPLICA veya MODIFY REPLICA WITH yan tümcesinde aşağıdaki gibi PRIMARY_ROLE seçeneğini belirtin:

      PRIMARY_ROLE ( READ_ONLY_ROUTING_LIST =('server' [ ,... n ] ))

      burada, sunucu, kullanılabilirlik grubunda salt okunur bir ikincil replikayı barındıran bir sunucu örneğini tanımlar.

      Örneğin: PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('Server1','Server2'))

      Uyarı

      Salt okunur yönlendirme listesini yapılandırmadan önce salt okunur yönlendirme URL'sini ayarlamanız gerekir.

Salt okunur çoğaltmalar arasında yük dengelemeyi yapılandırma

SQL Server 2016(13.x) sürümünden başlayarak, bir dizi salt okunur çoğaltmada yük dengelemeyi yapılandırabilirsiniz. Daha önce salt okunur yönlendirme, trafiği her zaman yönlendirme listesindeki kullanılabilir ilk çoğaltmaya yönlendirdi. Bu özellikten yararlanmak için CREATE AVAILABILITY GROUP veya ALTER AVAILABILITY GROUP komutlarındaki READ_ONLY_ROUTING_LIST sunucu örneklerinin etrafında iç içe yerleştirilmiş bir parantez düzeyi kullanın.

Örneğin, aşağıdaki yönlendirme listesi, okuma amaçlı bağlantı isteğini iki salt okunur çoğaltma arasında yük dengeler, Server1 ve Server2. Bu sunucuları çevreleyen iç içe parantezler yük dengeli kümeyi tanımlar. O kümede hiçbir çoğaltma yoksa, bu durumda salt okunur yönlendirme listesinde sırasıyla diğer çoğaltmalara Server3 ve Server4 bağlanmayı dener.

READ_ONLY_ROUTING_LIST = (('Server1','Server2'), 'Server3', 'Server4')  

Yönlendirme listesindeki her girişin, yük dengeli salt okunur çoğaltma kümesi olabileceğini unutmayın. Aşağıdaki örnekte bunu gösterilmiştir.

READ_ONLY_ROUTING_LIST = (('Server1','Server2'), ('Server3', 'Server4', 'Server5'), 'Server6')  

Yalnızca bir iç içe parantez katmanı desteklenir.

Örnek (Transact-SQL)

Aşağıdaki örnek, AG1 bu çoğaltmalardan biri şu anda birincil role sahipse salt okunur yönlendirmeyi desteklemek için mevcut bir kullanılabilirlik grubunun iki kullanılabilirlik çoğaltmasını değiştirir. Sunucu örneklerini tanımlamak için, kullanılabilirlik çoğaltmasını barındıran bu örnek, COMPUTER01 ve COMPUTER02 örnek adlarını belirtir.

ALTER AVAILABILITY GROUP [AG1]  
 MODIFY REPLICA ON  
N'COMPUTER01' WITH   
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));  
ALTER AVAILABILITY GROUP [AG1]  
 MODIFY REPLICA ON  
N'COMPUTER01' WITH   
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433'));  
  
ALTER AVAILABILITY GROUP [AG1]  
 MODIFY REPLICA ON  
N'COMPUTER02' WITH   
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));  
ALTER AVAILABILITY GROUP [AG1]  
 MODIFY REPLICA ON  
N'COMPUTER02' WITH   
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER02.contoso.com:1433'));  
  
ALTER AVAILABILITY GROUP [AG1]   
MODIFY REPLICA ON  
N'COMPUTER01' WITH   
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER02','COMPUTER01')));  
  
ALTER AVAILABILITY GROUP [AG1]   
MODIFY REPLICA ON  
N'COMPUTER02' WITH   
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER01','COMPUTER02')));  
GO  
  

PowerShell'i kullanma

Salt okunur bir yönlendirme listesini yapılandırın.

PowerShell kullanarak salt okunur yönlendirmeyi yapılandırmak için aşağıdaki adımları kullanın. Kod örneği için bu bölümün devamında yer alan Örnek (PowerShell) bölümüne bakın.

  1. Varsayılan (cd) değerini birincil çoğaltmayı barındıran sunucu örneğine ayarlayın.

  2. Kullanılabilirlik grubuna kullanılabilirlik çoğaltması eklerken New-SqlAvailabilityReplica cmdlet'ini kullanın. Mevcut kullanılabilirlik çoğaltmasını değiştirirken Set-SqlAvailabilityReplica cmdlet'ini kullanın. İlgili parametreler şunlardır:

    • İkincil rol için salt okunur yönlendirmeyi yapılandırmak için ReadonlyRoutingConnectionUrl"url" parametresini belirtin.

      burada , url , salt okunur bağlantılar için çoğaltmaya yönlendirme sırasında kullanılacak bağlantı tam etki alanı adı (FQDN) ve bağlantı noktasıdır. Örneğin: -ReadonlyRoutingConnectionUrl "TCP://DBSERVER8.manufacturing.Adventure-Works.com:7024"

      Daha fazla bilgi için bkz Always On için read_only_routing_url Hesaplama.

    • Birincil rol için bağlantı erişimini yapılandırmak için ReadonlyRoutingList"server" [ ,... n] girin, burada server erişilebilirlik grubunda salt okunur ikincil çoğaltmayı barındıran bir sunucu örneğini tanımlar. Örneğin: -ReadOnlyRoutingList "SecondaryServer","PrimaryServer"

      Uyarı

      Bir çoğaltmanın salt okunur yönlendirme listesini yapılandırmadan önce salt okunur yönlendirme URL'sini ayarlamanız gerekir.

    Uyarı

    Bir cmdlet'in söz dizimini görüntülemek için SQL Server PowerShell ortamındaki Get-Help cmdlet'ini kullanın. Daha fazla bilgi için bkz. SQL Server PowerShell Yardım Alma.

SQL Server PowerShell sağlayıcısını ayarlama ve kullanma

Örnek (PowerShell)

Aşağıdaki örnek, bir kullanılabilirlik grubu içinde salt okunur yönlendirme için bir birincil replikayı ve bir ikincil replikayı yapılandırır. İlk olarak, örnek her çoğaltmaya salt okunur bir yönlendirme URL'si atar. Ardından birincil çoğaltmadaki salt okunur yönlendirme listesini ayarlar. Bağlantı dizesinde ayarlanan "ReadOnly" özelliğine sahip bağlantılar ikincil çoğaltmaya yeniden yönlendirilir. Bu ikincil çoğaltma okunabilir değilse ( ConnectionModeInSecondaryRole ayarı tarafından belirlendiği gibi), bağlantı birincil çoğaltmaya geri yönlendirilir.

Set-Location SQLSERVER:\SQL\PrimaryServer\default\AvailabilityGroups\MyAg  
$primaryReplica = Get-Item "AvailabilityReplicas\PrimaryServer"  
$secondaryReplica = Get-Item "AvailabilityReplicas\SecondaryServer"  
  
Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://PrimaryServer.domain.com:1433" -InputObject $primaryReplica  
Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://SecondaryServer.domain.com:1433" -InputObject $secondaryReplica  
Set-SqlAvailabilityReplica -ReadOnlyRoutingList "SecondaryServer","PrimaryServer" -InputObject $primaryReplica  

İzleme: Read-Only Yönlendirmeyi Yapılandırdıktan Sonra

Geçerli birincil çoğaltma ve okunabilir ikincil çoğaltmalar her iki rolde de salt okunur yönlendirmeyi destekleyecek şekilde yapılandırıldıktan sonra, okunabilir ikincil çoğaltmalar kullanılabilirlik grubu dinleyicisi aracılığıyla bağlanan istemcilerden okuma amaçlı bağlantı istekleri alabilir.

Tavsiye

bcp Yardımcı Programı veya sqlcmd Yardımcı Programı'nı kullanırken, -K ReadOnly anahtarını belirterek salt okunur erişim için etkinleştirilen tüm ikincil çoğaltmalara salt okunur erişim belirtebilirsiniz.

İstemci Connection-Strings için Gereksinimler ve Öneriler

İstemci uygulamasının salt okunur yönlendirme kullanması için, bağlantı dizesinin aşağıdaki gereksinimleri karşılaması gerekir:

  • TCP protokollerini kullanın.

  • Uygulama amacı özniteliğini/özelliğini salt okunur olarak ayarlayın.

  • Yalnızca okunabilir yönlendirmeyi destekleyecek şekilde yapılandırılmış bir kullanılabilirlik grubu dinleyicisine başvurun.

  • Bu kullanılabilirlik grubundaki bir veritabanına başvurun.

Buna ek olarak, bağlantı dizelerinin her alt ağda her çoğaltma için paralel istemci iş parçacığını destekleyen çok alt ağ geçişini etkinleştirmenizi öneririz. Bu, yük devretmeden sonra istemci yeniden bağlanma süresini en aza indirir.

Bağlantı dizesinin söz dizimi, bir uygulamanın kullandığı SQL Server sağlayıcısına bağlıdır. SQL Server için .NET Framework Veri Sağlayıcısı 4.0.2 için aşağıdaki örnek bağlantı dizesi, bağlantı dizesinin salt okunur yönlendirme için çalışması gereken ve önerilen bölümlerini gösterir.

Server=tcp:MyAgListener,1433;Database=Db1;IntegratedSecurity=SSPI;ApplicationIntent=ReadOnly;MultiSubnetFailover=True  

Salt okunur uygulama amacı ve salt okunur yönlendirme hakkında daha fazla bilgi için bkz. Kullanılabilirlik Grubu Dinleyicileri, İstemci Bağlantısı ve Uygulama Yük Devretme (SQL Server).

Read-Only Yönlendirme Düzgün Çalışmıyorsa

Salt okunur yönlendirme yapılandırması sorunlarını giderme hakkında bilgi için bkz. Read-Only Yönlendirme Düzgün Çalışmıyor.

Varsayılan yönlendirme davranışına geri dönme

SQL Server 2025 (17.x) sürümünden itibaren, kullanılabilirlik çoğaltması için belirtilen yönlendirmeyi geri almak ve trafiği varsayılan davranışa göre yönlendirmek üzere NONE veya READ_WRITE_ROUTING_URL'i READ_ONLY_ROUTING_URL hedefi olarak belirtebilirsiniz. Daha fazla bilgi edinmek için ALTER AVAILABILITY GROUP Transact-SQL komutunu gözden geçirin.

Sonraki Adımlar

Sadece okunabilir yönlendirme yapılandırmalarını görüntüleme

İstemci bağlantısı erişimini yapılandırmak için

Uygulamalarda bağlantı dizelerini kullanmak için

Blogları:

Ek içerik