Aracılığıyla paylaş


Tek başına bir örnekten veritabanlarını geçirmek için dağıtılmış AG kullanma

Bir veritabanını (veya birden çok veritabanını) tek başına SQL Server örneğinden Azure Sanal Makineler'de (VM) SQL Server'a geçirmek için dağıtılmış bir kullanılabilirlik grubu (AG) kullanın.

Kaynak SQL Server örneğinizin önkoşulları karşıladığını doğruladıktan sonra, bu makaledeki adımları izleyerek tek başına SQL Server örneğinizde bir kullanılabilirlik grubu oluşturun ve veritabanınızı (veya veritabanı grubunu) Azure'daki SQL Server VM'nize geçirin.

Bu makale, SQL Server'ın tek başına örneğindeki veritabanlarına yöneliktir. Bu çözüm için Windows Server Yük Devretme Kümesi (WSFC) veya kullanılabilirlik grubu dinleyicisi gerekmez. Kullanılabilirlik grubundaki veritabanlarını geçirmek de mümkündür.

Dağıtılmış kullanılabilirlik grubu kullanarak tek örnekli geçişi açıklayan diyagram.

İlk kurulum

İlk adım, Azure'da SQL Server VM'nizi oluşturmaktır. Azure portalını, Azure PowerShell'i veya ARM şablonunu kullanarak bunu yapabilirsiniz.

SQL Server VM'nizi önkoşullara göre yapılandırıldığından emin olun.

Kolaylık olması için hedef SQL Server VM'nizi kaynak SQL Server'ınız ile aynı etki alanına ekleyin. Aksi takdirde, hedef SQL Server VM'nizi kaynak SQL Server'ınızın etki alanıyla birleştirilmiş bir etki alanına ekleyin.

Otomatik dağıtım kullanarak dağıtılmış kullanılabilirlik grubunuzu (DAG) oluşturmak için DAG'nin genel birincil (kaynak) örnek adı, DAG'nin ileticisinin (hedef) örnek adıyla eşleşmelidir. Genel birincil ve iletici arasında örnek adı uyuşmazlığı varsa, DAG'yi oluşturmak için el ile tohumlama kullanmanız ve gelecekte ek veritabanı dosyalarını el ile eklemeniz gerekir.

Bu makalede aşağıdaki örnek parametreler kullanılır:

  • Veritabanı adı: Adventureworks2022
  • Kaynak makine adı (DAG'de genel birincil): OnPremNode
  • Kaynak SQL Server örneği adı: MSSQLSERVER
  • Kaynak kullanılabilirlik grubu adı: OnPremAg
  • Hedef SQL Server VM adı (DAG'de iletici): SQLVM
  • Hedef SQL Server, Azure VM örneği adı: MSSQLSERVER
  • Hedef kullanılabilirlik grubu adı: AzureAG
  • Uç nokta adı: Hadr_endpoint
  • Dağıtılmış kullanılabilirlik grubu adı: DAG
  • Etki alanı adı: Contoso

Uç nokta oluşturma

Hem kaynak () hem de hedef (OnPremNode) SQL Server örneklerinizde uç noktalar oluşturmak için Transact-SQL (SQLVMT-SQL) kullanın.

Uç noktalarınızı oluşturmak için bu T-SQL betiğini hem kaynak hem de hedef sunucularda çalıştırın:

CREATE ENDPOINT [Hadr_endpoint]
    STATE = STARTED
    AS TCP (
        LISTENER_PORT = 5022,
        LISTENER_IP = ALL
    )
    FOR DATABASE_MIRRORING (
        ROLE = ALL,
        AUTHENTICATION = WINDOWS NEGOTIATE,
        ENCRYPTION = REQUIRED ALGORITHM AES
    );
GO

Etki alanı hesaplarının uç noktalara otomatik olarak erişimi vardır, ancak hizmet hesapları otomatik olarak sysadmin grubunun parçası olmayabilir ve bağlantı iznine sahip olmayabilir. SQL Server hizmet hesabına uç noktaya el ile bağlanma izni vermek için her iki sunucuda da aşağıdaki T-SQL betiğini çalıştırın:

GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [<your account>];

Kaynak AG oluşturma

Dağıtılmış kullanılabilirlik grubu iki ayrı kullanılabilirlik grubuna yayılan özel bir kullanılabilirlik grubu olduğundan, önce kaynak SQL Server örneğinde bir kullanılabilirlik grubu oluşturmanız gerekir. Azure'da tutmak istediğiniz bir kullanılabilirlik grubunuz zaten varsa, bunun yerine kullanılabilirlik grubunuzu taşıyın.

Örnek OnPremAg veritabanının kaynak () örneğinde bir kullanılabilirlik grubu (OnPremNode) oluşturmak için Transact-SQL (Adventureworks2022T-SQL) kullanın.

Kullanılabilirlik grubunu oluşturmak için bu betiği kaynakta çalıştırın:

CREATE AVAILABILITY GROUP [OnPremAG]
WITH (
    AUTOMATED_BACKUP_PREFERENCE = PRIMARY,
    DB_FAILOVER = OFF,
    DTC_SUPPORT = NONE,
    CLUSTER_TYPE = NONE
)
FOR DATABASE [Adventureworks2022] REPLICA ON N'OnPremNode'
WITH (
    ENDPOINT_URL = N'TCP://OnPremNode.contoso.com:5022',
    FAILOVER_MODE = MANUAL,
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    SEEDING_MODE = AUTOMATIC,
    SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)
);
GO

Hedef AG oluşturma

Ayrıca hedef SQL Server VM'sinde de bir kullanılabilirlik grubu oluşturmanız gerekir.

Hedef () örnekte bir kullanılabilirlik grubu (AzureAG) oluşturmak için Transact-SQL (SQLVMT-SQL) kullanın.

Kullanılabilirlik grubunu oluşturmak için bu betiği hedefte çalıştırın:

CREATE AVAILABILITY GROUP [AzureAG]
WITH (
    AUTOMATED_BACKUP_PREFERENCE = PRIMARY,
    DB_FAILOVER = OFF,
    DTC_SUPPORT = NONE,
    CLUSTER_TYPE = NONE,
    REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 0
)
FOR REPLICA ON N'SQLVM'
WITH (
    ENDPOINT_URL = N'TCP://SQLVM.contoso.com:5022',
    FAILOVER_MODE = MANUAL,
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    SEEDING_MODE = AUTOMATIC,
    SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)
);
GO

