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 öğretici, Linux üzerinde SQL Server için bir kullanılabilirlik grubu (AG) oluşturma ve yapılandırmayı kapsar. WINDOWS'da SQL Server 2016 (13.x) ve önceki sürümlerinden farklı olarak, önce temel Pacemaker kümesini oluşturarak veya oluşturmadan AG'yi etkinleştirebilirsiniz. Gerekirse, küme ile tümleştirme daha sonra yapılır.

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 altında, özelliği etkinleştirmek için mssql-conf kullanmanız gerekir. Kullanılabilirlik grupları özelliğini etkinleştirmenin iki yolu vardır: mssql-conf yardımcı programını kullanın veya mssql.conf dosyasını el ile düzenleyin.

Önemli

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

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

Aşağıdaki satırları eklemek için mssql.conf klasörünün altında bulunan /var/opt/mssql dosyasını da değiştirebilirsiniz:

[hadr]

hadr.hadrenabled = 1

SQL Server'ın yeniden başlatılması

Windows'da olduğu gibi kullanılabilirlik gruplarını etkinleştirdikten sonra aşağıdaki komutu kullanarak SQL Server'ı yeniden başlatmanız gerekir:

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 kopya olarak katılacak diğer tüm örneklerde sertifikayı bir örnekten geri yüklemeniz gerekir. Sertifika işlemi yalnızca yapılandırma amaçlı çoğaltma için bile gereklidir.

Uç nokta oluşturma ve sertifikaları geri yükleme işlemi yalnızca Transact-SQL aracılığıyla gerçekleştirilebilir. 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. LinAG2 ve LinAGN3 ile ilişkili oturum açma bilgilerine LinAGN1uç noktasına bağlanma izni verin.

    GRANT CONNECT
        ON ENDPOINT::AGEP TO LinAGN2_Login;
    GO
    
    GRANT CONNECT
        ON ENDPOINT::AGEP TO LinAGN3_Login;
    GO
    
  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. LinAG1 ve LinAGN3 ile ilişkili oturum açma bilgilerine LinAGN2uç noktasına bağlanma izni verin.

    GRANT CONNECT
        ON ENDPOINT::AGEP TO LinAGN1_Login;
    GO
    
    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;
    GO
    
    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(SSMS) veya Transact-SQL kullanma işlemleri anlatılıyor.

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ılırken harici kullanılmalıdır. Hiçbiri okuma ölçeği genişletme gibi özel senaryolara yönelik değildir. Veritabanı düzeyinde sistem 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. Bir AG'ye eklenebilmesi için her veritabanının tam yedeği olmalıdır. 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. Üç örneğin de artık Çoğaltmaları Belirt iletişim kutusunda listelenmesi gerekir. Dış küme türü kullanıyorsanız, gerçek bir ikincil olacak ikincil çoğaltma için, Kullanılabilirlik Modu'nun birincil çoğaltmanınkiyle 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 eklenebilir. Dinleyici oluşturmak için Kullanılabilirlik grubu dinleyicisi oluştur seçeneğini belirleyin ve bir ad, bir TCP/IP bağlantı noktası, ayrıca statik veya otomatik olarak atanan bir DHCP IP adresi kullanılıp kullanılmayacağını girin. Küme türü Yok olan bir AG için IP'nin statik olması ve birincil ip adresine ayarlanması gerektiğini unutmayı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şturulduysa, SSMS 17.3 veya üzeri sihirbazda salt okunur yönlendirmenin oluşturulmasına izin verir. Daha sonra SSMS veya Transact-SQL aracılığıyla da eklenebilir. Ş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 çoğaltmaları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, el ile yedekleme yapıyor ve kopyalıyorsanız, yedekleme dosyaları üzerindeki izinlerin diğer çoğaltmalarda ayarlanması gerekir. 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 oluşturulduktan sonra dinleyici ve salt okunur yönlendirme yapılandırılabilir. AG'nin kendisi ALTER AVAILABILITY GROUPile değiştirilebilir, ancak küme türünü değiştirmek SQL Server 2017'de (14.x) yapılamaz. 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 aşağıdaki bağlantılarda bulunabilir:

