Aracılığıyla paylaş


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

Önkoşullar

Linuxüzerinde SQL Server için Pacemaker kümesi dağıtma bölümünde açıklandığı gibi Pacemaker yüksek kullanılabilirlik kümesini dağıtı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 Configuration Manager'ı kullanamazsınız. Linux'ta kullanılabilirlik grupları özelliğini iki şekilde etkinleştirebilirsiniz: mssql-conf yardımcı programını kullanın veya dosyayı el ile düzenleyin mssql.conf .

Önemli

SQL Server Express'te bile yalnızca yapılandırma amaçlı çoğaltmalar için AG özelliğini etkinleştirmeniz gerekir.

mssql-conf yardımcı programını kullanma

İ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 altında, ag uç noktaları yalnızca sertifikalar kimlik doğrulaması için kullanılıyorsa desteklenir. Aynı AG'de yedek olarak katılan diğer tüm örneklerde bir örneğin sertifikasını geri yüklemelisiniz. Sertifika işlemi yalnızca yapılandırma amaçlı çoğaltma için bile gereklidir.

Yalnızca Transact-SQL kullanarak uç noktalar oluşturabilir ve sertifikaları geri yükleyebilirsiniz. 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.

Önemli

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 aşağıdakilere bakın:

Not

Kullanılabilirlik grubu oluşturuyor olmanıza rağmen uç nokta türü FOR DATABASE_MIRRORINGkullanır çünkü bazı temel özellikler bir zamanlar bu kullanım dışı bırakılmış özellik ile paylaşılırdı.

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 için tipik TCP bağlantı noktası olan 5022 kullanılı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'nin parçası olacak her düğüme kopyalayın.

    Bu örnek için:

    • LinAGN1_Cert.cerLinAGN2 ve LinAGN3'ye kopyalayın.
    • LinAGN2_Cert.cerLinAGN1 ve LinAGN3'ye kopyalayın.
    • LinAGN3_Cert.cerLinAGN1 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
    

    Dikkat

    Parolanız, SQL Server varsayılanparola ilkesine uygun olmalıdır. 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 çoğaltmaların sertifikalarına sahip olmak, AG iletişimi ve güvenliğinin önemli bir yönüdür.

    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. LinAG1 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ü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 kullanma