Dağıtılmış AG oluşturma

Kaynak () ve hedef (OnPremAGAzureAG) kullanılabilirlik gruplarınızı yapılandırdıktan sonra, her iki kullanılabilirlik grubunu da kapsayan dağıtılmış kullanılabilirlik grubunuzu oluşturun.

Dağıtılmış kullanılabilirlik grubunu () oluşturmak için kaynak SQL Server örneğinde (OnPremNode) ve AG'de (OnPremAGDAG) Transact-SQL kullanın.

Dağıtılmış AG'yi oluşturmak için bu betiği kaynakta çalıştırın:

CREATE AVAILABILITY GROUP [DAG]
WITH (DISTRIBUTED) AVAILABILITY GROUP
ON 'OnPremAG' WITH (
    LISTENER_URL = 'tcp://OnPremNode.contoso.com:5022',
    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
    FAILOVER_MODE = MANUAL,
    SEEDING_MODE = AUTOMATIC
),
'AzureAG' WITH (
    LISTENER_URL = 'tcp://SQLVM.contoso.com:5022',
    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
    FAILOVER_MODE = MANUAL,
    SEEDING_MODE = AUTOMATIC
);
GO

Hedef ve kaynakta SQL Server sürümü aynı olduğundan tohumlama modu AUTOMATIC olarak ayarlanmıştır. SQL Server hedefiniz daha yüksek bir sürümse veya genel birincil ve ileticinizin farklı örnek adları varsa, dağıtılmış grubu oluşturun ve ikincil AG'yi, SEEDING_MODE olarak MANUAL ayarlayarak dağıtılmış gruba katın. Ardından veritabanlarınızı kaynaktan hedef SQL Server örneğine el ile geri yükleyin. Daha fazla bilgi için bkz . Geçiş sırasında sürümleri yükseltme.

Dağıtılmış AG'niz oluşturulduktan sonra, hedef örnekteki () hedef AG'yi (AzureAGSQLVM) dağıtılmış AG'ye () ekleyinDAG.

Hedef AG'yi dağıtılmış AG'ye eklemek için hedefte şu betiği çalıştırın:

ALTER AVAILABILITY GROUP [DAG]
JOIN AVAILABILITY GROUP
ON 'OnPremAG' WITH (
    LISTENER_URL = 'tcp://OnPremNode.contoso.com:5022',
    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
    FAILOVER_MODE = MANUAL,
    SEEDING_MODE = AUTOMATIC
),
'AzureAG' WITH (
    LISTENER_URL = 'tcp://SQLVM.contoso.com:5022',
    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
    FAILOVER_MODE = MANUAL,
    SEEDING_MODE = AUTOMATIC
);
GO

Kaynak ve hedef kullanılabilirlik grupları arasında senkronizasyonu iptal etmeniz, duraklatmanız veya geciktirmeniz gerekiyorsa (örneğin, performans sorunları), bu betiği kaynak küresel birincil örnekte çalıştırın (OnPremNode):

ALTER AVAILABILITY GROUP [DAG]
MODIFY AVAILABILITY GROUP
ON 'AzureAG' WITH (SEEDING_MODE = MANUAL);

Daha fazla bilgi için bkz. İleticiye otomatik tohumlama işlemini iptal etme.