Gunakan AG terdistribusi untuk memigrasikan database dari instans mandiri
Gunakan grup ketersediaan terdistribusi (AG) untuk memigrasikan database (atau beberapa database) dari instans SQL Server mandiri ke SQL Server di Azure Virtual Machines (VM).
Setelah memvalidasi instans SQL Server sumber, maka Anda telah memenuhi prasyarat, ikuti langkah-langkah dalam artikel ini untuk membuat grup ketersediaan pada instans SQL Server mandiri Anda dan untuk memigrasikan database Anda (atau grup database) ke VM SQL Server Anda di Azure.
Artikel ini ditujukan untuk database pada contoh SQL Server mandiri. Solusi ini tidak memerlukan Windows Server Failover Cluster (WSFC) atau listener grup ketersediaan. Anda juga dapat memigrasikan database dalam grup ketersediaan.
Penyiapan awal
Langkah pertama adalah dengan membuat VM SQL Server Anda di Azure. Anda dapat melakukannya menggunakan portal Microsoft Azure, Azure PowerShell, atau templat ARM.
Pastikan untuk mengonfigurasi VM SQL Server Anda sesuai dengan prasyarat.
Untuk mempermudah, gabungkan VM SQL Server target Anda ke domain yang sama dengan SQL Server sumber Anda. Atau, gabungkan VM SQL Server target Anda ke domain yang digabungkan dengan domain SQL Server sumber Anda.
Untuk menggunakan seeding otomatis untuk membuat grup ketersediaan terdistribusi (DAG), nama instans untuk primer global (sumber) DAG harus sesuai dengan nama instans penerus (target) DAG. Jika ada ketidakcocokan nama instans antara primer global dan penerus, maka Anda harus menggunakan seeding manual untuk membuat DAG, dan menambahkan file database tambahan secara manual di masa mendatang.
Artikel ini menggunakan parameter contoh berikut:
- Nama database:
Adventureworks2022
- Nama komputer sumber (utama global di DAG):
OnPremNode
- Nama instans SQL Server sumber:
MSSQLSERVER
- Nama grup ketersediaan sumber:
OnPremAg
- Nama komputer virtual SQL Server target (penerus di DAG):
SQLVM
- Targetkan SQL Server pada nama instans Azure VM:
MSSQLSERVER
- Nama grup ketersediaan target:
AzureAG
- Nama titik akhir:
Hadr_endpoint
- Nama grup ketersediaan terdistribusi:
DAG
- Nama domain:
Contoso
Buat titik akhir
Gunakan Transact-SQL (T-SQL) untuk membuat titik akhir pada instans SQL Server sumber (OnPremNode
) dan target (SQLVM
).
Untuk membuat titik akhir Anda, jalankan skrip T-SQL inia pada server sumber dan target:
CREATE ENDPOINT [Hadr_endpoint] STATE = STARTED
AS TCP (
LISTENER_PORT = 5022,
LISTENER_IP = ALL
)
FOR DATA_MIRRORING(ROLE = ALL,
AUTHENTICATION = WINDOWS NEGOTIATE,
ENCRYPTION = REQUIRED ALGORITHM AES);
GO
Akun domain secara otomatis memiliki akses ke titik akhir, tetapi akun layanan mungkin tidak secara otomatis menjadi bagian dari grup sysadmin dan mungkin tidak memiliki izin koneksi. Untuk memberikan akun layanan SQL Server izin menyambungkan ke titik akhir, jalankan skrip T-SQL berikut di kedua server:
GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [<your account>];
Membuat AG sumber
Karena grup ketersediaan terdistribusi adalah grup ketersediaan khusus yang mencakup dua grup ketersediaan individu, Anda harus terlebih dahulu membuat grup ketersediaan pada contoh SQL Server sumber. Jika Anda sudah memiliki grup ketersediaan yang ingin Anda pertahankan di Azure, migrasikan grup ketersediaan Anda.
Gunakan Transact-SQL (T-SQL) untuk membuat grup ketersediaan (OnPremAg
) pada instans sumber (OnPremNode
) untuk database contoh Adventureworks2022
.
Untuk membuat grup ketersediaan, jalankan skrip ini di sumber:
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
Membuat target AG
Anda juga perlu membuat grup ketersediaan pada VM SQL Server target.
Gunakan Transact-SQL (T-SQL) untuk membuat grup ketersediaan (AzureAG
) pada instans target (SQLVM
).
Untuk membuat grup ketersediaan, jalankan skrip ini pada target:
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
Membuat AG terdistribusi
Setelah grup ketersediaan sumber (OnPremAG
) dan target (AzureAG
) Anda dikonfigurasi, buat grup ketersediaan terdistribusi Anda untuk menjangkau kedua grup ketersediaan individual.
Gunakan Transact-SQL pada instans SQL Server sumber (OnPremNode
) dan AG (OnPremAG
) untuk membuat grup ketersediaan terdistribusi (DAG
).
Untuk membuat AG terdistribusi, jalankan skrip ini pada sumbernya:
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
Mode seeding diatur ke AUTOMATIC
karena versi SQL Server pada target dan sumber sama. Jika target SQL Server Anda adalah versi yang lebih tinggi, atau jika primer dan penerus global Anda memiliki nama instans yang berbeda, buat ag terdistribusi, dan gabungkan AG sekunder ke ag terdistribusi dengan SEEDING_MODE
diatur ke MANUAL
. Kemudian, pulihkan database Anda secara manual dari sumber ke instans SQL Server target. Untuk informasi selengkapnya, lihat Meningkatkan versi selama migrasi.
Setelah AG terdistribusi Anda dibuat, gabungkan target AG (AzureAG
) pada instans target (SQLVM
) ke AG terdistribusi (DAG
).
Untuk menggabungkan AG target ke AG terdistribusi, jalankan skrip ini pada target:
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
Jika Anda perlu membatalkan, menjeda, atau menunda sinkronisasi antara grup ketersediaan sumber dan target (seperti, misalnya, masalah performa), jalankan skrip ini pada instans utama global sumber (OnPremNode
):
ALTER AVAILABILITY GROUP [DAG]
MODIFY AVAILABILITY GROUP
ON 'AzureAG' WITH (SEEDING_MODE = MANUAL);
Untuk informasi selengkapnya, lihat Membatalkan seeding otomatis ke penerus.