Ö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. Veritabanlarının tam okuma/yazma kopyasını içerecek olan birincil kopya düğümünde ç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 çoğaltmaya bağlı bir sorgu penceresinde aşağıdakileri 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 çoğaltmasına bağlı bir sorgu penceresinde, veritabanı kullanılabilirlik grubuna (AG) dahil edin.

    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 kopya ve ilk AG oluşturma işlemi kapsamında salt okunur yönlendirmenin nasıl yapılandırılabileceğini göstermektedir.

  1. Veritabanlarının tam okuma/yazma kopyasını içerecek olan birincil kopya düğümünde ç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:

    • AGName kullanılabilirlik grubunun adıdır.
    • DBName, kullanılabilirlik grubuyla birlikte kullanılan veritabanının adıdır. Ayrıca virgülle ayrılmış bir ad listesi de olabilir.
    • ListenerName, alttaki sunucu veya düğümlerden farklı bir addır. IPAddressile birlikte DNS'de kaydedilir.
    • IPAddress, ListenerNameile ilişkili bir IP adresidir. Ayrıca benzersizdir ve herhangi bir sunucu/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 255.255.255.255. SQL Server 2022 (16.x) ve sonraki sürümlerinde bu 0.0.0.0.
  2. Diğer çoğaltmaya bağlı bir sorgu penceresinde aşağıdakileri 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çeklendirme senaryosunda kullanılır. Bu, yuvarlak-robin işlevini kullanarak aslında birincil replik olan dinleyiciyi ve salt okunur yönlendirmeyi oluşturur.

  1. Veritabanlarının tam okuma/yazma kopyasını içerecek olan birincil kopya düğümünde ç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
    

    Nerede:

    • AGName kullanılabilirlik grubunun adıdır.
    • DBName, kullanılabilirlik grubuyla kullanılacak veritabanının adıdır. Ayrıca virgülle ayrılmış bir ad listesi de olabilir.
    • PortOfEndpoint, oluşturulan 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, altındaki çoğaltmalardan 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 255.255.255.255. SQL Server 2022 (16.x) ve sonraki sürümlerinde bu 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'taki SQL Server'ın altındaki Pacemaker yüksek erişilebilirlik kümesi, SQL Server örneğine ve kullanılabilirlik grubunun kendisinde izinlere sahip olması 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 komut girin

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

    Bu, 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. Çalıştırmak

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

    Dosyayı kilitlemek.

  6. Çoğaltma görevi görecek olan diğer sunucularda 1'den 5'e kadar adımları yineleyin.

Pacemaker kümesinde kullanılabilirlik grubu kaynaklarını oluşturma (Yalnızca dış)

SQL Server'da bir kullanılabilirlik grubu oluşturulduktan sonra, dış küme türü belirtildiğinde ilgili kaynakların Pacemaker'da oluşturulması gerekir. Ag ile ilişkilendirilmiş iki kaynak vardır: AG'nin 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ğı, kopyası olarak adlandırılan bir kaynak türüdür. AG kaynağının temelde her düğümde kopyaları vardır ve anaadlı 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
    

    Burada NameForAGResource, AG için bu küme kaynağına verilen benzersiz addır ve AGName oluşturulan AG'nin adıdır.

  2. AG'nin dinleyici işlevselliği ile ilişkilendirileceği IP adresi kaynağını oluşturun.

    sudo pcs resource create <NameForIPResource> ocf:heartbeat:IPaddr2 ip=<IPAddress> cidr_netmask=<Netmask>
    

    burada NameForIPResource, IP kaynağının benzersiz adıdır ve IPAddress kaynağa atanan statik IP adresidir.

  3. IP adresinin ve AG kaynağının aynı düğümde çalıştığından emin olmak için birlikte bulundurma kısıtlamasının yapılandırılması gerekir.

    sudo pcs constraint colocation add <NameForIPResource> with promoted <NameForAGResource>-clone INFINITY
    

    Burada 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. Birlikte bulundurma kısıtlaması bir sıralama kısıtlaması anlamına gelir, ancak bu bunu zorunlu kılar.

    sudo pcs constraint order promote <NameForAGResource>-clone then start <NameForIPResource>
    

    Burada 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:

Linux üzerinde SQL Server için HA kullanılabilirlik grubunu çalıştırma