Linux üzerinde SQL Server için kullanılabilirlik grubu oluşturma ve yapılandırma

Ş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.
  • Erişilebilirlik grubu oluşturmak için SQL Server Management Studio (SSMS) veya Transact-SQL (T-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

Eğer küme türü Dış olan bir kullanılabilirlik grubu oluşturmayı planlıyorsanız, Pacemaker yüksek kullanılabilirlik kümesini kurun. Daha fazla bilgi için Linux üzerinde SQL Server için bir Pacemaker kümesi dağıtma konusuna bakın.

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 erişilebilirlik grupları özelliğini iki şekilde etkinleştirebilirsiniz: mssql-conf aracını kullanmak veya dosyayı mssql.conf manuel olarak düzenlemek.

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 T-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, sertifikaları Linux'ta T-SQL kullanarak oluşturup geri yüklemeniz gerekiyor.

Çeşitli komutlar (güvenlik dahil) için kullanılabilen seçeneklerde tam söz dizimi için bkz:

Note

Bir erişilebilirlik grubu oluşturuyor olsanız da, uç nokta türü FOR DATABASE_MIRRORING kullanır; çünkü uç nokta türü, artık kullanımdan kaldırılmış olan bu özellikle temelindeki bazı özellikleri paylaşır.

Bu örnek, üç düğümlü yapılandırma için sertifikalar oluşturur. Örnek adları LinAGN1, LinAGN2ve LinAGN3.

  1. 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
    );
    GO
    
  2. LinAGN2ü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
    );
    GO
    
  3. Son 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
    );
    GO
    
  4. scp veya başka bir yardımcı program kullanarak sertifikanın yedeklerini AG’ye dahil etmek istediğiniz her düğüme kopyalayın.

    Bu örnek için:

    • LinAGN1_Cert.cer'ı LinAGN2 ve LinAGN3'ye kopyalayın.
    • LinAGN2_Cert.cer'ı LinAGN1 ve LinAGN3'ye kopyalayın.
    • LinAGN3_Cert.cer'ı LinAGN1 ve LinAGN2'ye kopyalayın.
  5. Sahipliğini ve kopyalanan sertifika dosyalarıyla ilişkili grubu mssqlolarak değiştirin.

    sudo chown mssql:mssql <CertFileName>
    
  6. LinAGN2üzerinde LinAGN3 ve LinAGN1 ile 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;
    GO
    

    Caution

    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.

  7. LinAGN2_Cert'da LinAGN3_Cert ve LinAGN1 geri 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';
    GO
    
  8. LinAGN2 ve LinAGN3 ile ilişkili oturum açma bilgilerine LinAGN1uç noktasına bağlanma izni verin.

    GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login;
    GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login;
    
  9. LinAGN1üzerinde LinAGN3 ve LinAGN2 ile 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;
    GO
    
  10. LinAGN1_Cert'da LinAGN3_Cert ve LinAGN2 geri 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';
    GO
    
  11. LinAGN1 ve LinAGN3 ile ilişkili oturum açma bilgilerine LinAGN2uç noktasına bağlanma izni verin.

    GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login;
    GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login;
    GO
    
  12. LinAGN1üzerinde LinAGN2 ve LinAGN3 ile 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;
    GO
    
  13. LinAGN1_Cert'da LinAGN2_Cert ve LinAGN3 geri 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';
    GO
    
  14. LinAGN1 ve LinAGN2 ile ilişkili oturum açma bilgilerine LinAGN3uç 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üm, SQL Server Management Studio (SSMS) veya T-SQL kullanılarak SQL Server için kullanılabilirlik grubu oluşturulmasını gösterir.

SQL Server Management Studio'yu kullanma

