Gunakan Data Transmission Service (DTS) untuk menyiapkan pipeline sinkronisasi data berkelanjutan dari database SQL Server yang dikelola sendiri yang dihosting pada Elastic Compute Service (ECS) ke instans AnalyticDB for PostgreSQL. DTS menangani pemuatan penuh awal, lalu menangkap perubahan berkelanjutan melalui log transaksi SQL Server sehingga beban kerja analitik Anda tetap selaras dengan database operasional.
Cara kerja
DTS membaca log transaksi SQL Server untuk menangkap perubahan inkremental setelah sinkronisasi data penuh awal. Agar proses ini berjalan, database sumber harus beroperasi dalam mode pemulihan penuh (full recovery mode)—yang memastikan log transaksi menyimpan perubahan cukup lama agar dapat dibaca oleh DTS. DTS juga menambahkan tabel heartbeat bernama <source_table_name>_dts_mysql_heartbeat ke database sumber guna melacak latensi sinkronisasi.
Prasyarat
Sebelum memulai, pastikan hal-hal berikut:
Versi SQL Server adalah 2008, 2008 R2, 2012, 2014, 2016, 2017, atau 2019.
Tabel yang akan disinkronkan memiliki kunci primer atau indeks UNIQUE NOT NULL.
Instans AnalyticDB for PostgreSQL memiliki ruang penyimpanan tersedia yang lebih besar daripada total ukuran data di database SQL Server sumber.
Jika database SQL Server Anda dideploy dalam grup ketersediaan Always On, gunakan mode synchronous-commit.
Penagihan
| Tipe sinkronisasi | Biaya |
|---|---|
| Sinkronisasi skema dan sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Untuk informasi lebih lanjut, lihat Ikhtisar penagihan. |
Batasan
Objek skema yang tidak didukung
DTS tidak menyinkronkan assembly, Service Broker, indeks teks penuh (full-text indexes), katalog teks penuh (full-text catalogs), skema terdistribusi, fungsi terdistribusi, prosedur tersimpan CLR, fungsi skalar bernilai CLR, fungsi bernilai tabel CLR, tabel internal, sistem, atau fungsi agregat.
Tipe data yang tidak didukung
DTS tidak menyinkronkan kolom dengan tipe berikut: TIMESTAMP, CURSOR, ROWVERSION, HIERARCHYID, SQL\_VARIANT, SPATIAL GEOMETRY, SPATIAL GEOGRAPHY, dan TABLE.
Batasan lainnya
Tabel dengan kolom terhitung (computed columns) tidak disinkronkan.
Operasi DDL transaksional tidak dimigrasikan.
Operasi SQL yang didukung
DML: INSERT, UPDATE, dan DELETE
DDL: hanya ADD COLUMN
Izin yang diperlukan
Izin yang diperlukan bergantung pada apakah Anda memerlukan sinkronisasi data inkremental.
Hanya sinkronisasi penuh (skema + data penuh)
| Database | Izin yang diperlukan |
|---|---|
| SQL Server yang dikelola sendiri | sysadmin |
| AnalyticDB for PostgreSQL | LOGIN; SELECT, CREATE, INSERT, UPDATE, dan DELETE pada tabel tujuan; CONNECT dan CREATE pada database tujuan; CREATE pada skema tujuan; izin COPY |
Sinkronisasi penuh + sinkronisasi data inkremental
Set izin yang sama berlaku. Untuk akun AnalyticDB for PostgreSQL, akun awal instans tersebut telah memiliki semua izin yang diperlukan.
Untuk petunjuk pemberian izin, lihat:
SQL Server: CREATE USER dan Kelola pengguna dan izin
AnalyticDB for PostgreSQL: Buat akun database dan Kelola pengguna dan izin
Catatan penggunaan
DTS menggunakan sumber daya baca dan tulis pada kedua instans sumber dan tujuan selama sinkronisasi data penuh awal, yang meningkatkan beban mereka. Jalankan sinkronisasi selama jam sepi—idealnya ketika utilisasi CPU kedua instans berada di bawah 30%.
Hindari sering melakukan pencadangan database sumber selama sinkronisasi. Simpan file log selama lebih dari tiga hari. Jika file log dipotong sebelum DTS sempat membacanya, DTS tidak dapat mengambil perubahannya.
Persiapkan database SQL Server sumber
Lengkapi langkah-langkah berikut sebelum mengonfigurasi tugas sinkronisasi. Langkah-langkah ini memastikan DTS dapat membaca log transaksi dan menangkap perubahan inkremental.
Atur model pemulihan ke full. Ini memungkinkan log transaksi menyimpan perubahan yang dibutuhkan DTS untuk sinkronisasi inkremental. Jalankan perintah berikut atau gunakan SQL Server Management Studio (SSMS). Untuk petunjuk SSMS, lihat Lihat atau Ubah Model Pemulihan Database.
use master; GO ALTER DATABASE <database_name> SET RECOVERY FULL WITH ROLLBACK IMMEDIATE; GOGanti
<database_name>dengan nama database sumber. Contoh:use master; GO ALTER DATABASE mytestdata SET RECOVERY FULL WITH ROLLBACK IMMEDIATE; GOBuat pencadangan penuh database. Lewati langkah ini jika Anda sudah memilikinya.
Placeholder Deskripsi Contoh <database_name>Nama database sumber mytestdata<backup_file_path>Jalur penyimpanan dan nama file untuk backup D:\backup\dbdata.bakBACKUP DATABASE <database_name> TO DISK='<backup_file_path>'; GOContoh:
BACKUP DATABASE mytestdata TO DISK='D:\backup\dbdata.bak'; GOCadangkan log transaksi.
BACKUP LOG <database_name> TO DISK='<backup_file_path>' WITH init; GOContoh:
BACKUP LOG mytestdata TO DISK='D:\backup\dblog.bak' WITH init; GOBuat indeks terkluster pada tabel yang ingin Anda sinkronkan. Untuk petunjuknya, lihat Buat Indeks Terkluster.
Konfigurasi tugas sinkronisasi
Beli instans sinkronisasi DTS. Di halaman pembelian, atur: Untuk petunjuk pembelian, lihat Beli instans DTS.
Instans Sumber: SQL Server
Instans Tujuan: AnalyticDB for PostgreSQL
Topologi Sinkronisasi: One-way Synchronization
Login ke Konsol DTS.
Di panel navigasi kiri, klik Data Synchronization.
Di bagian atas halaman Synchronization Tasks, pilih wilayah tempat instans tujuan berada.
Temukan instans sinkronisasi dan klik Configure Synchronization Channel di kolom Actions.
Konfigurasikan instans sumber dan tujuan.
Bagian Parameter Deskripsi N/A Synchronization Task Name Nama yang dihasilkan otomatis oleh DTS. Tentukan nama deskriptif agar tugas mudah diidentifikasi. Nama ini tidak perlu unik. Detail Instans Sumber Instance Type Pilih User-Created Database in ECS Instance. Jika Anda memilih tipe instans lain, siapkan lingkungan yang diperlukan terlebih dahulu. Untuk detailnya, lihat Ikhtisar persiapan. Instance Region Wilayah sumber yang Anda pilih saat membeli instans. Hanya-baca. ECS Instance ID ID instans ECS yang menghost database sumber. Database Type Tetap sebagai SQLServer. Hanya-baca. Port Number Port layanan database sumber. Default: 3306. Database Account Akun database sumber. Lihat Izin yang diperlukan. Database Password Kata sandi untuk akun database. Encryption Pilih Non-encrypted atau SSL-encrypted. Parameter ini hanya tersedia di wilayah Tiongkok daratan dan wilayah China (Hong Kong). CatatanSaat ini, pengaturan Connection Method hanya didukung di wilayah Tiongkok daratan dan China (Hong Kong).
Detail Instans Tujuan Instance Type Tetap sebagai AnalyticDB for PostgreSQL. Hanya-baca. Instance Region Wilayah tujuan yang Anda pilih saat membeli instans. Hanya-baca. Instance ID ID instans AnalyticDB for PostgreSQL tujuan. Database Name Nama database tujuan. Database Account Akun database tujuan. Lihat Izin yang diperlukan. Database Password Kata sandi untuk akun database. 
Klik Set Whitelist and Next. DTS secara otomatis menambahkan blok CIDR servernya ke aturan security group ECS. Jika database sumber berjalan di beberapa instans ECS, tambahkan secara manual blok CIDR server DTS ke aturan security group masing-masing instans. Untuk daftar lengkap blok CIDR DTS, lihat Tambahkan blok CIDR server DTS.
PeringatanMenambahkan blok CIDR server DTS ke aturan security group atau daftar putih alamat IP menciptakan risiko keamanan. Sebelum melanjutkan, ambil langkah pencegahan, termasuk: memperkuat keamanan username dan password, membatasi port yang terbuka, mengautentikasi panggilan API, secara berkala mengaudit aturan daftar putih dan security group, serta menghubungkan database ke DTS melalui Express Connect, VPN Gateway, atau Smart Access Gateway.
Pilih kebijakan dan objek sinkronisasi.
Pengaturan Deskripsi Initialize Synchronization Initial Schema Synchronization, Initial Full Data Synchronization, dan Initial Incremental Data Synchronization dipilih secara default. DTS menyinkronkan skema dan data sebelum memulai replikasi inkremental. Processing Mode In Existed Target Table Pre-check and Intercept (default): gagal dalam pemeriksaan awal jika database tujuan sudah berisi tabel dengan nama yang sama. Gunakan fitur pemetaan nama objek untuk mengganti nama tabel yang bentrok. Lihat Ganti nama objek yang akan disinkronkan. Ignore Errors and Proceed: melewati pemeriksaan bentrok nama. Jika skema sesuai, DTS melewati catatan dengan kunci primer duplikat. Jika skema berbeda, hanya beberapa kolom yang disinkronkan atau tugas gagal. Merge Multi Tables Yes: menggabungkan beberapa tabel sumber dengan skema yang sama menjadi satu tabel tujuan. Ini berguna dalam skenario sharding OLTP di mana Anda ingin mengkonsolidasi tabel yang di-shard untuk analitik di AnalyticDB for PostgreSQL. Saat diaktifkan, tambahkan kolom __dts_data_source(tipe TEXT) ke tabel tujuan untuk mengidentifikasi sumber setiap catatan. DTS menulis nilai dalam format<instance_ID>:<database_name>.<schema_name>.<table_name>— contohnya,dts********:dtstestdata.testschema.customer1. Lalu gunakan fitur pemetaan nama objek untuk mengganti nama setiap tabel sumber yang dipilih menjadi nama tabel tujuan. No (default).Select the operation types Pilih operasi DML dan DDL yang akan disinkronkan. Semua tipe dipilih secara default. Select the objects to be synchronized Pindahkan tabel dari bagian Available ke bagian Selected. Dalam skenario sinkronisasi heterogen ini, hanya tabel yang disinkronkan—view, trigger, dan stored procedure tidak disertakan. Gunakan fitur pemetaan nama objek untuk mengganti nama objek di instans tujuan. Lihat Ganti nama objek yang akan disinkronkan. Add quotation marks to the target object Pilih Yes jika nama objek mengandung karakter campuran huruf besar/kecil, diawali karakter non-huruf, atau merupakan kata kunci yang dicadangkan di database tujuan. Saat diaktifkan, DTS membungkus nama objek dengan tanda kutip tunggal atau ganda selama sinkronisasi skema dan sinkronisasi inkremental. Setelah sinkronisasi, referensikan objek-objek ini menggunakan nama yang dikutip dalam kueri. Rename Databases and Tables Gunakan fitur pemetaan nama objek untuk mengganti nama objek yang disinkronkan. Lihat Pemetaan nama objek. Retry Time for Failed Connections Jika DTS kehilangan koneksi ke database sumber atau tujuan, DTS mencoba ulang hingga 720 menit (12 jam) secara default. Jika DTS terhubung kembali dalam jendela ini, tugas dilanjutkan. Jika tidak, tugas gagal. Sesuaikan nilai ini sesuai kebutuhan Anda. Selama DTS mencoba ulang, Anda tetap dikenai biaya untuk instans tersebut. 
Tentukan tipe tabel, kolom kunci primer, dan kunci distribusi untuk setiap tabel yang akan disinkronkan ke AnalyticDB for PostgreSQL. Untuk informasi tentang kolom kunci primer dan kolom distribusi, lihat Kelola tabel dan Definisikan distribusi tabel.

Klik Precheck. DTS memvalidasi konfigurasi sebelum memulai tugas. Jika ada pemeriksaan yang gagal, klik ikon
di sebelah item yang gagal untuk melihat detailnya. Perbaiki masalah tersebut dan jalankan pemeriksaan awal lagi. Jika masalah tersebut tidak kritis, Anda dapat mengabaikan item yang gagal dan menjalankan kembali pemeriksaan awal.Setelah pemeriksaan awal berhasil, tutup kotak dialog Precheck. Tugas sinkronisasi akan dimulai secara otomatis.
Di halaman Synchronization Tasks, tunggu hingga status tugas berubah menjadi Synchronizing.

Langkah berikutnya
Monitor latensi sinkronisasi dan kesehatan tugas di Konsol DTS.
Tinjau dokumentasi AnalyticDB for PostgreSQL untuk mengoptimalkan performa kueri menggunakan kunci distribusi dan tipe tabel: Definisikan distribusi tabel.