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.
Şunlar için geçerlidir:Linux üzerinde SQL Server
Bu öğreticide, Linux üzerinde SQL Server için kullanılabilirlik grubu (AG) oluşturma ve yapılandırma gösterilmektedir. SQL Server 2016 (13.x) ve Windows'un önceki sürümlerinden farklı olarak, önce temel Pacemaker kümesini oluşturarak veya oluşturmadan ag'yi etkinleştirebilirsiniz. Gerekirse kümeyle tümleştirme daha sonra gerçekleşir.
Eğitim aşağıdaki görevleri içerir:
- Kullanılabilirlik gruplarını etkinleştirin.
- Kullanılabilirlik grubu uç noktaları ve sertifikaları oluşturun.
- Kullanılabilirlik grubu oluşturmak için SQL Server Management Studio (SSMS) veya Transact-SQL kullanın.
- Pacemaker için SQL Server oturum açma bilgilerini ve izinlerini oluşturun.
- Pacemaker kümesinde kullanılabilirlik grubu kaynakları oluşturun (yalnızca dış tür).
Prerequisites
Pacemaker yüksek kullanılabilirlik kümesini dağıtın. Daha fazla bilgi için bkz. Deploy a Pacemaker cluster for Linux üzerinde SQL Server.
Kullanılabilirlik grupları özelliğini etkinleştirme
Windows'un aksine, kullanılabilirlik grupları (AG) özelliğini etkinleştirmek için PowerShell veya SQL Server Yapılandırma Yöneticisi'ı kullanamazsınız. Linux'ta kullanılabilirlik grupları özelliğini iki şekilde etkinleştirebilirsiniz: yardımcı programını kullanın mssql-conf veya dosyayı el ile düzenleyin mssql.conf .
Important
SQL Server Express'te bile yalnızca yapılandırma amaçlı çoğaltmalar için AG özelliğini etkinleştirmeniz gerekir.
Yardımcı programı mssql-conf kullanın
İstemde aşağıdaki komutu çalıştırın:
sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
mssql.conf dosyasını düzenleme
Klasörün altında mssql.conf bulunan dosyayı da değiştirebilirsiniz/var/opt/mssql. Aşağıdaki satırları ekleyin:
[hadr]
hadr.hadrenabled = 1
SQL Server'ın yeniden başlatılması
Kullanılabilirlik gruplarını etkinleştirdikten sonra SQL Server'ı yeniden başlatmanız gerekir. Aşağıdaki komutu kullanın:
sudo systemctl restart mssql-server
Kullanılabilirlik grubu uç noktalarını ve sertifikalarını oluşturma
Kullanılabilirlik grubu iletişim için TCP uç noktalarını kullanır. Linux'ta, SQL Server yalnızca kimlik doğrulaması için sertifikalar kullanıyorsanız, AG için uç noktaları destekler. Aynı AG'de yedek olarak katılan diğer tüm örneklerde bir örneğin sertifikasını geri yüklemelisiniz. Yalnızca yapılandırma amaçlı çoğaltma için bile sertifika işlemine ihtiyacınız vardır.
Uç noktalar oluşturabilir ve sertifikaları sadece Transact-SQL kullanarak geri getirebilirsiniz. SQL Server tarafından oluşturulmamış sertifikaları da kullanabilirsiniz. Ayrıca süresi dolan sertifikaları yönetmek ve değiştirmek için bir işleme de ihtiyacınız vardır.
Important
AG'yi oluşturmak için SQL Server Management Studio sihirbazını kullanmayı planlıyorsanız, Linux'ta Transact-SQL kullanarak sertifikaları oluşturmanız ve geri yüklemeniz gerekir.
Çeşitli komutlar (güvenlik dahil) için kullanılabilen seçeneklerde tam söz dizimi için bkz:
Note
Erişilebilirlik grubu oluşturuyor olsanız da, uç nokta türü , kullanır FOR DATABASE_MIRRORINGçünkü uç nokta tipi, artık kullanımdan kaldırılan bu özellikle altta yatan yönleri paylaşır.
Bu örnek, üç düğümlü yapılandırma için sertifikalar oluşturur. Örnek adları LinAGN1, LinAGN2ve LinAGN3.
LinAGN1üzerinde ana anahtarı, sertifikayı ve uç noktayı oluşturmak ve sertifikayı yedeklemek için aşağıdaki betiği yürütün. Bu örnekte, uç nokta tipik TCP portu 5022'yi kullanır.CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN1_Cert WITH SUBJECT = 'LinAGN1 AG Certificate'; GO BACKUP CERTIFICATE LinAGN1_Cert TO FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN1_Cert, ROLE = ALL ); GOLinAGN2üzerinde aynı işlemi yapın:CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN2_Cert WITH SUBJECT = 'LinAGN2 AG Certificate'; GO BACKUP CERTIFICATE LinAGN2_Cert TO FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN2_Cert, ROLE = ALL ); GOSon olarak,
LinAGN3üzerinde aynı sırayı gerçekleştirin:CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN3_Cert WITH SUBJECT = 'LinAGN3 AG Certificate'; GO BACKUP CERTIFICATE LinAGN3_Cert TO FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN3_Cert, ROLE = ALL ); GOscpSertifikanın yedeklerini AG'nin parçası olmak istediğiniz her düğüme kopyalamak için başka bir yardımcı programı kullanın.Bu örnek için:
-
LinAGN1_Cert.cer'ıLinAGN2veLinAGN3'ye kopyalayın. -
LinAGN2_Cert.cer'ıLinAGN1veLinAGN3'ye kopyalayın. -
LinAGN3_Cert.cer'ıLinAGN1veLinAGN2'ye kopyalayın.
-
Sahipliğini ve kopyalanan sertifika dosyalarıyla ilişkili grubu
mssqlolarak değiştirin.sudo chown mssql:mssql <CertFileName>LinAGN2üzerindeLinAGN3veLinAGN1ile ilişkili örnek düzeyinde oturum açma bilgilerini ve kullanıcıları oluşturun.CREATE LOGIN LinAGN2_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN2_User FOR LOGIN LinAGN2_Login; GO CREATE LOGIN LinAGN3_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN3_User FOR LOGIN LinAGN3_Login; GOCaution
Parolanız varsayılan SQL Server password ilkesini izlemelidir. Varsayılan olarak, parola en az sekiz karakter uzunluğunda olmalı ve şu dört kümeden üçünün karakterlerini içermelidir: büyük harfler, küçük harfler, 10 tabanındaki basamaklar ve simgeler. Parolalar en çok 128 karakter uzunluğunda olabilir. Mümkün olduğunca uzun ve karmaşık parolalar kullanın.
LinAGN2_Cert'daLinAGN3_CertveLinAGN1geri yükleyin. Diğer replikaların sertifikaları AG iletişimi ve güvenliği için gereklidir.CREATE CERTIFICATE LinAGN2_Cert AUTHORIZATION LinAGN2_User FROM FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer'; GO CREATE CERTIFICATE LinAGN3_Cert AUTHORIZATION LinAGN3_User FROM FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer'; GOLinAGN2veLinAGN3ile ilişkili oturum açma bilgilerineLinAGN1uç noktasına bağlanma izni verin.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login;LinAGN1üzerindeLinAGN3veLinAGN2ile ilişkili örnek düzeyinde oturum açma bilgilerini ve kullanıcıları oluşturun.CREATE LOGIN LinAGN1_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN1_User FOR LOGIN LinAGN1_Login; GO CREATE LOGIN LinAGN3_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN3_User FOR LOGIN LinAGN3_Login; GOLinAGN1_Cert'daLinAGN3_CertveLinAGN2geri yükleyin.CREATE CERTIFICATE LinAGN1_Cert AUTHORIZATION LinAGN1_User FROM FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer'; GO CREATE CERTIFICATE LinAGN3_Cert AUTHORIZATION LinAGN3_User FROM FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer'; GOLinAGN1veLinAGN3ile ilişkili oturum açma bilgilerineLinAGN2uç noktasına bağlanma izni verin.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login; GOLinAGN1üzerindeLinAGN2veLinAGN3ile ilişkili örnek düzeyinde oturum açma bilgilerini ve kullanıcıları oluşturun.CREATE LOGIN LinAGN1_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN1_User FOR LOGIN LinAGN1_Login; GO CREATE LOGIN LinAGN2_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN2_User FOR LOGIN LinAGN2_Login; GOLinAGN1_Cert'daLinAGN2_CertveLinAGN3geri yükleyin.CREATE CERTIFICATE LinAGN1_Cert AUTHORIZATION LinAGN1_User FROM FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer'; GO CREATE CERTIFICATE LinAGN2_Cert AUTHORIZATION LinAGN2_User FROM FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer'; GOLinAGN1veLinAGN2ile ilişkili oturum açma bilgilerineLinAGN3uç noktasına bağlanma izni verin.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GO
Kullanılabilirlik grubunu oluşturma
Bu bölümde SQL Server için kullanılabilirlik grubu oluşturmak üzere SQL Server Management Studio'nun (SSMS) veya Transact-SQL nasıl kullanılacağı gösterilmektedir.
SQL Server Management Studio'yu kullanma
Bu bölüm, Yeni Erişilebilirlik Grubu Wizard ile SSMS kullanarak bir küme türü Dış ile AG nasıl oluşturulacağını gösterir.
SSMS'de Always On High Availability genişletin, Kullanılabilirlik Gruplarıöğesine sağ tıklayın ve Yeni Kullanılabilirlik Grubu Sihirbazı'nıseçin.
Giriş diyalogunda Sonraki'yi seçin.
Kullanılabilirlik Grubu Seçeneklerini Belirtin iletişim kutusunda AG için bir ad girin ve açılan listeden
EXTERNALveyaNONEküme türünü seçin. Pacemaker'ı dağıtırken kullanınEXTERNAL. Okuma ölçeği genişletme gibi özel senaryolar içinNONEkullanın. Veritabanı düzeyinde sağlık durumu algılama seçeneğinin seçilmesi isteğe bağlıdır. Bu seçenek hakkında daha fazla bilgi için bkz. Kullanılabilirlik grubu veritabanı düzeyinde sistem sağlığı algılama yük devretme seçeneği. sonrakiseçin.Veritabanlarını Seç diyalogunda, AG'ye katılmak istediğiniz veritabanlarını seçin. Her veritabanı, bir AG'ye eklenmeden önce tam yedeklenmelidir. sonrakiseçin.
Replikaları Belirt diyalogunda Replika Ekle seçeneğini seçin.
Connect to Server diyalogunda, ikincil replika için SQL Server'ın Linux örneğinin adını ve bağlanmak için kimlik bilgilerini girin. Bağlan seçeneğini seçin.
Yalnızca yapılandırma amaçlı çoğaltma veya başka bir ikincil çoğaltma içeren örnek için önceki iki adımı yineleyin.
Üç örnek de Replikaları Belirt diyalogunda görünür. Eğer küme tipi Dış kullanıyorsanız, gerçek ikincil replika için kullanılabilirlik modunun birincil replika ile eşleştiğinden emin olun ve devre modunu Dışa ayarlayın. Yalnızca yapılandırma amaçlı çoğaltma için Yalnızca Yapılandırma'nın kullanılabilirlik modunu seçin.
Aşağıdaki örnekte, iki çoğaltmaya sahip bir AG, küme türü Dışsal ve yalnızca yapılandırma için bir çoğaltma gösterilmektedir.
Aşağıdaki örnekte iki çoğaltması olan bir AG, küme türü 'Yok' ve yalnızca yapılandırma replikası gösterilmektedir.
Yedek tercihlerini değiştirmek istiyorsanız, Yedek Tercihleri sekmesini seçin. AG'lerle yedekleme tercihleri hakkında daha fazla bilgi için, Always On erişilebilirlik grubunun ikincil replikalarında yedeklemeleri yapılandırma bölümünü inceleyebilirsiniz.
Okunabilir ikincil öğeler kullanıyorsanız veya okuma ölçeği için küme türü Yok olan bir AG oluşturuyorsanız, Dinleyici sekmesini seçerek bir dinleyici oluşturabilirsiniz. Daha sonra bir dinleyici de ekleyebilirsiniz. Dinleyici oluşturmak için, Kullanılabilirlik grubu dinleyicisi oluştur seçeneğini seçin ve bir isim, TCP/IP portu ve statik mi yoksa otomatik olarak atanan DHCP IP adresi mi kullanılacağını girin. Küme tipi None olan bir AG için, birincil IP adresiyle eşleşen statik bir IP kullanın.
Okunabilir senaryolar için bir dinleyici oluşturursanız, SSMS sihirbazda yalnızca okunabilir yönlendirme oluşturulmasına izin verir. Daha sonra SSMS veya Transact-SQL kullanarak da ekleyebilirsiniz. Şimdi salt okunur yönlendirme eklemek için:
Read-Only Yönlendirme sekmesini seçin.
Yalnızca okuma kopyalarının URL'lerini girin. Bu URL'ler uç noktalara benzer, ancak uç nokta yerine örneğin bağlantı noktasını kullanırlar.
- Her URL'yi seçin ve alt kısımdan okunabilir çoğaltmaları seçin. Birden çok seçmek için Shift tuşunu basılı tutun veya sürükleyerek seçin.
sonrakiseçin.
İkincil çoğaltmaların nasıl başlatileceğini seçin. Varsayılan ayar, AG'ye katılan tüm sunucularda aynı yolu gerektiren otomatik tohumlamakullanmaktır. Sihirbazın yedekleme, kopyalama ve geri yükleme (ikinci seçenek) gerçekleştirmesini de sağlayabilirsiniz; veritabanını çoğaltmalarda el ile yedeklediyseniz, kopyaladıysanız ve geri yüklediyseniz birleştirmesini (üçüncü seçenek); veya veritabanını daha sonra ekleyin (son seçenek). Sertifikalarda olduğu gibi, eğer el ile yedekleme yapıyor ve kopyalıyorsanız, diğer replikalardaki yedekleme dosyaları üzerinde izinleri ayarlayın. sonrakiseçin.
Doğrulama diyalogunda, eğer büyücü tüm kontroller için Başarı döndürmezse, daha fazla araştırın. Dinleyici oluşturmadığınız durumlar gibi bazı uyarılar kabul edilebilir ve ölümcül değildir. sonrakiseçin.
Özet diyalogunda Bitir seçeneğini seçin. AG oluşturma işlemi şimdi başlıyor.
AG oluşturma işlemi tamamlandığında, Sonuçlar sayfasında Kapat seçeneğini seçin. Artık dinamik yönetim görünümlerinde ve SSMS'de "Always On Yüksek Kullanılabilirlik" klasörünün altında yer alan çoğaltmalarda AG'yi görebilirsiniz.
Transact-SQL kullanma
Bu bölüm, Transact-SQL kullanılarak AG oluşturma örneklerini göstermektedir. AG'yi oluşturduktan sonra dinleyiciyi ve salt okunur yönlendirmeyi yapılandırabilirsiniz. KULLANARAK AG'nin kendisini ALTER AVAILABILITY GROUPdeğiştirebilirsiniz, ancak SQL Server 2017'de (14.x) küme türünü değiştiremezsiniz. Küme türü Dış olan bir AG oluşturmak istemiyorsanız, bunu silip Yok küme türüyle yeniden oluşturmanız gerekir.
Daha fazla bilgi ve diğer seçenekler için bakınız:
- CREATE AVAILABILITY GROUP
- ALTER AVAILABILITY GROUP
- Always On kullanılabilirlik grubu için salt okunur yönlendirmeyi yapılandırma
- Always On kullanılabilirlik grubu için bir dinleyici yapılandırın
Örnek A: Yalnızca yapılandırma amaçlı çoğaltmaya sahip iki çoğaltma (Harici küme türü)
Bu örnekte, yalnızca yapılandırma amaçlı çoğaltma kullanan iki çoğaltmalı bir AG'nin nasıl oluşturulacağı gösterilmektedir.
Veritabanlarının okuma/yazma kopyasını içeren birincil replika düğümünde aşağıdaki ifadeyi çalıştırın. Bu örnekte otomatik tohumlama gerçekleştirilir.
CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = EXTERNAL) FOR DATABASE <DBName> REPLICA ON N'LinAGN1' WITH ( ENDPOINT_URL = N' TCP://LinAGN1.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT ), N'LinAGN2' WITH ( ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, SEEDING_MODE = AUTOMATIC ), N'LinAGN3' WITH ( ENDPOINT_URL = N'TCP://LinAGN3.FullyQualified.Name:5022', AVAILABILITY_MODE = CONFIGURATION_ONLY ); GODiğer replikaya bağlı bir sorgu penceresinde, replikayı AG'ye bağlamak için aşağıdaki ifadeyi çalıştırın ve birincil replikadan ikincil replikaya tohumlama başlatmaya başlayın.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GOYapılandırma sadece replikaya bağlı bir sorgu penceresinde, AG'ye bağlamak için aşağıdaki ifadeyi çalıştırın.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO
Örnek B: Salt okunur yönlendirmeli üç çoğaltma (Dış küme türü)
Bu örnek, üç tam replika için ilk AG oluşturma sürecinin bir parçası olarak yalnızca okunan yönlendirmeyi nasıl yapılandıracağınızı gösterir.
Birincil çoğaltma işlevini gören ve veritabanlarının tam okuma/yazma kopyasını içeren düğümde aşağıdaki ifadeyi çalıştırın. Bu örnekte otomatik tohumlama gerçekleştirilir.
CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = EXTERNAL) FOR DATABASE < DBName > REPLICA ON N'LinAGN1' WITH ( ENDPOINT_URL = N'TCP://LinAGN1.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN2.FullyQualified.Name', 'LinAGN3.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN1.FullyQualified.Name:1433') ), N'LinAGN2' WITH ( ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, SEEDING_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN1.FullyQualified.Name', 'LinAGN3.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN2.FullyQualified.Name:1433') ), N'LinAGN3' WITH ( ENDPOINT_URL = N'TCP://LinAGN3.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, SEEDING_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN1.FullyQualified.Name', 'LinAGN2.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN3.FullyQualified.Name:1433') ) LISTENER '<ListenerName>' ( WITH IP = ('<IPAddress>', '<SubnetMask>'), Port = 1433 ); GOBu yapılandırma hakkında dikkate bilmeniz gereken birkaç nokta:
- AG'nin adı
AGName'dir. -
DBNameAG ile kullandığınız veritabanının adıdır. Ayrıca virgülle ayrılmış bir isim listesi de olabilir. -
ListenerNamealtta yatan sunuculardan veya düğümlerden farklı bir isimdir. Bunu DNS'eIPAddresskaydedersiniz. -
IPAddressiçin IPListenerNameadresidir. Ayrıca benzersiz ve hiçbir sunucu veya düğümle eşleşmiyor. Uygulamalar ve son kullanıcılar AG'ye bağlanmak içinListenerNameveyaIPAddresskullanır.-
SubnetMask,IPAddressalt ağ maskesidir. SQL Server 2019 (15.x) ve önceki sürümlerde bu değerdir255.255.255.255. SQL Server 2022 (16.x) ve sonraki sürümlerinde bu değer olur0.0.0.0.
-
- AG'nin adı
Diğer çoğaltmaya bağlı bir sorgu penceresinde aşağıdaki deyimi yürüterek çoğaltmayı AG'ye ekleyin ve birincil çoğaltmadan ikincil çoğaltmaya dağıtım işlemini başlatın.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GOÜçüncü çoğaltma için 2. Adımı yineleyin.
Örnek C: Okuma yönlendirmeli iki çoğaltma (küme türü: yok)
Bu örnek, None küme tipi kullanan iki replika konfigürasyonu oluşturur. Bu yapılandırmayı, yedekleme beklemediğiniz okuma ölçeği senaryosu için kullanın. Bu adım, birincil replika olan dinleyiciyi oluşturur ve round-robin işlevselliğiyle yalnızca okunan yönlendirmeyi yapılandırır.
Birincil çoğaltma işlevini gören ve veritabanlarının tam okuma/yazma kopyasını içeren düğümde aşağıdaki ifadeyi çalıştırın. Bu örnekte otomatik tohumlama gerçekleştirilir.
CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = NONE) FOR DATABASE <DBName> REPLICA ON N'LinAGN1' WITH ( ENDPOINT_URL = N'TCP://LinAGN1.FullyQualified.Name: <PortOfEndpoint>', FAILOVER_MODE = MANUAL, AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, PRIMARY_ROLE( ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = (('LinAGN1.FullyQualified.Name'.'LinAGN2.FullyQualified.Name')) ), SECONDARY_ROLE( ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN1.FullyQualified.Name:<PortOfInstance>' ) ), N'LinAGN2' WITH ( ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:<PortOfEndpoint>', FAILOVER_MODE = MANUAL, SEEDING_MODE = AUTOMATIC, AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ('LinAGN1.FullyQualified.Name', 'LinAGN2.FullyQualified.Name') )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN2.FullyQualified.Name:<PortOfInstance>') ), LISTENER '<ListenerName>' (WITH IP = ( '<PrimaryReplicaIPAddress>', '<SubnetMask>'), Port = <PortOfListener> ); GOBu örnekte:
- AG'nin adı
AGName'dir. -
DBNameAG ile kullandığınız veritabanının adıdır. Ayrıca virgülle ayrılmış bir isim listesi de olabilir. -
PortOfEndpointoluşturduğunuz uç noktanın port numarasıdır.-
PortOfInstanceSQL Server örneği için port numarasıdır.
-
-
ListenerNameTemel kopyalardan farklı bir geçici isimdir. -
PrimaryReplicaIPAddress, ana replikanın IP adresidir.-
SubnetMask,IPAddressalt ağ maskesidir. SQL Server 2019 (15.x) ve önceki sürümlerde bu değerdir255.255.255.255. SQL Server 2022 (16.x) ve sonraki sürümlerinde bu değer olur0.0.0.0.
-
- AG'nin adı
İkincil replikayı AG'ye dahil edin ve otomatik tohumlamayı başlatın.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = NONE); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GO
Pacemaker için SQL Server oturum açma bilgilerini ve izinlerini oluşturma
Linux üzerinde SQL Server kullanan bir Pacemaker yüksek kullanılabilirlik kümesi, SQL Server örneğine ve AG (Kullanılabilirlik Grubu) üzerindeki izinlere erişmesi gerekir. Bu adımlar, Pacemaker'a SQL Server'da nasıl kimlik doğrulaması yapılacağını bildiren bir dosyayla birlikte oturum açma bilgilerini ve ilişkili izinleri oluşturur.
İlk çoğaltmaya bağlı bir sorgu penceresinde aşağıdaki betiği yürütebilirsiniz:
CREATE LOGIN PMLogin WITH PASSWORD = '<password>'; GO GRANT VIEW SERVER STATE TO PMLogin; GO GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::<AGThatWasCreated> TO PMLogin; GONode 1'de dosyaya aşağıdaki iki satırı
/var/opt/mssql/secrets/passwdekleyin:PMLogin <password>Bu dosyayı düzenlemek için izinlerinizi
sudoyükseltmeniz gerekebilir.Dosyayı kilitle:
sudo chmod 400 /var/opt/mssql/secrets/passwdKopya olarak hizmet veren diğer sunucularda 1'den 5'e kadar olan adımları tekrarlayın.
Pacemaker kümesinde kullanılabilirlik grubu kaynaklarını oluşturma (Yalnızca dış)
SQL Server'da bir AG oluşturduktan sonra, küme türü dış olduğunda Pacemaker'da ilgili kaynakları oluşturmanız gerekir. AG'nin iki kaynağa ihtiyacı vardır: kullanılabilirlik grubu kaynağı ve bir IP adresi kaynağı. Dinleyici kullanmıyorsanız IP adresi kaynağını yapılandırmak isteğe bağlıdır. Ancak, dinleyici özelliklerine ihtiyacınız olduğunda önerilir.
Oluşturduğunuz AG kaynağı, "klon" olarak adlandırılan bir kaynak türüdür. AG kaynağında her düğümde kopyalar bulunur ve bir kontrolcü kaynak olarak adlandırılan bir kaynak vardır. Tanıtılan kaynak, birincil kopyayı barındıran sunucuya karşılık gelir. Diğer kaynaklar ikincil replikaları (normal veya sadece yapılandırma için) barındırır ve bunlar bir yedekleme sırasında yükseltilebilir.
Note
Toplu Güncelleştirme (CU) 3 ve sonraki sürümleriyle SQL Server 2025'te (17.x), Paket aracılığıyla mssql-server-ha Red Hat Enterprise Linux (RHEL) ve Ubuntu için Pacemaker HA aracısı v2 (Önizleme) kullanılabilir. Pacemaker HA agent v2'yi üretim dışı dağıtımlarda değerlendirebilirsiniz. Mevcut Pacemaker HA ajanı (v1) hâlâ üretim dağıtımları için tam olarak desteklenmektedir. Daha fazla bilgi için bkz . Pacemaker HA aracısı v2 (Önizleme).
Pacemaker HA aracısı v1
Pacemaker HA aracısını (v1) kullanarak Pacemaker'da AG kaynağını oluşturun: (
ocf:mssql:ag)sudo pcs resource create <NameForAGResource> ocf:mssql:ag ag_name=<AGName> meta failure-timeout=30s promotable notify=trueBu örnekte,
NameForAGResourceAG için bu küme kaynağına verdiğiniz benzersiz ad veAGNameoluşturduğunuz AG'nin adıdır.Dinleyici işlevselliğiyle ilişkilendirdiğiniz AG için IP adresi kaynağını oluşturun.
sudo pcs resource create <NameForIPResource> ocf:heartbeat:IPaddr2 ip=<IPAddress> cidr_netmask=<Netmask>Bu örnekte,
NameForIPResourceIP kaynağının benzersiz adı veIPAddresskaynağa atadığınız statik IP adresidir.IP adresinin ve AG kaynağının aynı düğümde çalıştığından emin olmak için bir birlikte bulundurma kısıtlaması yapılandırın.
sudo pcs constraint colocation add <NameForIPResource> with promoted <NameForAGResource>-clone INFINITYBu örnekte,
NameForIPResourceIP kaynağının adı veNameForAGResourceAG kaynağının adıdır.AG kaynağının IP adresinden önce çalıştığından emin olmak için bir sıralama kısıtlaması oluşturun. Ko-lokasyon kısıtlaması bir sıralama kısıtlamasını belirtir, fakat bu adım onu zorunlu kılar.
sudo pcs constraint order promote <NameForAGResource>-clone then start <NameForIPResource>Bu örnekte,
NameForIPResourceIP kaynağının adı veNameForAGResourceAG kaynağının adıdır.
Pacemaker HA ajan v2 (Önizleme)
Pacemaker HA agent v2 hizmet tabanlı bir mimari kullanır. Ajan, SQL Server'a özgü yüksek erişilebilirlik işlemlerini ve Pacemaker ile iletişimi yürütmekten sorumlu olan mssql-pcsag, adlı özel bir sistem servisi olarak çalışır.
Hizmeti standart sistem servis kontrolleri aracılığıyla yönetiyorsunuz mssql-pcsag . Başlat, durdur, yeniden başlat ve aşağıdaki komutlarla bu hizmetin durumunu gerekli şekilde kontrol et:
sudo systemctl start mssql-pcsag # Start the Pacemaker HA agent v2 (mssql-pcsag) service
sudo systemctl stop mssql-pcsag # Stop the Pacemaker HA agent v2 (mssql-pcsag) service
sudo systemctl restart mssql-pcsag # Restart the Pacemaker HA agent v2 (mssql-pcsag) service
sudo systemctl status mssql-pcsag # Check the status of the Pacemaker HA agent v2 (mssql-pcsag) service
Pacemaker, hizmet aracılığıyla SQL Server kullanılabilirlik gruplarıyla etkileşim kurar mssql-pcsag . Kullanılabilirlik grubu izlemesinin ve yük devretmenin doğru bir şekilde çalışması için:
- Pacemaker kümesi çalışıyor olmalıdır.
- Hizmetin
mssql-pcsagçalışıyor olması gerekir.
Pacemaker ve mssql-pcsag ayrı bileşenler olmalarına rağmen, çalışma zamanında birlikte çalışırlar. Pacemaker veya mssql-pcsag hizmet durursa, kullanılabilirlik grubu failover işlemleri beklendiği gibi çalışmaz.
Note
Hizmetin yeniden başlatılması mssql-pcsag SQL Server'ın yeniden başlatılmasına neden olmaz. Benzer şekilde, SQL Server'ın yeniden başlatılması Pacemaker HA aracısını otomatik olarak yeniden başlatmaz. Sorun giderme sırasında her iki hizmetin de çalıştığını doğrulayın.
Pacemaker HA aracısı v2, aşağıdakiler dahil olmak üzere önceki aracıya göre güvenilirlik ve performans geliştirmeleri sunar:
Hem planlanan hem de planlanmamış yük devretme sürelerini azaltmak için iyileştirilmiş yük devretme performansı.
Hata koşulu düzeyinin ve sağlık kontrolü zaman aşımı yapılandırılması dahil olmak üzere esnek otomatik yük devretme ilkelerine destek.
Örnek: Aşağıdaki Transact-SQL deyimi AG1 adlı mevcut kullanılabilirlik grubunun hata koşulu düzeyini düzey 2 olarak değiştirir:
ALTER AVAILABILITY GROUP AG1 SET (FAILURE_CONDITION_LEVEL = 2);Örnek: Aşağıdaki Transact-SQL deyimi AG1 adlı mevcut kullanılabilirlik grubunun sistem durumu denetimi zaman aşımı eşiğini 60.000 milisaniye (60 saniye) olarak değiştirir.
ALTER AVAILABILITY GROUP AG1 SET (HEALTH_CHECK_TIMEOUT = 60000);Örnek: Yapılandırmayı uyguladıktan sonra, yapılandırılan hata koşulu düzeyini ve kullanılabilirlik grupları için sistem durumu denetim zaman aşımını doğrulamak için aşağıdaki Transact-SQL deyimini kullanın.
SELECT failure_condition_level, health_check_timeout FROM sys.availability_groups;Pacemaker kümesi ile SQL Server arasındaki iletişim için TLS 1.3 desteği.
Pacemaker HA aracısı v2: (
ocf:mssql:agv2) kullanarak Pacemaker'da AG kaynağını oluşturmasudo pcs resource create <NameForAGResource> ocf:mssql:agv2 ag_name=<AGName> meta failure-timeout=30s promotable notify=truePacemaker HA aracısı v1'den v2'ye yükseltiyorsanız,
agv2kaynağını oluşturmadan önce mevcut AG kaynağını kaldırın.sudo pcs resource delete <NameForAGResource>Bu işlem, kaynak yeniden oluşturulurken AG eşitlemesini geçici olarak durdurur. Pacemaker AG kaynağının silinmesi ve yeniden oluşturması AG'yi silmez. Kaynak yeniden başlatıldıktan sonra Pacemaker yönetim ve AG eşitlemesini otomatik olarak sürdürür.
Dinleyici işlevselliğiyle ilişkilendirdiğiniz AG için IP adresi kaynağını oluşturun.
sudo pcs resource create <NameForIPResource> ocf:heartbeat:IPaddr2 ip=<IPAddress> cidr_netmask=<Netmask>Bu örnekte,
NameForIPResourceIP kaynağının benzersiz adı veIPAddresskaynağa atadığınız statik IP adresidir.IP adresinin ve AG kaynağının aynı düğümde çalıştığından emin olmak için bir birlikte bulundurma kısıtlaması yapılandırın.
sudo pcs constraint colocation add <NameForIPResource> with promoted <NameForAGResource>-clone INFINITYBu örnekte,
NameForIPResourceIP kaynağının adı veNameForAGResourceAG kaynağının adıdır.AG kaynağının IP adresinden önce çalışır durumda olduğundan emin olmak için bir sıralama kısıtlaması oluşturun. Ko-lokasyon kısıtlaması bir sıralama kısıtlamasını belirtir, fakat bu adım onu zorunlu kılar.
sudo pcs constraint order promote <NameForAGResource>-clone then start <NameForIPResource>Bu örnekte,
NameForIPResourceIP kaynağının adı veNameForAGResourceAG kaynağının adıdır.