Bu bölüm, Yeni Erişilebilirlik Grubu Sihirbazı ile SSMS kullanarak Dış küme türüne sahip bir AG'nin nasıl oluşturulacağını gösterir.

  1. 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.

  2. Giriş diyalogunda Sonraki'yi seçin.

  3. Kullanılabilirlik Grubu Seçeneklerini Belirtin iletişim kutusunda AG için bir ad girin ve açılan listeden EXTERNAL veya NONE küme türünü seçin. Pacemaker'ı dağıtırken kullanın EXTERNAL . Okuma ölçeği genişletme gibi özel senaryolar için NONE kullanı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.

    Küme türünü gösteren Kullanılabilirlik Grubu Oluşturma işleminin ekran görüntüsü.

  4. 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.

  5. Replikaları Belirt diyalogunda Replika Ekle seçeneğini seçin.

  6. 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.

  7. 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.

  8. Üç örnek de Replikaları Belirt diyalogunda görünür. Eğer External türünde bir küme kullanıyorsanız, gerçek ikincil olan ikincil replika için kullanılabilirlik modunun birincil replikanınkiyle eşleştiğinden emin olun ve yük devretme modunu External olarak 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 örnek, iki tam replika, Dış türünde bir küme ve yalnızca yapılandırma amaçlı bir replika içeren bir AG'yi gösterir.

    Okunabilir ikincil seçeneği gösteren Kullanılabilirlik Grubu Oluştur'un ekran görüntüsü.

    Aşağıdaki örnek, iki tam replika, küme türü None olan ve yalnızca yapılandırma replikası içeren bir AG’yi göstermektedir.

    Kullanılabilirlik Grubu Oluştur ekranının, Çoğaltmalar sayfasını gösteren ekran görüntüsü.

  9. 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.

  10. 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.

    Dinleyici seçeneğini gösteren Kullanılabilirlik Grubu Oluştur'un ekran görüntüsü.

  11. 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 T-SQL kullanarak da ekleyebilirsiniz. Şimdi salt okunur yönlendirme eklemek için:

    1. Read-Only Yönlendirme sekmesini seçin.

    2. 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.

      1. 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.
  12. sonrakiseçin.

  13. İ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.

  14. Doğrulama iletişim kutusunda, sihirbaz tüm denetimler için Başarı sonucunu vermezse, ayrıntılı olarak inceleyin. Dinleyici oluşturmadığınız durumlar gibi bazı uyarılar kabul edilebilir ve ölümcül değildir. sonrakiseçin.

  15. Özet diyalogunda Bitir seçeneğini seçin. AG oluşturma işlemi şimdi başlıyor.

  16. 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, T-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:

Örnek A: İki tam replika ve yalnızca yapılandırma replikası (Harici küme türü)

Bu örnek, iki tam replika ve bir yalnızca yapılandırma replikası içeren bir AG'nin nasıl oluşturulacağını gösterir.

  1. 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
    );
    GO
    
  2. Diğ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;
    GO
    
  3. Yalnızca yapılandırma replikasına bağlı bir sorgu penceresinde, onu AG'ye katmak için aşağıdaki deyimi ç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.

  1. 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
        );
    GO
    

    Bu yapılandırma hakkında dikkate bilmeniz gereken birkaç nokta:

    • AG'nin adı AGName'dir.
    • DBName AG ile kullandığınız veritabanının adıdır. Ayrıca virgülle ayrılmış bir isim listesi de olabilir.
    • ListenerName altta yatan sunuculardan veya düğümlerden farklı bir isimdir. Bunu, IPAddress ile birlikte DNS'e kaydedersiniz.
    • IPAddress için IP ListenerNameadresidir. Ayrıca benzersiz ve hiçbir sunucu veya düğümle eşleşmiyor. Uygulamalar ve son kullanıcılar AG'ye bağlanmak için ListenerName veya IPAddress kullanır.
      • SubnetMask, IPAddressalt ağ maskesidir. SQL Server 2019 (15.x) ve önceki sürümlerde bu değerdir 255.255.255.255. SQL Server 2022 (16.x) ve sonraki sürümlerinde bu değer olur 0.0.0.0.
  2. 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
    
  3. Üçü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ı, yük devri beklemediğiniz okuma ölçeklendirme senaryosu için kullanın. Bu adım, birincil replika için dinleyiciyi oluşturur ve round-robin işleviyle yalnızca okunan yönlendirmeyi yapılandırır.

  1. 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>
        );
    GO
    

    Bu örnekte:

    • AG'nin adı AGName'dir.
    • DBName AG ile kullandığınız veritabanının adıdır. Ayrıca virgülle ayrılmış bir isim listesi de olabilir.
    • PortOfEndpoint oluşturduğunuz uç noktanın port numarasıdır.
      • PortOfInstanceSQL Server örneği için port numarasıdır.
    • ListenerName, temelindeki kopyaların herhangi birinden farklı olan bir yer tutucu addır.
    • PrimaryReplicaIPAddress, ana replikanın IP adresidir.
      • SubnetMask, PrimaryReplicaIPAddressalt ağ maskesidir. SQL Server 2019 (15.x) ve önceki sürümlerde bu değerdir 255.255.255.255. SQL Server 2022 (16.x) ve sonraki sürümlerinde bu değer olur 0.0.0.0.
  2. İ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.

  1. İ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;
    GO
    
  2. Node 1'de dosyaya aşağıdaki iki satırı /var/opt/mssql/secrets/passwd ekleyin:

    PMLogin
    
    <password>
    

    Bu dosyayı düzenlemek için izinlerinizi sudo yükseltmeniz gerekebilir.

  3. Dosyayı kilitle:

    sudo chmod 400 /var/opt/mssql/secrets/passwd
    
  4. Replika olarak hizmet veren diğer sunucularda 1-3. 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ğının her düğümde kopyaları vardır ve promoted kaynağı olarak adlandırılan bir denetleyici kaynak bulunur. 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

