Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Windows'da okuma ölçeğindeki iş yükleri için bir SQL Server Always On kullanılabilirlik grubu yapılandırabilirsiniz. Kullanılabilirlik grupları için iki tür mimari vardır:
- İyileştirilmiş iş sürekliliği sağlamak için küme yöneticisi kullanan ve okunabilir-ikincil çoğaltmalar içerebilen yüksek kullanılabilirlik mimarisi. Bu yüksek kullanılabilirlik mimarisini oluşturmak için bkz. Windows'da kullanılabilirlik grupları oluşturma ve yapılandırma.
- Yalnızca okuma ölçeğindeki iş yüklerini destekleyen bir mimari.
Bu makalede, okuma ölçeğindeki iş yükleri için küme yöneticisi olmadan bir kullanılabilirlik grubunun nasıl oluşturulacağı açıklanmaktadır. Bu mimari salt okunur ölçek sağlar. Yüksek kullanılabilirlik sağlamaz.
Uyarı
ile CLUSTER_TYPE = NONE kullanılabilirlik grubu, çeşitli işletim sistemi platformlarında barındırılan çoğaltmalar içerebilir. Yüksek kullanılabilirliği destekleyemez. Linux işletim sistemi için bkz. Linux'ta okuma ölçeği için SQL Server kullanılabilirlik grubu yapılandırma.
Önkoşullar
Kullanılabilirlik grubunu oluşturmadan önce şunları yapmanız gerekir:
- Kullanılabilirlik çoğaltmalarını barındıracak tüm sunucuların iletişim kurabilmesi için ortamınızı ayarlayın.
- SQL Server'ı yükleyin. Ayrıntılar için bkz. SQL Server yükleme kılavuzu .
Always On kullanılabilirlik gruplarını etkinleştirme ve mssql-server'ı yeniden başlatma
Uyarı
Aşağıdaki komut, PowerShell Galerisi'nde yayımlanan sqlserver modülündeki cmdlet'leri kullanır. Komutunu kullanarak Install-Module bu modülü yükleyebilirsiniz.
Sql Server örneğini barındıran her çoğaltmada Always On kullanılabilirlik gruplarını etkinleştirin. Ardından SQL Server hizmetini yeniden başlatın. SQL Server hizmetlerini etkinleştirmek ve yeniden başlatmak için aşağıdaki komutu çalıştırın:
Enable-SqlAlwaysOn -ServerInstance <server\instance> -Force
AlwaysOn_health olay oturumlarını etkinleştirme
Kullanılabilirlik grubu sorunlarını giderirken kök neden tanılamasına yardımcı olmak için isteğe bağlı olarak Always On kullanılabilirlik grupları genişletilmiş olayları (XEvents) oturumlarını etkinleştirebilirsiniz. Bunu yapmak için her SQL Server örneğinde aşağıdaki komutu çalıştırın:
ALTER EVENT SESSION AlwaysOn_health ON SERVER WITH (STARTUP_STATE = ON);
GO
Bu XEvents oturumu hakkında daha fazla bilgi için bkz. Kullanılabilirlik grupları için Genişletilmiş Olayları Yapılandırma.
Veritabanı yansıtma uç noktası kimlik doğrulaması
Eşitlemenin düzgün çalışması için, okuma ölçeği kullanılabilirlik grubuna dahil olan çoğaltmaların uç nokta üzerinden kimlik doğrulamasından geçmeleri gerekir. Bu tür kimlik doğrulaması için kullanabileceğiniz iki ana senaryo sonraki bölümlerde ele alınmıştır.
Hizmet hesabı
Tüm ikincil çoğaltmaların aynı etki alanına katıldığı bir Active Directory ortamında, SQL Server hizmet hesabını kullanarak kimlik doğrulaması yapabilir. Her SQL Server örneğinde hizmet hesabı için açıkça bir oturum açma bilgisi oluşturmanız gerekir:
CREATE LOGIN [<domain>\service account] FROM WINDOWS;
SQL oturum açma kimlik doğrulaması
İkincil çoğaltmaların bir Active Directory etki alanına katılmayabileceği ortamlarda SQL kimlik doğrulamasını kullanmanız gerekir. Aşağıdaki Transact-SQL betiği adlı dbm_login bir oturum açma bilgisi ve adlı dbm_userbir kullanıcı oluşturur.
<password> geçerli bir parolayla değiştirin. Veritabanı yansıtma uç noktası kullanıcısını oluşturmak için tüm SQL Server örneklerinde aşağıdaki komutu çalıştırın.
CREATE LOGIN dbm_login WITH PASSWORD = '<password>';
CREATE USER dbm_user FOR LOGIN dbm_login;
Sertifika kimlik doğrulama
SQL kimlik doğrulaması ile kimlik doğrulaması gerektiren ikincil bir çoğaltma kullanıyorsanız, yansıtma uç noktaları arasında kimlik doğrulaması için bir sertifika kullanın.
Aşağıdaki Transact-SQL betiği bir ana anahtar ve bir sertifika oluşturur. Ardından sertifikayı yedekler ve dosyanın güvenliğini özel bir anahtarla sağlar. Betiği güçlü parolalarla güncelleştirin. Sertifikayı oluşturmak için betiği birincil SQL Server örneğinde çalıştırın:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<dmk-password>';
CREATE CERTIFICATE dbm_certificate WITH SUBJECT = 'dbm';
BACKUP CERTIFICATE dbm_certificate
TO FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\dbm_certificate.cer'
WITH PRIVATE KEY (
FILE = 'c:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\dbm_certificate.pvk',
ENCRYPTION BY PASSWORD = '<private-key-password>'
);
Bu noktada, birincil SQL Server çoğaltmanızda konumunda bir sertifika c:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\dbm_certificate.cer ve konumunda c:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\dbm_certificate.pvközel anahtar vardır. Bu iki dosyayı kullanılabilirlik çoğaltmalarını barındıracak tüm sunucularda aynı konuma kopyalayın.
Her ikincil çoğaltmada, SQL Server örneğinin hizmet hesabının sertifikaya erişme izinlerine sahip olduğundan emin olun.
İkincil sunucularda sertifika oluşturma
Aşağıdaki Transact-SQL betiği, birincil SQL Server çoğaltması üzerinde oluşturduğunuz yedekten bir ana anahtar ve sertifika oluşturur. Komut ayrıca kullanıcılara sertifikaya erişme yetkisi de veir. Betiği güçlü parolalarla güncelleştirin. Şifre çözme parolası, önceki adımda .pvk dosyasını oluşturmak için kullandığınız parolayla aynıdır. Sertifikayı oluşturmak için tüm ikincil çoğaltmalarda aşağıdaki betiği çalıştırın:
CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<dmk-password>';
CREATE CERTIFICATE dbm_certificate
AUTHORIZATION dbm_user
FROM FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\dbm_certificate.cer'
WITH PRIVATE KEY (
FILE = 'c:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\dbm_certificate.pvk',
DECRYPTION BY PASSWORD = '<private-key-password>'
);
Tüm çoğaltmalarda veritabanı yansıtma uç noktaları oluşturma
Veritabanı yansıtma uç noktaları, veritabanı yansıtma oturumlarına veya konak kullanılabilirlik çoğaltmalarına katılan sunucu örnekleri arasında ileti göndermek ve almak için İletim Denetimi Protokolü'ni (TCP) kullanır. Veritabanı yansıtma uç noktası, benzersiz bir TCP bağlantı noktası numarasını dinler.
Aşağıdaki Transact-SQL betiği, kullanılabilirlik grubu için adlı Hadr_endpoint bir dinleme uç noktası oluşturur. Uç noktayı başlatır ve önceki adımda oluşturduğunuz hizmet hesabına veya SQL oturum açma bilgilerine bağlantı izni verir. Betiği çalıştırmadan önce arasındaki < ... >değerleri değiştirin. İsteğe bağlı olarak, bir IP adresi ekleyebilirsiniz. LISTENER_IP = (0.0.0.0) Dinleyici IP adresi bir IPv4 adresi olmalıdır. komutunu da kullanabilirsiniz 0.0.0.0.
Tüm SQL Server örneklerinde ortamınız için aşağıdaki Transact-SQL betiğini güncelleştirin:
CREATE ENDPOINT [Hadr_endpoint]
AS TCP (LISTENER_PORT = **<5022>**)
FOR DATABASE_MIRRORING (
ROLE = ALL,
AUTHENTICATION = CERTIFICATE dbm_certificate,
ENCRYPTION = REQUIRED ALGORITHM AES
);
ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;
GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [<service account or user>];
Dinleyici bağlantı noktası için güvenlik duvarındaki TCP bağlantı noktası açık olmalıdır.
Daha fazla bilgi için bkz . Veritabanı yansıtma uç noktası (SQL Server).
Kullanılabilirlik grubu oluşturma
Kullanılabilirlik grubu oluşturun.
CLUSTER_TYPE = NONEayarlayın. Ayrıca, ile her çoğaltmayı FAILOVER_MODE = NONEayarlayın. Analiz veya raporlama iş yüklerini çalıştıran istemci uygulamaları ikincil veritabanlarına doğrudan bağlanabilir. Salt okunur yönlendirme listesi de oluşturabilirsiniz. Birincil çoğaltmaya yönelik bağlantılar, yönlendirme listesinden ikincil çoğaltmaların her birine okuma bağlantı isteklerini hepsini bir kez deneme şeklinde iletir.
Aşağıdaki Transact-SQL betiği adlı ag1bir kullanılabilirlik grubu oluşturur. Betik, ile SEEDING_MODE = AUTOMATICkullanılabilirlik grubu çoğaltmalarını yapılandırıyor. Bu ayar SQL Server'ın kullanılabilirlik grubuna eklendikten sonra veritabanını her ikincil sunucuda otomatik olarak oluşturmasına neden olur.
Ortamınız için aşağıdaki betiği güncelleştirin.
<node1> ve <node2> değerlerini, çoğaltmaları barındıran SQL Server örneklerinin adlarıyla değiştirin.
<5022> değerini uç nokta için ayarladığınız bağlantı noktasıyla değiştirin. Birincil SQL Server çoğaltması üzerinde aşağıdaki Transact-SQL betiğini çalıştırın:
CREATE AVAILABILITY GROUP [ag1]
WITH (CLUSTER_TYPE = NONE)
FOR REPLICA ON
N'<node1>' WITH (
ENDPOINT_URL = N'tcp://<node1>:<5022>',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SEEDING_MODE = AUTOMATIC,
SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
),
N'<node2>' WITH (
ENDPOINT_URL = N'tcp://<node2>:<5022>',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SEEDING_MODE = AUTOMATIC,
SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
);
ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;
İkincil SQL Server örneklerini kullanılabilirlik grubuna ekleme
Aşağıdaki Transact-SQL betiği, bir sunucuyu adlı ag1bir kullanılabilirlik grubuna ekler. Ortamınız için betiği güncelleştirin. Kullanılabilirlik grubuna katılmak için, her ikincil SQL Server çoğaltması üzerinde aşağıdaki Transact-SQL betiğini çalıştırın:
ALTER AVAILABILITY GROUP [ag1] JOIN WITH (CLUSTER_TYPE = NONE);
ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;
Kullanılabilirlik grubuna veritabanı ekleme
Kullanılabilirlik grubuna eklediğiniz veritabanının tam kurtarma modelinde olduğundan ve geçerli bir günlük yedeğine sahip olduğundan emin olun. Veritabanı bir test veritabanı veya yeni oluşturulan bir veritabanıysa, veritabanı yedeğini alın. adlı db1bir veritabanı oluşturmak ve yedeklemek için, birincil SQL Server örneğinde aşağıdaki Transact-SQL betiğini çalıştırın:
CREATE DATABASE [db1];
ALTER DATABASE [db1] SET RECOVERY FULL;
BACKUP DATABASE [db1]
TO DISK = N'c:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Backup\db1.bak';
adlı ag1bir kullanılabilirlik grubuna adlı db1 bir veritabanı eklemek için, birincil SQL Server çoğaltması üzerinde aşağıdaki Transact-SQL betiğini çalıştırın:
ALTER AVAILABILITY GROUP [ag1] ADD DATABASE [db1];
Veritabanının ikincil sunucularda oluşturulduğunu doğrulayın
Veritabanının db1 oluşturulup oluşturulmadığını ve eşitlenip eşitlenmediğini görmek için, her ikincil SQL Server çoğaltması üzerinde aşağıdaki sorguyu çalıştırın:
SELECT * FROM sys.databases WHERE name = 'db1';
GO
SELECT DB_NAME(database_id) AS 'database', synchronization_state_desc FROM sys.dm_hadr_database_replica_states;
Bu kullanılabilirlik grubu yüksek kullanılabilirlik yapılandırması değildir. Yüksek kullanılabilirliğe ihtiyacınız varsa , Linux üzerinde SQL Server için Always On kullanılabilirlik grubunu yapılandırma veya Windows'dakullanılabilirlik gruplarını oluşturma ve yapılandırma başlığı altındaki yönergeleri izleyin.
Salt okunur ikincil çoğaltmalara bağlanma
Salt okunur ikincil çoğaltmalara iki yoldan biriyle bağlanabilirsiniz:
- Uygulamalar doğrudan ikincil çoğaltmayı barındıran SQL Server örneğine bağlanabilir ve veritabanlarını sorgulayabilir. Daha fazla bilgi için bkz. Okunabilir ikincil çoğaltmalar.
- Uygulamalar, dinleyici gerektiren salt okunur yönlendirmeyi de kullanabilir. Küme yöneticisi olmayan bir okuma ölçeği senaryosu dağıtıyorsanız, yine de geçerli birincil çoğaltmanın IP adresine ve SQL Server'ın dinlediği bağlantı noktasına işaret eden bir dinleyici oluşturabilirsiniz. Yük devretme işleminden sonra dinleyiciyi yeni birincil IP adresine işaret edecek şekilde yeniden oluşturmanız gerekir. Daha fazla bilgi için bkz. Salt okunur yönlendirme.
Okuma ölçeğindeki kullanılabilirlik grubunda birincil çoğaltmanın yük devretmesi
Her kullanılabilirlik grubunun yalnızca bir birincil çoğaltması vardır. Birincil çoğaltma okuma ve yazma işlemlerine izin verir. Birincil çoğaltmayı değiştirmek için yük devredebilirsiniz. Tipik bir kullanılabilirlik grubunda, küme yöneticisi yük devretme işlemini otomatikleştirir. Küme türü NONE olan bir kullanılabilirlik grubunda yük devretme işlemi el ile gerçekleştirilir.
Küme türü NONE olan bir kullanılabilirlik grubunda birincil çoğaltmaya yük devretmenin iki yolu vardır:
- Veri kaybı olmadan el ile yük devretme
- Veri kaybıyla zorla el ile yük devretme
Veri kaybı olmadan el ile yük devretme
Birincil çoğaltma kullanılabilir olduğunda bu yöntemi kullanın, ancak birincil çoğaltmayı barındıran örneği geçici veya kalıcı olarak değiştirmeniz gerekir. Olası veri kaybını önlemek için, el ile yük devretmeyi vermeden önce hedef ikincil çoğaltmanın güncel olduğundan emin olun.
Veri kaybı olmadan el ile yük devretme yapmak için:
Geçerli birincil ve hedef ikincil çoğaltmayı
SYNCHRONOUS_COMMITyapın.ALTER AVAILABILITY GROUP [AGRScale] MODIFY REPLICA ON N'<node2>' WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT);Etkin işlemlerin birincil çoğaltmaya ve en az bir zaman uyumlu ikincil çoğaltmaya işlendiğini belirlemek için aşağıdaki sorguyu çalıştırın:
SELECT ag.name, drs.database_id, drs.group_id, drs.replica_id, drs.synchronization_state_desc, ag.sequence_number FROM sys.dm_hadr_database_replica_states drs, sys.availability_groups ag WHERE drs.group_id = ag.group_id;İkincil çoğaltma olduğunda eşitlenir
synchronization_state_descSYNCHRONIZED.1'e güncelleştirin
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT.Aşağıdaki betik adlı
ag1bir kullanılabilirlik grubunda 1 olarak ayarlarREQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT. Aşağıdaki betiği çalıştırmadan önce değerini kullanılabilirlik grubunuzun adıyla değiştirinag1:ALTER AVAILABILITY GROUP [AGRScale] SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 1);Bu ayar, her etkin işlemin birincil çoğaltmaya ve en az bir zaman uyumlu ikincil çoğaltmaya işlenmesini sağlar.
Uyarı
Bu ayar yük devretmeye özgü değildir ve ortamın gereksinimlerine göre ayarlanmalıdır.
Rol değişikliğine hazırlanmak için birincil çoğaltmayı ve yük devretmeye katılmayan ikincil çoğaltmaları çevrimdışı olarak ayarlayın:
ALTER AVAILABILITY GROUP [AGRScale] OFFLINEHedef ikincil çoğaltmayı birincile yükseltin.
ALTER AVAILABILITY GROUP AGRScale FORCE_FAILOVER_ALLOW_DATA_LOSS;Eski birincil ve diğer ikincillerin rolünü ile
SECONDARYgüncelleştirin, eski birincil çoğaltmayı barındıran SQL Server örneğinde aşağıdaki komutu çalıştırın:ALTER AVAILABILITY GROUP [AGRScale] SET (ROLE = SECONDARY);Uyarı
Kullanılabilirlik grubunu silmek için DROP AVAILABILITY GROUP kullanın. Küme türü NONE veya EXTERNAL ile oluşturulan bir kullanılabilirlik grubu için, kullanılabilirlik grubunun parçası olan tüm çoğaltmalarda komutunu yürütür.
Veri taşımayı sürdürürken, birincil çoğaltmayı barındıran SQL Server örneğindeki kullanılabilirlik grubundaki her veritabanı için aşağıdaki komutu çalıştırın:
ALTER DATABASE [db1] SET HADR RESUMEOkuma ölçeği için oluşturduğunuz ve küme yöneticisi tarafından yönetilmeyecek dinleyicileri yeniden oluşturun. Özgün dinleyici eski birincili işaret ederse bırakın ve yeni birincile işaret etmek için yeniden oluşturun.
Veri kaybıyla zorla el ile yük devretme
Birincil çoğaltma kullanılamıyorsa ve hemen kurtarılamıyorsa, ikincil çoğaltmaya veri kaybıyla yük devretmeyi zorlamanız gerekir. Ancak, özgün birincil çoğaltma yük devretmeden sonra kurtarılırsa, birincil rolü kabul eder. Her çoğaltmanın farklı bir durumda olmasını önlemek için, veri kaybıyla zorunlu yük devretme sonrasında özgün birincili kullanılabilirlik grubundan kaldırın. Özgün birincil yeniden çevrimiçi olduktan sonra kullanılabilirlik grubunu tamamen kaldırın.
Birincil çoğaltma N1'den ikincil çoğaltma N2'ye veri kaybıyla el ile yük devretmeye zorlamak için şu adımları izleyin:
İkincil çoğaltmada (N2) zorlamalı yük devretmeyi başlatın:
ALTER AVAILABILITY GROUP [AGRScale] FORCE_FAILOVER_ALLOW_DATA_LOSS;Yeni birincil çoğaltmada (N2), özgün birincili (N1) kaldırın:
ALTER AVAILABILITY GROUP [AGRScale] REMOVE REPLICA ON N'N1';Tüm uygulama trafiğinin dinleyiciye ve/veya yeni birincil çoğaltmaya işaret ettiğini doğrulayın.
Özgün birincil (N1) çevrimiçiyse, AGRScale kullanılabilirlik grubunu hemen özgün birincilde (N1) çevrimdışına alın:
ALTER AVAILABILITY GROUP [AGRScale] OFFLINEVeriler veya eşitlenmemiş değişiklikler varsa, yedeklemeler veya iş gereksinimlerinize uygun diğer veri çoğaltma seçenekleri aracılığıyla bu verileri koruyun.
Ardından, kullanılabilirlik grubunu özgün birincilden (N1) kaldırın:
DROP AVAILABILITY GROUP [AGRScale];Kullanılabilirlik grubu veritabanını özgün birincil çoğaltmaya (N1) bırakın:
USE [master] GO DROP DATABASE [AGDBRScale] GO(İsteğe bağlı) İsterseniz, artık AGRScale kullanılabilirlik grubuna N1'i yeni bir ikincil çoğaltma olarak geri ekleyebilirsiniz.
Bağlanmak için bir dinleyici kullanıyorsanız, yük devretmeyi gerçekleştirdikten sonra dinleyiciyi yeniden oluşturmanız gerektiğini unutmayın.