Enam solusi untuk migrasi database SQL Server ke ApsaraDB RDS for SQL Server, masing-masing sesuai dengan lingkungan sumber, toleransi downtime, dan kebutuhan fitur yang berbeda.
Prasyarat
Sebelum memulai:
-
Instans tujuan ApsaraDB RDS for SQL Server dengan spesifikasi dan kapasitas penyimpanan minimal setara dengan database sumber. Buat instans ApsaraDB RDS for SQL Server
-
Versi database sumber dan tujuan yang didukung oleh Data Transmission Service (DTS), jika menggunakan DTS
-
Blok CIDR server DTS ditambahkan ke pengaturan keamanan database sumber dan tujuan, jika menggunakan DTS
-
Aturan firewall, daftar putih, dan grup keamanan dikonfigurasi untuk mengizinkan akses dari alat migrasi
Daftar periksa kesiapan
Sebelum memilih solusi:
-
Periksa kompatibilitas versi. Jalankan kueri berikut pada instans sumber dan tujuan untuk memverifikasi bahwa tingkat kompatibilitas tujuan sama dengan atau lebih tinggi daripada sumber:
SELECT name, compatibility_level FROM sys.databases; -
Periksa akses jaringan. Pastikan database sumber dan tujuan menerima koneksi dari server DTS atau alat migrasi lainnya.
-
Nilai karakteristik database sumber. Identifikasi tabel heap, tabel tanpa primary key, tabel terkompresi, dan tabel dengan computed column. Hal ini menentukan mode DTS yang tersedia. FAQ tentang pemeriksaan jenis tabel.
-
Periksa edisi dan versi sumber. Beberapa mode migrasi memerlukan edisi dan versi SQL Server tertentu (detail dalam matriks kemampuan di bawah).
Solusi migrasi
Enam solusi dalam tiga kategori: backup fisik, migrasi logis melalui DTS, dan migrasi manual melalui SQL Server Management Studio (SSMS).
Backup fisik melalui Object Storage Service (OSS) (manual)
Unggah backup penuh dan inkremental ke OSS secara manual, lalu pulihkan pada instans tujuan.
Prosedur:
-
Atur parameter
backup_typekeFULLpada database sumber. -
Buat backup penuh dan unggah ke bucket OSS.
-
Backup dan unggah log inkremental secara terjadwal.
-
Hentikan penulisan ke database sumber. Setelah log inkremental terakhir diputar ulang dengan sukses, alihkan beban kerja ke tujuan.
Jika database sumber menjalankan SQL Server 2008 R2, upgrade versi database sebelum melakukan operasi ini.
Referensi: Migrasikan data dari instans SQL Server yang dikelola sendiri ke instans ApsaraDB RDS for SQL Server
Backup fisik melalui Data Disaster Recovery dan DTS
Gunakan gerbang fisik dan DTS untuk mengotomatiskan unggah dan pemulihan backup.
Prosedur:
-
Deploy gerbang fisik.
-
Gunakan DTS untuk migrasi data. Sistem secara otomatis mengunggah data backup ke OSS.
-
Hentikan penulisan ke database sumber. Setelah log inkremental terakhir diputar ulang dengan sukses, alihkan beban kerja ke tujuan.
Migrasi logis DTS: mode parsing log
DTS membaca dan mengurai log transaksi database sumber untuk menangkap perubahan.
Prosedur:
-
Buat tugas migrasi data DTS. Atur parameter SQL Server Incremental Synchronization Mode ke Incremental Synchronization Based on Logs of Source Database (Heap tables are not supported).
-
Hentikan penulisan ke database sumber. Setelah log inkremental terakhir diputar ulang dengan sukses, alihkan beban kerja ke tujuan.
Migrasi logis DTS: mode parsing log hibrida
Menggabungkan parsing berbasis log untuk tabel non-heap dengan Change Data Capture (CDC) untuk tabel heap, memperluas jenis tabel yang dapat dimigrasikan.
Prosedur:
-
Buat tugas migrasi data DTS. Atur parameter SQL Server Incremental Synchronization Mode ke Log-based Parsing for Non-heap Tables and CDC-based Incremental Synchronization for Heap Tables (Hybrid Log-based Parsing).
-
Hentikan penulisan ke database sumber. Setelah log inkremental terakhir diputar ulang dengan sukses, alihkan beban kerja ke tujuan.
Migrasi logis DTS: mode polling instans CDC
Menggunakan komponen CDC native SQL Server untuk menangkap perubahan inkremental dari tabel perubahan, bukan dari log transaksi. Ini memberikan migrasi yang lebih stabil dengan bandwidth lebih rendah, tidak terpengaruh oleh pemotongan log.
Prosedur:
-
Buat tugas migrasi data DTS. Atur parameter SQL Server Incremental Synchronization Mode ke Polling and querying CDC instances for incremental synchronization.
-
Hentikan penulisan ke database sumber. Setelah log inkremental terakhir diputar ulang dengan sukses, alihkan beban kerja ke tujuan.
Migrasi SSMS
Ekspor dan impor data secara manual menggunakan SSMS.
Prosedur:
-
Hentikan penulisan ke database sumber.
-
Ekspor data dari database sumber menggunakan SSMS.
-
Impor data yang diekspor ke database tujuan.
-
Verifikasi konsistensi data, lalu alihkan beban kerja ke tujuan.
Referensi: Gunakan SSMS untuk migrasi data ke cloud
Matriks kemampuan
Gunakan matriks ini untuk membandingkan fitur di seluruh solusi migrasi.
| Kemampuan | OSS manual (fisik) | Data Disaster Recovery + DTS (fisik) | Parsing log (logis) | Parsing log hibrida (logis) | Polling CDC (logis) | SSMS |
|---|---|---|---|---|---|---|
| Pemetaan nama (database, tabel, kolom) | Tidak | Tidak | Ya | Ya | Ya | Tidak |
| Migrasi inkremental tanpa gangguan layanan | Tidak (beberapa menit downtime) | Tidak (beberapa menit downtime) | Ya | Ya [\*] | Ya [\*] | Tidak (downtime penuh) |
| Migrasi multi-database (satu tugas) | Tidak (satu database dalam satu waktu) | Ya | Ya (maks 10) | Ya (maks 10) | Ya (maks 10) | Tidak |
| Migrasi lintas versi | Tidak (versi tujuan >= sumber) | Tidak (versi tujuan >= sumber) | Ya | Ya | Ya | Ya |
| Kecepatan migrasi | Cepat | Cepat | — | — | — | — |
| Dukungan sumber cloud pihak ketiga | Tidak | Tidak | Amazon RDS, Azure SQL Database | Amazon RDS, Azure SQL Database | Amazon RDS, Azure SQL Database, Google Cloud SQL for SQL Server | Tidak |
| Dukungan tabel heap | Ya | Ya | Tidak | Ya | Ya | Ya |
| Dukungan tabel terkompresi | Ya | Ya | Tidak | Ya | Ya | Ya |
| Tabel tanpa primary key | Ya | Ya | Tidak | Ya | Ya [†] | Ya |
| Tabel dengan computed column | Ya | Ya | Tidak | Tidak | Ya | Ya |
| Migrasi DDL (Data Definition Language) | Penuh (melalui backup/restore) | Penuh (melalui backup/restore) | Sebagian | Sebagian | Terbatas | Penuh (melalui ekspor/impor) |
| Kompleksitas penyiapan | Sedang (backup/upload manual) | Rendah (Konsol DTS) | Rendah (Konsol DTS) | Rendah (Konsol DTS) | Rendah (Konsol DTS) | Rendah (GUI SSMS) |
\* Selama migrasi inkremental, database sumber tetap menerima penulisan. Namun, mode parsing log hibrida dan polling CDC dapat menyebabkan kunci tabel singkat (beberapa detik) saat DTS mengaktifkan CDC pada inisialisasi tugas. Semua solusi memerlukan penghentian penulisan selama alih bencana akhir.
† Tabel tanpa PRIMARY KEY atau UNIQUE constraint dapat dimigrasikan dalam mode polling CDC, tetapi mungkin berisi data duplikat. Jika Anda perlu menyimpan tabel tersebut, evaluasi apakah data duplikat dapat diterima. Batasan mode polling instans CDC.
Batasan berdasarkan solusi
OSS manual (backup fisik)
-
Memerlukan backup manual dan unggah log.
-
Hanya memigrasikan satu database dalam satu waktu.
-
Gangguan layanan selama beberapa menit terjadi saat alih bencana final (hentikan penulisan dan tunggu pemutaran ulang log inkremental terakhir).
-
Versi database tujuan tidak boleh lebih awal daripada versi database sumber.
-
Pemetaan nama untuk database, tabel, dan kolom tidak didukung.
Data Disaster Recovery + DTS (backup fisik)
-
Ekstensi file log backup harus bak.
-
Terjadi interupsi layanan selama beberapa menit pada saat failover terakhir.
-
AliyunDBSAgent harus diinstal pada server database sumber.
-
Versi database tujuan tidak boleh lebih awal daripada versi database sumber.
-
Pemetaan nama untuk database, tabel, dan kolom tidak didukung.
Mode parsing log (logis)
-
Hanya beberapa pernyataan DDL yang dapat dimigrasikan. Lebih dari 100 pernyataan DDL per jam memengaruhi kecepatan migrasi.
-
Jika kecepatan penulisan log di database sumber melebihi 10 MB/detik, 30 GB/jam, atau 500 GB/hari, tugas mungkin tertunda atau gagal.
-
Jika frekuensi backup log melebihi sekali per jam, DTS mungkin gagal mendapatkan log backup lokal. Simpan log backup selama tiga hari di disk lokal.
-
DTS membuat trigger dan tabel penyimpanan DDL di database sumber untuk menangkap perubahan DDL.
-
Nonaktifkan kendala FOREIGN KEY selama migrasi data inkremental. Jika tidak, tugas mungkin gagal.
-
Tabel heap, tabel tanpa primary key, tabel terkompresi, dan tabel dengan computed column tidak dapat dimigrasikan. FAQ tentang pemeriksaan jenis tabel.
-
Tabel tanpa PRIMARY KEY atau UNIQUE constraint mungkin berisi data duplikat. Jika Anda perlu menyimpan tabel tersebut, jangan gunakan solusi ini.
-
DTS menggunakan fungsi
fn_loguntuk menarik dan mengurai log. Fungsi ini tidak stabil. Operasi tak terduga dapat menyebabkan tugas gagal. -
Maksimal 10 database per tugas migrasi data. Melebihi batas ini dapat menyebabkan masalah stabilitas dan kinerja.
Mode parsing log hibrida (logis)
-
Persyaratan edisi sumber: SQL Server 2008 atau lebih baru (Enterprise Edition), atau SQL Server 2016 SP1 atau lebih baru (Standard Edition). SQL Server 2017 tidak didukung.
-
Hanya beberapa pernyataan DDL yang dapat dimigrasikan. Lebih dari 100 pernyataan DDL per jam memengaruhi kecepatan migrasi.
-
Jika kecepatan penulisan log di database sumber melebihi 10 MB/detik, 30 GB/jam, atau 500 GB/hari, tugas mungkin tertunda atau gagal.
-
Jika frekuensi backup log melebihi sekali per jam, DTS mungkin gagal mendapatkan log backup lokal. Simpan log backup selama tiga hari di disk lokal.
-
DTS mengaktifkan CDC untuk database dan beberapa tabel. DTS juga membuat trigger dan tabel penyimpanan DDL di database sumber untuk menangkap perubahan DDL.
-
Nonaktifkan kendala FOREIGN KEY selama migrasi data inkremental. Jika tidak, tugas mungkin gagal.
-
Tabel dengan computed column tidak dapat dimigrasikan. FAQ tentang pemeriksaan jenis tabel.
-
Tabel tanpa PRIMARY KEY atau UNIQUE constraint mungkin berisi data duplikat. Jika Anda perlu menyimpan tabel tersebut, jangan gunakan solusi ini.
-
DTS menggunakan fungsi
fn_loguntuk menarik dan mengurai log. Fungsi ini tidak stabil. Operasi tak terduga dapat menyebabkan tugas gagal. -
Maksimal 10 database per tugas migrasi data. Melebihi batas ini dapat menyebabkan masalah stabilitas dan kinerja.
Mode polling instans CDC (logis)
-
Persyaratan edisi sumber untuk VM Azure: SQL Server 2008 atau lebih baru (Enterprise Edition), atau SQL Server 2016 SP1 atau lebih baru (Standard Edition). SQL Server 2017 tidak didukung.
-
Izin akun: Akun akses DTS harus memiliki izin untuk mengaktifkan CDC tingkat database dan tingkat tabel. CDC tingkat database memerlukan akun dengan role
sysadmin. CDC tingkat tabel memerlukan akun istimewa.-
Azure SQL Database: Akun administrator server memiliki izin yang diperlukan. CDC dapat diaktifkan untuk semua database yang dibeli dengan model vCore. Untuk model DTU, database harus memiliki tier layanan S3 atau lebih tinggi.
-
Amazon RDS for SQL Server: Akun istimewa memiliki izin yang diperlukan. CDC dapat diaktifkan untuk prosedur tersimpan di tingkat database.
-
CDC tidak dapat diaktifkan untuk indeks penyimpanan kolom terklaster.
-
Modul pra-DTS mengaktifkan CDC di database sumber. Proses ini menyebabkan kunci tabel selama beberapa detik karena keterbatasan SQL Server.
-
-
Maksimal 1.000 tabel per tugas. Melebihi batas ini dapat menyebabkan penundaan atau ketidakstabilan.
-
Maksimal 10 database per tugas migrasi data. Melebihi batas ini dapat menyebabkan masalah stabilitas dan kinerja.
-
Tabel tanpa PRIMARY KEY atau UNIQUE constraint mungkin berisi data duplikat. Jika Anda perlu menyimpan tabel tersebut, jangan gunakan solusi ini.
-
Migrasi data inkremental memiliki latensi sekitar 10 detik.
-
Jangan tambahkan atau hapus kolom melalui DDL lebih dari dua kali dalam satu menit. Jika tidak, tugas migrasi data mungkin gagal.
-
Jangan ubah instans CDC database sumber selama migrasi. Jika tidak, tugas mungkin gagal atau terjadi kehilangan data.
-
Migrasi beberapa tabel di beberapa database dalam satu tugas dapat menyebabkan masalah stabilitas dan kinerja.
Migrasi SSMS
-
Harus menghentikan penulisan ke database sumber sebelum migrasi. Jika tidak, ketidakkonsistenan data dapat terjadi.
-
Semua langkah migrasi harus dilakukan secara manual melalui SSMS.
Pilih solusi migrasi
Pilih berdasarkan lingkungan sumber, kebutuhan migrasi inkremental, dan batasan operasional Anda.
Jika lingkungan sumber Anda tidak mendukung migrasi data inkremental, hentikan penulisan ke database sumber sebelum memulai migrasi.
SQL Server yang dikelola sendiri
| Atribut | Detail |
|---|---|
| Dukungan inkremental | Ya |
| Solusi yang tersedia | Backup fisik manual OSS, backup fisik Data Disaster Recovery + DTS, migrasi logis DTS (ketiga mode) |
| Direkomendasikan | Data Disaster Recovery + DTS melalui gerbang fisik |
Pendekatan ini menggabungkan kecepatan backup fisik dengan kenyamanan Konsol DTS, serta mendukung migrasi multi-database dalam satu tugas. Migrasikan data dari database SQL Server yang dikelola sendiri ke instans ApsaraDB RDS for SQL Server menggunakan gerbang fisik.
Azure SQL Database
| Atribut | Detail |
|---|---|
| Dukungan inkremental | Ya |
| Solusi yang tersedia | Migrasi logis DTS (atur SQL Server Incremental Synchronization Mode ke Polling and querying CDC instances for incremental synchronization untuk data inkremental), migrasi end-to-end Konsol ApsaraDB RDS, migrasi SSMS |
| Direkomendasikan | Migrasi end-to-end Konsol ApsaraDB RDS atau migrasi logis DTS dengan mode polling CDC |
Keduanya menawarkan alur kerja terpandu dengan langkah manual minimal. Migrasikan data dari database SQL Server di Microsoft Azure ke ApsaraDB RDS for SQL Server.
Azure SQL Managed Instance dan SQL Server di Azure Virtual Machines
| Atribut | Detail |
|---|---|
| Dukungan inkremental | Ya |
| Solusi yang tersedia | Migrasi logis DTS (atur SQL Server Incremental Synchronization Mode ke Polling and querying CDC instances for incremental synchronization untuk data inkremental), migrasi end-to-end Konsol ApsaraDB RDS, migrasi SSMS, backup fisik manual OSS |
Amazon RDS for SQL Server
| Atribut | Detail |
|---|---|
| Dukungan inkremental | Ya |
| Solusi yang tersedia | Migrasi logis DTS (atur SQL Server Incremental Synchronization Mode ke Polling and querying CDC instances for incremental synchronization untuk data inkremental), migrasi end-to-end Konsol ApsaraDB RDS, migrasi SSMS, backup fisik manual OSS |
| Direkomendasikan | Migrasi end-to-end Konsol ApsaraDB RDS atau migrasi logis DTS dengan mode polling CDC |
Migrasikan data dari instans Amazon RDS for SQL Server ke instans ApsaraDB RDS for SQL Server.
Huawei Cloud RDS for SQL Server
| Atribut | Detail |
|---|---|
| Dukungan inkremental | Tidak |
| Solusi yang tersedia | Migrasi SSMS, migrasi logis DTS (hanya data penuh), backup fisik manual OSS (hanya data penuh) |
| Direkomendasikan | Migrasi backup penuh manual OSS |
Jika database sumber menjalankan SQL Server 2008 R2, upgrade versi database sebelum melakukan operasi ini.
Untuk petunjuk mendapatkan data backup, lihat Creating a Manual Backup dan Downloading a Backup File.
TencentDB for SQL Server
Dengan dukungan inkremental:
| Atribut | Detail |
|---|---|
| Dukungan inkremental | Ya |
| Solusi yang tersedia | Migrasi logis DTS, backup fisik manual OSS |
| Direkomendasikan | Migrasi logis DTS |
Tanpa dukungan inkremental: Gunakan migrasi SSMS.
Google Cloud SQL for SQL Server
| Atribut | Detail |
|---|---|
| Dukungan inkremental | Ya |
| Solusi yang tersedia | Migrasi SSMS, migrasi logis DTS (atur SQL Server Incremental Synchronization Mode ke Polling and querying CDC instances for incremental synchronization untuk data inkremental) |
| Direkomendasikan | Migrasi logis DTS dengan mode polling CDC |
Langkah selanjutnya
Verifikasi integritas data
Setelah migrasi, verifikasi bahwa semua data telah ditransfer dengan benar ke instans tujuan.
Verifikasi data inti
Urutkan data berdasarkan tanggal atau ID auto-increment dan bandingkan catatan terbaru antara database sumber dan tujuan. Misalnya, jika tabel bisnis inti Orders berisi bidang seperti OrderID dan OrderDate, jalankan kueri berikut pada kedua database:
-- Database sumber
SELECT TOP 10 OrderID, OrderDate, CustomerID, TotalAmount
FROM Orders
ORDER BY OrderDate DESC;
-- Database tujuan
SELECT TOP 10 OrderID, OrderDate, CustomerID, TotalAmount
FROM Orders
ORDER BY OrderDate DESC;
Verifikasi data penuh dengan DTS
DTS menyediakan verifikasi data penuh antara database sumber dan tujuan tanpa downtime. Konfigurasikan tugas verifikasi data.
Perbarui statistik database
Kinerja kueri pada instans tujuan mungkin menurun karena perubahan distribusi data. Perbarui semua statistik di database yang dimigrasikan untuk memulihkan kinerja. Perbarui statistik database.