SQL Server 2025 (17.x) ile Toplu Güncelleştirme (CU) 3 ve sonraki sürümlerde, Pacemaker HA aracısı v2 (önizleme), Red Hat Enterprise Linux (RHEL) ve Ubuntu için mssql-server-ha paketi aracılığıyla kullanılabilir. Pacemaker HA agent v2'yi üretim dışı dağıtımlarda değerlendirebilirsiniz. Mevcut Pacemaker HA aracısı (v1), üretim dağıtımları için tam olarak desteklenmektedir. Daha fazla bilgi için Pacemaker HA agent v2 (önizleme) bölümüne bakınız.

Pacemaker HA aracısı v1

  1. 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=true
    

    Bu örnekte, NameForAGResource AG için bu küme kaynağına verdiğiniz benzersiz ad ve AGName oluşturduğunuz AG'nin adıdır.

  2. 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, NameForIPResource IP kaynağının benzersiz adı ve IPAddress kaynağa atadığınız statik IP adresidir.

  3. 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 INFINITY
    

    Bu örnekte, NameForIPResource IP kaynağının adı ve NameForAGResource AG kaynağının adıdır.

  4. 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, NameForIPResource IP kaynağının adı ve NameForAGResource AG kaynağının adıdır.

Pacemaker HA aracısı v2 (önizleme)

SQL Server 2025 (17.x) ve Cumulative Update (CU) 3 ve daha sonraki sürümlerde, pakette Red Hat Enterprise Linux (RHEL) ve Ubuntu mssql-server-ha için yeni bir Pacemaker HA agent v2 mevcuttur.

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ı.

  • Sistem durumu denetimi zaman aşımı ve hata koşulu düzeyinin yapılandırması da dahil olmak üzere esnek otomatik yük devretme ilkeleri desteği.

  • Pacemaker kümesi ile SQL Server arasındaki iletişim için TLS 1.3 desteği.

Pacemaker HA aracısı v2 şu anda önizleme aşamasındadır. Mevcut Pacemaker HA aracısı (v1), üretim dağıtımları için tam olarak desteklenmektedir.

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 ya da mssql-pcsag hizmetlerinden biri 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 agent v2 ayrıca hata koşulu seviyesi ve sağlık kontrolü zaman aşımının konfigürasyonu dahil olmak üzere esnek otomatik yedekleme politikalarını destekler.

  • Örnek: Aşağıdaki T-SQL ifadesi, AG1 adlı mevcut bir erişilebilirlik grubunun başarısızlık koşulu seviyesini seviye 2'ye değiştirir:

    ALTER AVAILABILITY GROUP AG1 SET (FAILURE_CONDITION_LEVEL = 2);
    
  • Örnek: Aşağıdaki T-SQL ifadesi, AG1 adlı mevcut bir erişilebilirlik grubunun sağlık kontrolü zaman aşımına eşik değerini 60.000 milisaniyeye (60 saniye) değiştirir.

    ALTER AVAILABILITY GROUP AG1 SET (HEALTH_CHECK_TIMEOUT = 60000);
    
  • Örnek: Yapılandırmayı uyguladıktan sonra, kullanılabilirlik grupları için yapılandırılmış arıza-koşulu seviyesini ve sağlık kontrolü zaman aşımını doğrulamak için aşağıdaki T-SQL ifadesini kullanın.

    SELECT failure_condition_level,
           health_check_timeout
    FROM sys.availability_groups;
    
  1. Pacemaker HA aracısı v2: (ocf:mssql:agv2) kullanarak Pacemaker'da AG kaynağını oluşturma

    sudo pcs resource create <NameForAGResource> ocf:mssql:agv2 ag_name=<AGName> meta failure-timeout=30s promotable notify=true
    

    Pacemaker HA aracısı v1'den v2'ye yükseltiyorsanız, agv2 kaynağı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.

  2. 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, NameForIPResource IP kaynağının benzersiz adı ve IPAddress kaynağa atadığınız statik IP adresidir.

  3. 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 INFINITY
    

    Bu örnekte, NameForIPResource IP kaynağının adı ve NameForAGResource AG kaynağının adıdır.

  4. 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, NameForIPResource IP kaynağının adı ve NameForAGResource AG kaynağının adıdır.