Gunakan Data Transmission Service (DTS) untuk menyinkronkan data secara berkelanjutan dari database SQL Server yang dikelola sendiri ke kluster PolarDB for MySQL, mencakup skema, data historis lengkap, dan perubahan berkelanjutan.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Memiliki database SQL Server yang dikelola sendiri yang menjalankan versi yang didukung oleh DTS. Untuk daftar versi yang didukung, lihat Ikhtisar skenario sinkronisasi data.
Sebuah klaster PolarDB for MySQL telah dibuat. Lihat Membeli klaster Edisi Perusahaan atau Membeli klaster langganan.
Memiliki ruang penyimpanan yang cukup tersedia pada kluster PolarDB for MySQL untuk menampung seluruh data dari database SQL Server sumber.
Jika database sumber memenuhi salah satu kondisi berikut, bagi tugas menjadi beberapa subtugas:
Berisi lebih dari 10 database.
Mencadangkan log lebih sering daripada sekali per jam.
Menjalankan lebih dari 100 pernyataan DDL per jam per database.
Menulis log dengan laju lebih dari 20 MB/detik per database.
Memerlukan aktivasi change data capture (CDC) untuk lebih dari 1.000 tabel.
Pilih mode sinkronisasi inkremental
Sebelum mengonfigurasi tugas, tentukan mode sinkronisasi inkremental yang sesuai dengan database sumber Anda. Pilihan ini memengaruhi langkah persiapan database sumber dan batasan yang berlaku.
| Mode | Tipe tabel yang didukung | Dampak pada database sumber | Paling cocok untuk |
|---|---|---|---|
| Hybrid log-based parsing | Semua tipe tabel, termasuk heap tables, tabel tanpa kunci primer, tabel terkompresi, dan tabel dengan kolom terhitung. | Membuat trigger dts_cdc_sync_ddl, tabel heartbeat dts_sync_progress, dan tabel riwayat DDL dts_cdc_ddl_history; mengaktifkan CDC pada database sumber dan tabel tertentu. | Sebagian besar penerapan SQL Server di mana sumber dapat menerima artefak yang ditulis oleh DTS. |
| Incremental synchronization based on source database logs | Hanya tabel dengan clustered indexes dan kolom kunci primer; tidak mendukung heap tables, tabel tanpa kunci primer, tabel terkompresi, atau tabel dengan kolom terhitung. | Membuat trigger dts_cdc_sync_ddl, tabel heartbeat dts_sync_progress, dan tabel riwayat DDL dts_cdc_ddl_history di database sumber. | Sumber di mana Anda tidak dapat memodifikasi database. |
| Polling CDC instances | Amazon RDS for SQL Server, Microsoft Azure SQL Database, Microsoft Azure SQL Managed Instance, Microsoft Azure SQL Server on Virtual Machine, dan Google Cloud SQL for SQL Server. | DTS mengaktifkan CDC tingkat database dan tingkat tabel; menyebabkan penguncian tabel singkat (beberapa detik). | Database SQL Server cloud pihak ketiga. |
Untuk instans ApsaraDB RDS for SQL Server yang menjalankan edisi Web, Anda harus menggunakan Incremental synchronization based on source database logs.
Untuk memeriksa apakah tabel Anda merupakan heap tables, tabel tanpa kunci primer, tabel terkompresi, atau tabel dengan kolom terhitung, lihat FAQ.
Penagihan
| Tipe sinkronisasi | Biaya |
|---|---|
| Sinkronisasi skema dan sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Lihat Ikhtisar penagihan. |
Topologi sinkronisasi yang didukung
Sinkronisasi satu arah satu-ke-satu.
Sinkronisasi satu arah satu-ke-banyak.
Sinkronisasi satu arah banyak-ke-satu.
Untuk semua topologi yang didukung, lihat Topologi sinkronisasi.
Operasi SQL yang dapat disinkronkan
| Tipe operasi | Pernyataan |
|---|---|
| DML | INSERT, UPDATE, DELETE |
| DDL | CREATE TABLE, ADD COLUMN, DROP COLUMN, DROP TABLE, CREATE INDEX, DROP INDEX |
Operasi DDL berikut tidak disinkronkan:
CREATE TABLEuntuk tabel partisi atau tabel yang berisi fungsi.Operasi DDL yang melibatkan tipe data yang ditentukan pengguna.
Operasi DDL Online.
Pernyataan DDL transaksional.
Batasan
Batasan database sumber
Tabel harus memiliki PRIMARY KEY atau kendala UNIK, dengan semua bidang unik. Tanpa ini, database tujuan mungkin berisi catatan duplikat.
Jika Anda memilih tabel sebagai objek dan mengganti namanya di database tujuan: maksimal 5.000 tabel per tugas. Untuk jumlah tabel lebih banyak, konfigurasikan beberapa tugas atau sinkronkan pada tingkat database.
Maksimal 10 database per tugas sinkronisasi. Untuk jumlah lebih banyak, konfigurasikan beberapa tugas.
DTS menggunakan fungsi
fn_loguntuk membaca log sumber. Jangan menghapus log database sumber sebelum tugas selesai — tindakan ini dapat menyebabkan tugas gagal.Persyaratan pencatatan data:
Mode pencadangan harus diatur ke Full, dan pencadangan fisik penuh harus dilakukan.
Untuk sinkronisasi hanya inkremental: pertahankan log setidaknya selama 24 jam.
Untuk sinkronisasi penuh plus inkremental: pertahankan log setidaknya selama 7 hari. Setelah sinkronisasi penuh selesai, Anda dapat mengurangi periode retensi menjadi 24 jam.
Jika sumber adalah instansi hanya baca, operasi DDL tidak dapat disinkronkan.
Jika database sumber adalah Azure SQL Database, tugas sinkronisasi data hanya dapat menyinkronkan data dari satu database.
Untuk instans ApsaraDB RDS for SQL Server: nonaktifkan Transparent Data Encryption (TDE) sebelum memulai tugas. Lihat Nonaktifkan TDE.
Selama sinkronisasi skema dan sinkronisasi data penuh, jangan jalankan pernyataan DDL. Melakukannya akan menyebabkan tugas gagal.
Untuk sinkronisasi data penuh, gunakan mode isolasi transaksi
READ_COMMITTED_SNAPSHOTpada database sumber untuk mencegah shared lock menghalangi penulisan data. Jika Anda melewati langkah ini, ketidakkonsistenan data atau kegagalan instansi dapat terjadi dan tidak dicakup oleh perjanjian tingkat layanan (SLA) DTS.
Persyaratan CDC (berlaku saat CDC perlu diaktifkan pada tabel sumber):
Bidang
srvnamedalamsys.sysserversharus sesuai dengan nilai kembali fungsiSERVERPROPERTY.Untuk database SQL Server yang dikelola sendiri: pemilik database harus merupakan pengguna
sa. Untuk ApsaraDB RDS for SQL Server: pemilik database harus merupakan penggunasqlsa.Edisi Enterprise: diperlukan SQL Server 2008 atau versi lebih baru.
Edisi Standard: diperlukan SQL Server 2016 SP1 atau versi lebih baru.
Jika menjalankan SQL Server 2017 (edisi Standard atau Enterprise), perbarui ke versi yang lebih baru.
Jumlah tabel yang diaktifkan CDC dalam satu tugas tidak boleh melebihi batas maksimum yang didukung oleh DTS. Jika melebihi, pemeriksaan awal akan gagal.
Jika satu bidang dalam tabel yang diaktifkan CDC melebihi 64 KB, jalankan:
exec sp_configure 'max text repl size', -1;
Batasan khusus mode
Hybrid log-based parsing:
Jangan menambahkan atau menghapus kolom dalam rentang waktu 10 menit. Misalnya, urutan berikut dalam waktu 10 menit menyebabkan kesalahan tugas:
ALTER TABLE test_table DROP COLUMN Flag; ALTER TABLE test_table ADD Remark nvarchar(50) not null default('');Anda tidak dapat menjalankan
SELECT INTOatauTRUNCATEpada tabel yang diaktifkan CDC. Jangan menghapus trigger yang dibuat oleh DTS.Komponen CDC menyimpan data inkremental selama 3 hari secara default. Untuk mengubah periode retensi, jalankan:
exec console.sys.sp_cdc_change_job @job_type = 'cleanup', @retention = <time>;<time>adalah periode retensi dalam menit. Jika catatan inkremental harian melebihi 10 juta, atur<time>menjadi1.440.Pertahankan jumlah tabel yang diaktifkan CDC pada atau di bawah 1.000 per tugas untuk menghindari latensi atau ketidakstabilan.
Atur laju penulisan maksimum untuk tabel yang diaktifkan CDC menjadi 1.000 catatan per detik.
Mengaktifkan CDC menyebabkan penguncian tabel singkat (beberapa detik) pada database sumber.
Incremental synchronization based on source database logs:
Hanya tabel dengan clustered indexes yang mencakup kolom kunci primer yang didukung.
Polling CDC instances:
Akun DTS harus memiliki keanggotaan role
sysadminuntuk mengaktifkan CDC tingkat database. Untuk CDC tingkat tabel, diperlukan akun istimewa.Microsoft Azure SQL Database (model vCore): semua database didukung. Azure SQL Database (model DTU): hanya database dengan tier layanan S3 atau lebih tinggi yang didukung.
Amazon RDS for SQL Server: akun istimewa dapat mengaktifkan CDC pada tingkat database melalui prosedur tersimpan.
Clustered columnstore indexes tidak didukung untuk CDC.
Maksimal 1.000 tabel per tugas.
Tidak dapat menambahkan atau menghapus kolom lebih dari dua kali per menit.
Jangan memodifikasi instansi CDC pada database sumber selama sinkronisasi — hal ini dapat menyebabkan kehilangan data.
CDC menyimpan data inkremental selama 3 hari secara default. Gunakan perintah retensi yang sama seperti pada mode hybrid.
Mengaktifkan CDC menyebabkan penguncian tabel singkat (beberapa detik) pada database sumber.
Batasan umum
Sinkronisasi skema mendukung database, skema, dan tabel. View, trigger, dan prosedur tersimpan tidak disinkronkan dalam skenario lintas mesin database.
Tipe data yang tidak didukung:
TIMESTAMP,CURSOR,ROWVERSION,SQL_VARIANT,HIERARCHYID,POLYGON,GEOMETRY, danGEOGRAPHY.Jika data yang disinkronkan berisi karakter 4-byte (karakter langka atau emoji), database dan tabel tujuan harus menggunakan set karakter
UTF8mb4. Atur parametercharacter_set_serverpada database tujuan keUTF8mb4.DTS tidak mendukung operasi DDL kompleks, operasi DDL yang melibatkan tipe data yang ditentukan pengguna, operasi DDL Online, atau pernyataan DDL transaksional.
Jangan melakukan pengindeksan ulang selama sinkronisasi inkremental — hal ini dapat menyebabkan tugas gagal dan data hilang. DTS juga tidak dapat menyinkronkan operasi DDL yang terkait dengan kunci primer pada tabel yang diaktifkan CDC.
Jika DTS gagal menulis pernyataan DDL ke database tujuan, tugas tetap berjalan. Lihat pernyataan DDL yang gagal di log tugas. Lihat Lihat log tugas.
Sinkronisasi data penuh menggunakan operasi INSERT konkuren, yang menyebabkan fragmentasi pada tabel tujuan. Setelah sinkronisasi penuh selesai, ruang tabel tujuan lebih besar daripada sumber.
Sebelum menyinkronkan data, evaluasi dampak sinkronisasi data terhadap kinerja database sumber dan tujuan. Kami menyarankan agar Anda menyinkronkan data selama jam sepi. Selama sinkronisasi data penuh awal, DTS menggunakan sumber daya baca dan tulis database sumber dan tujuan, yang dapat meningkatkan beban pada server database.
Jangan menulis data dari sumber lain ke database tujuan selama sinkronisasi. Melakukannya menyebabkan ketidakkonsistenan data.
Anda tidak dapat menambahkan atau menghapus database saat memodifikasi objek sinkronisasi setelah tugas dimulai.
Jika instans sumber adalah instans ApsaraDB RDS for SQL Server, DTS membuat akun bernama
rdsdt_dtsacct. Jangan menghapus akun ini atau mengubah kata sandinya selama tugas berjalan. Untuk informasi lebih lanjut, lihat Akun sistem.Jika tugas DTS gagal, dukungan teknis DTS berusaha memulihkannya dalam waktu 8 jam. Selama pemulihan, tugas mungkin dimulai ulang dan parameter tugas (bukan parameter database) mungkin dimodifikasi.
Persiapkan database sumber
Konfigurasikan pengaturan log pada database SQL Server yang dikelola sendiri sebelum membuat tugas sinkronisasi. Jika Anda menyinkronkan dari beberapa database, ulangi langkah-langkah ini untuk setiap database.
Ubah model pemulihan ke Full. Anda juga dapat melakukannya di SQL Server Management Studio (SSMS). Lihat Lihat atau Ubah Model Pemulihan Database (SQL Server).
use master; GO ALTER DATABASE <database_name> SET RECOVERY FULL WITH ROLLBACK IMMEDIATE; GOGanti
<database_name>dengan nama database sumber Anda. Contoh:use master; GO ALTER DATABASE mytestdata SET RECOVERY FULL WITH ROLLBACK IMMEDIATE; GOBuat cadangan logis database sumber. Lewati langkah ini jika cadangan logis sudah ada.
<database_name>: nama database sumber.<physical_backup_device_name>: path dan nama file untuk file cadangan.
BACKUP DATABASE <database_name> TO DISK='<physical_backup_device_name>'; GOContoh:
BACKUP DATABASE mytestdata TO DISK='D:\backup\dbdata.bak'; GOBuat cadangan log untuk database sumber.
BACKUP LOG <database_name> to DISK='<physical_backup_device_name>' WITH init; GOContoh:
BACKUP LOG mytestdata TO DISK='D:\backup\dblog.bak' WITH init; GO
Konfigurasikan tugas sinkronisasi
Buka halaman Tugas Sinkronisasi Data.
Login ke Konsol Data Management (DMS).
Di bilah navigasi atas, klik Data + AI.
Di panel navigasi kiri, pilih DTS (DTS) > Data Synchronization.
Jalur navigasi dapat berbeda tergantung pada mode dan tata letak Konsol DMS. Lihat Mode simple dan Sesuaikan tata letak dan gaya Konsol DMS. Anda juga dapat langsung menuju halaman Tugas Sinkronisasi Data.
Pilih wilayah tempat instans sinkronisasi berada. Di Konsol DTS baru, pilih wilayah di bilah navigasi atas.
Klik Create Task. Konfigurasikan database sumber dan tujuan menggunakan parameter berikut.
Bagian Parameter Deskripsi N/A Task Name Nama deskriptif untuk mengidentifikasi tugas. Tidak perlu unik. DTS menghasilkan nama default. Source Database Select a DMS database instance Pilih instans database DMS yang sudah ada untuk mengisi parameter secara otomatis, atau biarkan kosong untuk mengonfigurasi secara manual. Database Type Pilih SQL Server. Access Method Pilih Express Connect, VPN Gateway, or Smart Access Gateway. Instance Region Wilayah tempat database SQL Server yang dikelola sendiri berada. Jika merupakan database yang dikelola sendiri, siapkan lingkungan jaringan yang diperlukan terlebih dahulu. Lihat Ikhtisar persiapan. Replicate Data Across Alibaba Cloud Accounts Pilih No untuk skenario ini. Connected VPC ID virtual private cloud (VPC) tempat database SQL Server sumber diterapkan. IP address Alamat IP server database sumber. Port Number Port layanan. Default: 1433. Database Account Akun yang digunakan untuk menghubungkan ke database sumber. Harus memiliki izin role sysadmin. Lihat CREATE USER dan GRANT (Transact-SQL).Database Password Kata sandi untuk akun database. Destination Database Select a DMS database instance Pilih instans database DMS yang sudah ada untuk mengisi parameter secara otomatis, atau biarkan kosong untuk mengonfigurasi secara manual. Database Type Pilih PolarDB for MySQL. Access Method Pilih Alibaba Cloud Instance. Instance Region Wilayah tempat kluster PolarDB for MySQL berada. PolarDB Cluster ID ID kluster PolarDB for MySQL tujuan. Database Account Akun yang digunakan untuk menghubungkan ke kluster tujuan. Harus memiliki izin baca dan tulis pada database tujuan. Database Password Kata sandi untuk akun database. Klik Test Connectivity and Proceed. DTS secara otomatis menambahkan blok CIDR servernya ke daftar putih instans database Alibaba Cloud dan ke aturan grup keamanan instans Elastic Compute Service (ECS). Untuk database yang dikelola sendiri di pusat data atau platform cloud pihak ketiga, tambahkan secara manual blok CIDR server DTS ke daftar putih database. Lihat Blok CIDR server DTS.
PeringatanMenambahkan blok CIDR DTS ke daftar putih atau aturan grup keamanan menimbulkan risiko keamanan. Sebelum melanjutkan, ambil tindakan pencegahan seperti menggunakan kredensial kuat, membatasi port yang terbuka, mengotentikasi panggilan API, dan secara berkala mengaudit aturan daftar putih. Untuk keamanan tambahan, hubungkan database ke DTS melalui Express Connect, VPN Gateway, atau Smart Access Gateway.
Konfigurasikan objek yang akan disinkronkan dan pengaturan lanjutan.
Parameter Deskripsi Synchronization Types Pilih Schema Synchronization, Full Data Synchronization, dan Incremental Data Synchronization. Sinkronisasi data penuh dijalankan terlebih dahulu untuk menyalin data historis, memberikan garis dasar untuk sinkronisasi inkremental. Processing Mode of Conflicting Tables Precheck and Report Errors (default): pemeriksaan awal gagal jika tujuan berisi tabel dengan nama yang sama seperti tabel sumber. Gunakan pemetaan nama objek jika Anda perlu mengganti nama tabel tujuan. Ignore Errors and Proceed: melewati pemeriksaan konflik nama. Selama sinkronisasi penuh, catatan dengan kunci primer atau unik yang bertentangan dilewati. Selama sinkronisasi inkremental, catatan tersebut menimpa catatan tujuan. Jika skema berbeda, inisialisasi mungkin gagal atau sebagian data hilang. SQL Server Incremental Synchronization Mode Pilih mode yang Anda pilih di Pilih mode sinkronisasi inkremental. Label UI-nya adalah: Log-based Parsing for Non-heap Tables and CDC-based Incremental Synchronization for Heap Tables (Hybrid Log-based Parsing), Incremental Synchronization Based on Logs of Source Database (Heap tables are not supported), dan Polling and querying CDC instances for incremental synchronization. Source Objects Pilih objek yang akan disinkronkan dan klik ikon panah untuk memindahkannya ke Selected Objects. Dalam skenario database heterogen ini, hanya tabel yang dapat disinkronkan. Selected Objects Untuk mengganti nama satu objek di tujuan, klik kanan objek tersebut dan gunakan opsi ganti nama. Lihat Peta nama objek tunggal. Untuk mengganti nama beberapa objek sekaligus, klik Batch Edit. Lihat Peta nama beberapa objek sekaligus. Untuk memilih operasi SQL mana yang akan disinkronkan untuk tabel tertentu, klik kanan tabel tersebut dan konfigurasikan operasinya. Untuk memfilter baris berdasarkan kondisi, klik kanan objek dan tentukan kondisi WHERE. Lihat Tentukan kondisi filter. Klik Next: Advanced Settings dan konfigurasikan parameter berikut.
Parameter Deskripsi Monitoring and Alerting Pilih Yes untuk menerima notifikasi saat tugas gagal atau latensi sinkronisasi melebihi ambang batas. Konfigurasikan ambang batas peringatan dan pengaturan notifikasi. Lihat Konfigurasi pemantauan dan peringatan. Retry Time for Failed Connections Berapa lama DTS mencoba kembali setelah kegagalan koneksi. Rentang: 10–1.440 menit. Default: 720. Atur minimal 30 menit. Jika DTS terhubung kembali dalam periode ini, tugas dilanjutkan. Jika beberapa tugas berbagi database sumber atau tujuan yang sama, waktu coba ulang terpendek yang berlaku. Saat DTS mencoba kembali koneksi, Anda dikenai biaya untuk instans DTS. Kami menyarankan agar Anda menentukan rentang waktu coba ulang berdasarkan kebutuhan bisnis Anda, dan segera rilis instans DTS setelah instans sumber dan tujuan dirilis. Retry Time for Other Issues Berapa lama DTS mencoba kembali setelah kegagalan DDL atau DML. Rentang: 1–1.440 menit. Default: 10. Atur minimal 10 menit. Harus kurang dari Retry Time for Failed Connections. Configure ETL Pilih Yes untuk menggunakan ekstrak, transformasi, dan muat (ETL) untuk mentransformasi data selama sinkronisasi. Lihat Apa itu ETL? dan Konfigurasi ETL. Klik Next: Save Task Settings and Precheck. Untuk melihat pratinjau parameter OpenAPI untuk konfigurasi ini, arahkan kursor ke tombol dan klik Preview OpenAPI parameters sebelum melanjutkan.
DTS menjalankan pemeriksaan awal sebelum tugas dimulai. Jika ada pemeriksaan yang gagal, klik View Details untuk melihat penyebabnya dan melakukan pemecahan masalah. Kemudian klik Precheck Again. Jika item peringatan dapat diabaikan, klik Confirm Alert Details, lalu Ignore, dan kemudian Precheck Again. Mengabaikan peringatan dapat menyebabkan ketidakkonsistenan data.
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Konfigurasikan metode penagihan dan kelas instans untuk instans sinkronisasi.
Bagian Parameter Deskripsi New Instance Class Billing Method Subscription: bayar di muka untuk jangka waktu tetap — lebih hemat biaya untuk penggunaan jangka panjang. Pay-as-you-go: ditagih per jam — cocok untuk penggunaan jangka pendek. Rilis instans saat Anda tidak lagi membutuhkannya untuk menghentikan penagihan. Resource Group Settings Kelompok sumber daya untuk instans sinkronisasi. Default: default resource group. Lihat Apa itu Resource Management? Instance Class Kelas throughput sinkronisasi. Lihat Kelas instans instansi sinkronisasi data. Subscription Duration Hanya tersedia untuk metode penagihan Subscription. Pilih jangka waktu satu hingga sembilan bulan, atau satu, dua, tiga, atau lima tahun. Baca dan terima Data Transmission Service (Pay-as-you-go) Service Terms.
Klik Buy and Start. Di dialog konfirmasi, klik OK.
Tugas muncul di daftar tugas. Anda dapat memantau kemajuan sinkronisasi di sana.
Langkah selanjutnya
Topologi sinkronisasi — siapkan topologi satu-ke-banyak atau banyak-ke-satu.
Peta nama objek — ganti nama objek di database tujuan.
Konfigurasi pemantauan dan peringatan — atur peringatan latensi dan kegagalan.
Lihat log tugas — periksa kegagalan DDL dan aktivitas tugas.