Bu bölümde, Yeni Kullanılabilirlik Grubu Sihirbazı ile SSMS kullanarak küme türü Dış olan bir AG'nin nasıl oluşturulacağı gösterilmektedir.

  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ş iletişim kutusunda İleriseçin.

  3. Kullanılabilirlik Grubu Seçeneklerini Belirtin iletişim kutusunda, kullanılabilirlik grubu 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 durumu 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ç iletişim kutusunda AG'ye katılacak veritabanlarını seçin. Her veritabanı, bir AG'ye eklenmeden önce tam yedeklenmelidir. Sonrakiseçin.

  5. "Çoğaltmaları Belirt iletişim kutusunda Çoğaltma Ekleseçeneğini seçin."

  6. Sunucuya Bağlan iletişim kutusunda, ikincil çoğaltma olacak SQL Server'ın Linux örneğinin adını ve bağlanılacak kimlik bilgilerini girin. seçin,bağlan.

  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 Çoğaltmaları Belirt iletişim kutusunda görünür. Bir Dışsal küme türü kullanıyorsanız, gerçek bir ikincil olarak görev yapacak ikincil replik için Kullanılabilirlik Modu'nun birincil replik ile eşleştiğinden ve yük devretme modunun Dış olarak ayarlandığından emin olun. 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.

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

    Aşağıdaki örnekte iki çoğaltması olan bir AG, küme türü 'Yok' ve yalnızca yapılandırma replikası gösterilmektedir.

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

  9. Yedekleme tercihlerini değiştirmek istiyorsanız Yedekleme Tercihleri sekmesini seçin. AG'lerle yedekleme tercihleri hakkında daha fazla bilgi için bkz. Always On Kullanılabilirlik Grubunun İkincil Çoğaltmalarında Yedeklemeleri Yapılandırma.

  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 belirleyin ve bir ad, TCP/IP bağlantı noktası ve statik veya otomatik olarak atanan DHCP IP adresi kullanılıp kullanılmayacağını girin. Küme türü Yok olan bir AG için IP statik olmalı ve birincil ip adresine ayarlanmalıdır.

    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 salt okunur yönlendirmenin oluşturulmasına izin verir. Daha sonra SSMS veya Transact-SQL aracılığıyla 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.

    3. Her URL'yi seçin ve alt kısımdan okunabilir çoğaltmaları seçin. Çoklu seçim yapmak için SHIFT tuşunu basılı tutun veya sürükleyerek seçin.

  12. Sonrakiseçin.

  13. İkincil kopyaların nasıl başlatılacağını 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 yapmasını sağlayabilirsiniz (ikinci seçenek); veya veritabanını çoğaltmalar üzerine manuel olarak yedeklediyseniz, kopyalayıp geri yüklediyseniz katılmasını sağlayabilirsiniz (üçüncü seçenek); veya veritabanını daha sonra ekleyebilirsiniz (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, her şey Başarılı olarak döndürülmezse araştırın. Dinleyici oluşturmadığınız durumlar gibi bazı uyarılar kabul edilebilir ve ölümcül değildir. Sonrakiseçin.

  15. Özet iletişim kutusunda Bitirseçin. AG oluşturma işlemi şimdi başlıyor.

  16. AG oluşturma işlemi tamamlandığında Sonuçlar'da Kapat 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ümde Transact-SQL kullanarak AG oluşturma örnekleri gösterilmektedir. 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 aşağıdaki bağlantılara bakı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.

  1. Birincil çoğaltma görevi görecek ve veritabanlarının tam okuma/yazma kopyasını içeren düğümde aşağıdaki komutu yürütü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 ç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. Yalnızca yapılandırma kopyasına bağlı bir sorgu penceresinde aşağıdaki deyimi çalıştırarak AG'ye ekleyin.

    ALTER AVAILABILITY GROUP [<AGName>]
    JOIN WITH (CLUSTER_TYPE = EXTERNAL);
    GO
    

Örnek B: Salt okunur yönlendirmeli üç çoğaltma (Dış küme türü)

Bu örnekte üç tam çoğaltma ve AG'nin ilk oluşturulma işlemi kapsamında salt okunur yönlendirmeyi nasıl yapılandırabileceğiniz gösterilmektedir.

  1. Birincil kopya olarak davranacak ve veritabanlarının tam okuma/yazma kopyasını içeren düğümde aşağıdaki sorguyu yürütü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:

    • AGName kullanılabilirlik grubunun adıdır.
    • DBName kullanılabilirlik grubuyla kullandığınız veritabanının adıdır. Ayrıca virgülle ayrılmış bir ad listesi de olabilir.
    • ListenerName temel alınan sunuculardan veya düğümlerden farklı bir ad taşır. DNS'de IPAddress ile birlikte kaydedilir.
    • IPAddress , ile ListenerNameilişkilendirilmiş bir IP adresidir. Ayrıca benzersizdir ve herhangi bir sunucu veya düğümle aynı değildir. 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 türü kullanılarak iki replikalı bir yapılandırmanın oluşturulmasını göstermektedir. Yük devretmenin beklenmediği okuma ölçeği senaryosu için bu yapılandırmayı kullanın. Bu adım, gerçekte birincil kopya olan dinleyiciyi ve yuvarlak robin işlevselliğini kullanarak salt okunur yönlendirmeyi oluşturur.

  1. Birincil kopya olarak işlev görecek ve veritabanlarının tam okuma/yazma kopyasını içeren düğümde aşağıdaki sözcüğü yürütü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:

    • AGName kullanılabilirlik grubunun adıdır.
    • DBName kullanılabilirlik grubuyla kullandığınız veritabanının adıdır. Ayrıca virgülle ayrılmış bir ad listesi de olabilir.
    • PortOfEndpoint , oluşturduğunuz uç nokta tarafından kullanılan bağlantı noktası numarasıdır.
      • PortOfInstance, SQL Server örneği tarafından kullanılan bağlantı noktası numarasıdır.
    • ListenerName , temel alınan çoğaltmalardan herhangi birinden farklı olan ancak aslında kullanılmayan bir addır.
    • PrimaryReplicaIPAddress, ana replikanın IP adresidir.
      • 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. İ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 kullanılabilirlik grubunun kendisinde izinlere erişmesi gerekir. Bu adımlar, Pacemaker'a SQL Server'da nasıl oturum açacağı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. Düğüm 1'de şu komutu girin:

    sudo emacs /var/opt/mssql/secrets/passwd
    

    Bu komut Emacs düzenleyicisini açar.

  3. Düzenleyiciye aşağıdaki iki satırı girin:

    PMLogin
    
    <password>
    
  4. dosyadan çıkmak ve dosyayı kaydetmek için Ctrl tuşunu basılı tutun, ardından Xtuşuna basın ve ardından C.

  5. Yürütün:

    sudo chmod 400 /var/opt/mssql/secrets/passwd
    

    Dosyayı kilitlemek.

  6. Kopya 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 kullanılabilirlik grubu oluşturduktan sonra, Dış küme türünü belirtirken Pacemaker'da ilgili kaynakları oluşturmanız gerekir. Kullanılabilirlik grubuyla ilişkili iki kaynak vardır: kullanılabilirlik grubunun kendisi ve bir IP adresi. Dinleyici işlevselliğini kullanmıyorsanız IP adresi kaynağını yapılandırmak isteğe bağlıdır, ancak ö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ı ve ana adlı bir denetim kaynağı vardır. Ana sunucu, birincil çoğaltmayı barındıran sunucuyla ilişkilendirilmiştir. Diğer kaynaklar, ikincil çoğaltmaları (normal veya yalnızca yapılandırma) barındırır ve bir geçiş durumunda ana sunucuya yükseltilebilir.

  1. AG kaynağını aşağıdaki söz dizimiyle oluşturun:

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

Sonraki adım

Bu öğreticide, Linux üzerinde SQL Server için kullanılabilirlik grubu oluşturmayı ve yapılandırmayı öğrendiniz. Nasıl yapılacağını öğrendinsiniz:

  • Kullanılabilirlik gruplarını etkinleştirin.
  • AG uç noktaları ve sertifikaları oluşturun.
  • AG 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 AG kaynakları oluştur.

Yükseltmeler ve yük devretme dahil olmak üzere AG yönetim görevlerinin çoğu için bkz: