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:
- Küme yöneticisi kullanarak gelişmiş iş sürekliliği sağlayan ve okunabilir ikincil çoğaltmalar içerebilen bir yüksek erişilebilirlik 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ı
CLUSTER_TYPE = NONE içeren bir 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 oturumunu etkinleştirin
Bir kullanılabilirlik grubunda sorun giderirken kök neden analizine yardımcı olmak için, isteğe bağlı olarak Always On kullanılabilirlik grupları için genişletilmiş olaylar (XEvents) oturumunu 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çekli kullanılabilirlik grubunda yer alan çoğaltmaların uç nokta üzerinden kimlik doğrulaması yapması 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, dbm_login adlı bir oturum açma adı ve dbm_user adlı bir 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ı gerektiren ikincil bir replika kullanıyorsanız, yansıtma uç noktaları arasında kimlik doğrulamak 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 replikanızda c:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\dbm_certificate.cer konumunda bir sertifika ve c:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\dbm_certificate.pvk konumunda bir ö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şturun
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, her replikayı FAILOVER_MODE = NONE ile ayarlayı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 yapılan bağlantılar, okuma bağlantısı isteklerini yönlendirme listesindeki ikincil çoğaltmaların her birine döngüsel olarak iletir.
Aşağıdaki Transact-SQL betiği adlı ag1bir kullanılabilirlik grubu oluşturur. Betik, kullanılabilirlik grubu çoğaltmalarını SEEDING_MODE = AUTOMATIC ile yapılandırır. 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';
db1 adlı bir veritabanını ag1 adlı bir kullanılabilirlik grubuna eklemek için, birincil SQL Server çoğaltmasında 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.
Yalnızca okunur ikincil çoğaltmalara bağlanın
Yalnızca okunur ikincil replikalara 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 Okunabilir ikincil replikalar bölümüne bakın.
- Uygulamalar ayrıca, dinleyici gerektiren salt okunur yönlendirme özelliğini kullanabilir. Küme yöneticisi olmadan bir okuma ölçeği senaryosu dağıtıyorsanız, yine de geçerli birincil replikanın IP adresine ve SQL Server'ın dinlediği aynı 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 Salt okunur yönlendirme konusuna bakın.
Okuma ölçeğindeki kullanılabilirlik grubunda birincil çoğaltmanın yük devretmesi
Her kullanılabilirlik grubunun yalnızca tek bir birincil çoğaltısı vardır. Birincil replika, okuma ve yazmaya izin verir. Hangi çoğaltmanın birincil olduğunu değiştirmek için, yük devretme gerçekleştirebilirsiniz. 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 manuel yük devretme
- Veri kaybıyla zorunlu manuel yük devretme
Veri kaybı olmadan manuel 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 devretme işlemini başlatmadan önce hedef ikincil çoğaltmanın güncel durumda olduğundan emin olun.
Veri kaybı olmadan manuel olarak yük devretmek için:
Mevcut 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 eşzamanlı ikincil çoğaltmaya commit edildiğini tespit etmek 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;synchronization_state_desc,SYNCHRONIZEDolduğunda ikincil çoğaltma eşitlenir.1'e güncelleştirin
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT.Aşağıdaki betik,
ag1adlı bir kullanılabilirlik grubundaREQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITdeğerini 1 olarak ayarlar. Aşağıdaki betiği çalıştırmadan önceag1öğesini kullanılabilirlik grubunuzun adıyla değiştirin:ALTER AVAILABILITY GROUP [AGRScale] SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 1);Bu ayar, etkin olan her işlemin birincil kopyaya ve zaman uyumlu en az bir ikincil kopyaya kaydedilmesini 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 kopyayı birincile yükseltin.
ALTER AVAILABILITY GROUP AGRScale FORCE_FAILOVER_ALLOW_DATA_LOSS;Eski birincil ve diğer ikincil replikaların rolünü
SECONDARYolarak güncelleştirmek için, eski birincil replikanın barındırıldığı 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 kullanın DROP AVAILABILITY GROUP. Küme türü NONE veya EXTERNAL ile oluşturulmuş bir kullanılabilirlik grubu için, komutu kullanılabilirlik grubunun parçası olan tüm çoğaltılarda çalıştırın.
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çeklendirmesi amacıyla oluşturduğunuz ve bir küme yöneticisi tarafından yönetilmeyen dinleyicileri yeniden oluşturun. Orijinal dinleyici eski birincil düğümü gösteriyorsa onu kaldırın ve yeni birincil düğümü gösterecek şekilde yeniden oluşturun.
Veri kaybıyla zorunlu el ile yük devretme
Birincil kopya kullanılamıyorsa ve hemen kurtarılamıyorsa, veri kaybı yaşayarak ikincil kopyaya yük devretmeyi zorlamanız gerekir. Ancak, orijinal birincil replika yük devretme işleminden sonra kurtarılırsa, birincil rolünü üstlenir. 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 replika N1'den ikincil replika N2'ye veri kaybıyla el ile yük devrini zorlamak için şu adımları izleyin:
İkincil çoğaltma (N2) üzerinde zorunlu 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 kopyaya yönlendirildiğini doğrulayın.
Asıl birincil (N1) yeniden çevrimiçi duruma gelirse, AGRScale kullanılabilirlik grubunu asıl birincil (N1) üzerinde hemen ç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.