Gunakan Data Transmission Service (DTS) untuk menyiapkan pipeline data kontinu dari ApsaraDB RDS for PostgreSQL ke AnalyticDB for PostgreSQL. DTS menangani baik pemuatan awal penuh maupun penangkapan data perubahan inkremental (CDC) berkelanjutan melalui replikasi logis, sehingga database analitik Anda tetap sinkron seiring perubahan data sumber.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Instans AnalyticDB for PostgreSQL dengan penyimpanan tersedia yang lebih besar daripada ukuran total data di instans RDS for PostgreSQL sumber. Lihat Buat instans.
Database yang dibuat di instans AnalyticDB for PostgreSQL tujuan untuk menerima data yang disinkronkan. Lihat bagian CREATE DATABASE di Sintaks SQL.
Akun istimewa pada instans RDS for PostgreSQL sumber yang memiliki database tersebut. Lihat Buat akun dan Buat database.
Akun database pada instans AnalyticDB for PostgreSQL tujuan dengan izin baca dan tulis. Akun awal atau akun dengan izin RDS_SUPERUSER juga dapat digunakan. Lihat Buat akun database dan Kelola pengguna dan izin.
Penagihan
| Jenis sinkronisasi | Biaya |
|---|---|
| Sinkronisasi skema dan sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Lihat Ikhtisar penagihan. |
Operasi SQL yang didukung untuk sinkronisasi inkremental
| Jenis operasi | Pernyataan SQL |
|---|---|
| DML | INSERT, UPDATE, DELETE |
| DDL | CREATE TABLE, DROP TABLE, TRUNCATE TABLE (database PostgreSQL yang dikelola sendiri versi 11+), CREATE INDEX ON TABLE, dan operasi ALTER TABLE termasuk RENAME TABLE, ADD COLUMN, ADD COLUMN DEFAULT, ALTER COLUMN TYPE, DROP COLUMN, ADD CONSTRAINT, ADD CONSTRAINT CHECK, dan ALTER COLUMN DROP DEFAULT |
Persyaratan sinkronisasi DDL:
Sinkronisasi DDL hanya tersedia untuk tugas yang dibuat setelah 1 Oktober 2020.
Untuk tugas yang dibuat sebelum 12 Mei 2023, siapkan trigger dan fungsi di database sumber sebelum mengonfigurasi tugas. Lihat Gunakan trigger dan fungsi untuk mengimplementasikan migrasi DDL inkremental untuk database PostgreSQL.
Sinkronisasi DDL memerlukan akun database istimewa pada instans sumber dan versi mesin minor 20210228 atau lebih baru. Lihat Perbarui versi mesin minor.
Anda tidak dapat menyinkronkan data bertipe BIT selama sinkronisasi data inkremental.
Operasi DDL berikut tidak disinkronkan:
Pernyataan DDL yang mencakup pengubah tambahan seperti CASCADE atau RESTRICT
Pernyataan DDL dari sesi yang mengeksekusi
SET session_replication_role = replicaPernyataan DDL yang dipanggil melalui fungsi
Pernyataan DDL yang dikomit dalam transaksi yang sama dengan pernyataan DML
Pernyataan DDL pada objek yang tidak termasuk dalam cakupan sinkronisasi
Batasan
Persyaratan tabel dan skema
Tabel harus memiliki PRIMARY KEY atau kendala UNIQUE dengan semua bidang unik. Tanpa ini, database tujuan mungkin berisi catatan duplikat.
CatatanJika Anda membuat tabel tujuan di luar DTS (tanpa memilih Schema Synchronization untuk Synchronization Types), pastikan tabel tujuan memiliki PRIMARY KEY atau kendala NOT NULL UNIQUE yang sama dengan tabel sumber.
Hanya tabel yang dapat dipilih sebagai objek sinkronisasi — bukan view, fungsi, atau jenis objek lainnya.
Satu tugas hanya dapat menyinkronkan data dari satu database. Untuk menyinkronkan beberapa database, buat tugas terpisah untuk masing-masing.
Tabel dengan hubungan pewarisan lintas skema tidak dapat disinkronkan.
Tabel tujuan tidak boleh merupakan tabel append-optimized (AO).
DTS tidak menyinkronkan tipe data berikut: VARBIT, GEOMETRY, UUID, TSQUERY, TSVECTOR, dan TXID_SNAPSHOT.
Pemetaan kolom dan perbedaan skema
Jika Anda menggunakan pemetaan kolom untuk sinkronisasi non-seluruh-tabel, atau jika skema tabel sumber dan tujuan berbeda, data di kolom yang ada di sumber tetapi tidak di tujuan akan hilang.
Jika Anda mengganti nama tabel atau kolom di database tujuan menggunakan fitur pemetaan nama objek, menyinkronkan lebih dari 5.000 tabel dalam satu tugas menyebabkan error permintaan. Untuk tabel yang melebihi 5.000, konfigurasikan beberapa tugas atau sinkronkan seluruh database.
Persyaratan log WAL
Database sumber harus memenuhi persyaratan pencatatan log terlebih dahulu (WAL) berikut:
Atur
wal_levelkelogical.Untuk sinkronisasi inkremental saja: simpan log WAL selama lebih dari 24 jam.
Untuk sinkronisasi penuh plus inkremental: simpan log WAL minimal 7 hari. Setelah sinkronisasi penuh selesai, Anda dapat mengatur periode retensi menjadi lebih dari 24 jam.
Kegagalan memenuhi persyaratan ini dapat menyebabkan DTS gagal memperoleh log WAL, sehingga tugas gagal atau, dalam kasus luar biasa, terjadi inkonsistensi atau kehilangan data.
Batasan runtime
Jangan mengeksekusi pernyataan DDL selama sinkronisasi skema atau sinkronisasi data penuh. Melakukannya akan menyebabkan tugas gagal.
Jika Anda menambahkan tabel ke skema yang disinkronkan atau mengganti nama tabel menggunakan RENAME, eksekusi
ALTER TABLE schema.table REPLICA IDENTITY FULL;sebelum menulis data ke tabel. Ini mencegah inkonsistensi data. Lakukan operasi ini selama jam sepi untuk menghindari deadlock.CatatanGanti
schemadantabledengan nama skema dan nama tabel yang sebenarnya.Jangan menghapus tabel sementara yang dibuat oleh DTS di database sumber:
public.dts_pg_class,public.dts_pg_attribute,public.dts_pg_type,public.dts_pg_enum,public.dts_postgres_heartbeat,public.dts_ddl_command,public.dts_args_session, danpublic.aliyun_dts_instance. DTS secara otomatis menghapus tabel-tabel ini saat instans dilepas.Transaksi berdurasi panjang di database sumber dapat menyebabkan akumulasi log WAL dan menghabiskan disk space.
Jika database sumber menjalani peningkatan versi utama saat tugas sedang berjalan, tugas akan gagal dan tidak dapat dipulihkan. Konfigurasi ulang tugas tersebut.
Satu perubahan data inkremental tidak boleh melebihi 256 MB. Jika melebihi, tugas akan gagal dan tidak dapat dipulihkan. Konfigurasi ulang tugas tersebut.
Slot replikasi
DTS membuat slot replikasi dengan awalan dts_sync_ di database sumber. Slot ini menyimpan log inkremental dari 15 menit terakhir.

Slot replikasi dihapus secara otomatis ketika instans DTS dilepas. Jika Anda mengubah password database sumber atau menghapus alamat IP DTS dari daftar putih, slot tidak dapat dihapus secara otomatis — hapus secara manual untuk mencegah akumulasi.
Jika tugas dilepas atau gagal, DTS secara otomatis menghapus slot replikasi. Setelah alih bencana primary/secondary pada database PostgreSQL sumber, masuk ke database sekunder untuk menghapus slot replikasi secara manual.
DTS juga menambahkan tabel heartbeat bernama dts_postgres_heartbeat ke database sumber untuk melacak latensi sinkronisasi.
Batasan khusus sumber
ApsaraDB RDS for PostgreSQL:
Jangan mengubah titik akhir atau zona instans RDS for PostgreSQL sumber saat tugas sedang berjalan. Melakukannya akan menyebabkan tugas gagal.
Untuk melakukan alih bencana primary/secondary pada instans sumber, aktifkan fitur Logical Replication Slot Failover terlebih dahulu. Lihat Logical Replication Slot Failover.
PostgreSQL yang dikelola sendiri:
Atur
max_wal_sendersdanmax_replication_slotske nilai yang lebih besar daripada jumlah slot replikasi yang sudah ada ditambah jumlah instans DTS yang akan dibuat.Alih bencana primary/secondary pada database PostgreSQL yang dikelola sendiri menyebabkan tugas gagal.
Google Cloud SQL for PostgreSQL:
Atur parameter Database Account ke akun dengan izin
cloudsqlsuperuser. Saat memilih objek untuk disinkronkan, pilih hanya objek yang dikelola oleh akun tersebut, atau berikan izin OWNER pada objek tersebut kepada akun tersebut.CatatanAkun dengan izin
cloudsqlsuperusertidak dapat mengelola data yang dimiliki oleh akun lain dengan izin yang sama.
Konsistensi data
Evaluasi dampak terhadap kinerja database sumber dan tujuan sebelum memulai tugas. Jalankan tugas selama jam sepi.
Selama sinkronisasi data penuh, operasi INSERT konkuren menyebabkan fragmentasi tabel di database tujuan, sehingga ruang tabel tujuan mungkin lebih besar daripada sumber setelah sinkronisasi penuh selesai.
Inkonsistensi data terjadi jika data dari sumber selain DTS ditulis ke database tujuan selama sinkronisasi. Jika Anda menggunakan Data Management (DMS) untuk melakukan operasi DDL Online sementara sumber lain menulis ke tujuan, kehilangan data mungkin terjadi.
Jika Anda hanya menggunakan DTS untuk menulis data ke tujuan, gunakan DMS untuk melakukan operasi DDL Online pada tabel sumber selama sinkronisasi. Lihat Ubah skema tanpa mengunci tabel.
Pemulihan tugas
Jika tugas DTS gagal, dukungan teknis DTS mencoba memulihkannya dalam waktu 8 jam. Selama pemulihan, tugas mungkin dimulai ulang dan parameter tugas (bukan parameter database) mungkin dimodifikasi. Untuk detail parameter yang mungkin berubah, lihat bagian Modifikasi parameter instans di Modifikasi parameter instans DTS.
Konfigurasi tugas sinkronisasi data
Langkah 1: Buka Tugas Sinkronisasi Data
Masuk ke Konsol Data Management (DMS).
Di bilah navigasi atas, klik Data + AI.
Di panel navigasi kiri, pilih DTS (DTS) > Data Synchronization.
CatatanNavigasi dapat berbeda tergantung mode dan tata letak Konsol DMS. Lihat Mode simple dan Sesuaikan tata letak dan gaya Konsol DMS.
Anda juga dapat langsung membuka halaman Tugas Sinkronisasi Data di Konsol DTS baru.
Langkah 2: Buat tugas
Di sisi kanan Data Synchronization Tasks, pilih wilayah tempat instans sinkronisasi akan berada.
CatatanDi Konsol DTS baru, pilih wilayah di bilah navigasi atas.
Klik Create Task.
(Opsional) Klik New Configuration Page di pojok kanan atas.
CatatanLewati langkah ini jika tombol Back to Previous Version yang ditampilkan.
Gunakan halaman konfigurasi baru — beberapa parameter berbeda antar versi.
Langkah 3: Konfigurasi database sumber dan tujuan
Konfigurasikan parameter berikut:
Nama tugas
| Parameter | Deskripsi |
|---|---|
| Task Name | Nama untuk tugas DTS. DTS menghasilkan nama default — tentukan nama deskriptif agar mudah mengidentifikasi tugas. Nama tidak perlu unik. |
Database sumber
| Parameter | Deskripsi |
|---|---|
| Select a DMS database instance. | Pilih database terdaftar yang sudah ada untuk mengisi pengaturan secara otomatis, atau biarkan kosong dan konfigurasi secara manual. Untuk mendaftarkan database, lihat Daftarkan instans database Alibaba Cloud atau Daftarkan database yang dihosting di layanan cloud pihak ketiga atau database yang dikelola sendiri. Untuk pendaftaran di Konsol DTS, lihat Kelola koneksi database. |
| Database Type | Pilih PostgreSQL. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah instans RDS for PostgreSQL sumber. |
| Replicate Data Across Alibaba Cloud Accounts | Pilih No untuk menggunakan database di akun saat ini. |
| Instance ID | ID instans RDS for PostgreSQL sumber. |
| Database Name | Nama database sumber yang berisi data untuk disinkronkan. |
| Database Account | Akun istimewa untuk instans sumber. |
| Database Password | Password untuk akun database. |
| Encryption | Pilih Non-encrypted untuk koneksi standar, atau SSL-encrypted untuk koneksi terenkripsi. Untuk SSL, unggah CA Certificate, dan opsional Client Certificate serta Private Key of Client Certificate, lalu atur Private Key Password of Client Certificate. Lihat Enkripsi SSL. |
Database tujuan
| Parameter | Deskripsi |
|---|---|
| Select a DMS database instance. | Pilih database terdaftar yang sudah ada untuk mengisi pengaturan secara otomatis, atau konfigurasi secara manual. |
| Database Type | Pilih AnalyticDB for PostgreSQL. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah instans AnalyticDB for PostgreSQL tujuan. |
| Instance ID | ID instans AnalyticDB for PostgreSQL tujuan. |
| Database Name | Nama database tujuan. |
| Database Account | Akun untuk instans tujuan, dengan izin baca dan tulis. |
| Database Password | Password untuk akun database. |
Langkah 4: Uji konektivitas
Klik Test Connectivity and Proceed.
DTS secara otomatis menambahkan blok CIDR servernya ke daftar putih instans database Alibaba Cloud dan aturan grup keamanan database yang dihosting di 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.
Menambahkan blok CIDR DTS ke daftar putih atau grup keamanan membawa risiko keamanan. Sebelum melanjutkan, ambil tindakan pencegahan seperti memberlakukan kredensial kuat, membatasi port yang terbuka, mengautentikasi panggilan API, mengaudit aturan daftar putih secara berkala, dan menggunakan Express Connect, VPN Gateway, atau Smart Access Gateway untuk menghubungkan database ke DTS.
Langkah 5: Konfigurasi objek sinkronisasi
Pilih jenis sinkronisasi
Pilih jenis sinkronisasi yang sesuai dengan kasus penggunaan Anda:
| Jenis sinkronisasi | Kapan memilih |
|---|---|
| Schema Synchronization | Pilih agar DTS membuat tabel tujuan secara otomatis. Diperlukan jika Anda juga memilih Full Data Synchronization. |
| Full Data Synchronization | Pilih untuk menyalin semua data yang ada dari sumber ke tujuan sebelum sinkronisasi inkremental dimulai. Diperlukan untuk penyiapan awal. |
| Incremental Data Synchronization | Dipilih secara default. Menjaga tujuan tetap sinkron dengan perubahan berkelanjutan di sumber menggunakan replikasi logis. Diperlukan untuk sinkronisasi kontinu. |
Untuk sebagian besar pengaturan, pilih ketiganya: sinkronisasi skema membuat tabel, sinkronisasi data penuh menyalin data historis, dan sinkronisasi data inkremental menjaga tujuan tetap mutakhir.
Konfigurasi objek dan penanganan konflik
| Parameter | Deskripsi |
|---|---|
| DDL and DML Operations to Be Synchronized | Operasi SQL yang akan disinkronkan. Untuk mengonfigurasi per tabel, klik kanan objek di Selected Objects dan pilih operasinya. Lihat Operasi SQL yang mendukung sinkronisasi inkremental. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors: gagal dalam pemeriksaan awal jika tabel tujuan memiliki nama yang sama dengan tabel sumber. Gunakan pemetaan nama objek untuk menyelesaikan konflik. Ignore Errors and Proceed: melewati pemeriksaan konflik nama. Selama sinkronisasi penuh, catatan tujuan yang sudah ada dengan kunci primer atau unik yang cocok dipertahankan; selama sinkronisasi inkremental, catatan tersebut ditimpa. Jika skema berbeda, inisialisasi mungkin sebagian gagal. |
| Capitalization of Object Names in Destination Instance | Cara DTS menangani kapitalisasi nama database, tabel, dan kolom di tujuan. Default adalah DTS default policy. Lihat Tentukan kapitalisasi nama objek di instans tujuan. |
| Source Objects | Pilih objek dari bagian ini dan klik |
| Selected Objects | Klik kanan tabel untuk mengganti namanya, mengatur filter data, atau mengonfigurasi operasi SQL per tabel. Untuk mengganti nama beberapa objek sekaligus, klik Batch Edit. Lihat Pemetaan nama objek dan Atur kondisi filter. |
Mengganti nama objek menggunakan pemetaan nama objek dapat menyebabkan objek dependen gagal disinkronkan.
Konfigurasi pengaturan lanjutan
Klik Next: Advanced Settings dan konfigurasikan parameter berikut:
| Parameter | Deskripsi |
|---|---|
| Dedicated Cluster for Task Scheduling | DTS menggunakan kluster bersama secara default. Beli kluster khusus untuk stabilitas lebih tinggi. Lihat Apa itu kluster khusus DTS. |
| Retry Time for Failed Connections | Berapa lama DTS mencoba kembali koneksi yang gagal setelah tugas dimulai. Rentang: 10–1440 menit. Default: 720 menit. Atur lebih dari 30 menit. Jika DTS terhubung kembali dalam periode ini, tugas dilanjutkan; jika tidak, tugas gagal. Nilai terpendek di antara tugas yang berbagi sumber atau tujuan yang sama yang berlaku. |
| Retry Time for Other Issues | Berapa lama DTS mencoba kembali operasi DDL atau DML yang gagal. Rentang: 1–1440 menit. Default: 10 menit. Atur lebih dari 10 menit, dan pertahankan lebih rendah daripada Retry Time for Failed Connections. |
| Enable Throttling for Full Data Synchronization | Membatasi beban baca/tulis pada database sumber dan tujuan selama sinkronisasi penuh. Konfigurasi Queries per second (QPS) to the source database, RPS of Full Data Migration, dan Data migration speed for full migration (MB/s). Hanya tersedia jika Full Data Synchronization dipilih. |
| Enable Throttling for Incremental Data Synchronization | Membatasi beban selama sinkronisasi inkremental. Konfigurasi RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s). |
| Environment Tag | Tag opsional untuk mengidentifikasi instans DTS berdasarkan lingkungan. |
| Configure ETL | Atur ke Yes untuk mengaktifkan pemrosesan ekstrak, transformasi, dan muat (ETL) serta masukkan pernyataan transformasi data. Atur ke No untuk melewati. Lihat Apa itu ETL? dan Konfigurasi ETL dalam tugas migrasi data atau sinkronisasi data. |
| Monitoring and Alerting | Atur ke Yes untuk menerima notifikasi ketika tugas gagal atau latensi sinkronisasi melebihi ambang batas. Konfigurasi ambang batas peringatan dan pengaturan notifikasi. Lihat Konfigurasi pemantauan dan peringatan. |
Konfigurasi verifikasi data
Klik Next Step: Data Verification untuk menyiapkan verifikasi data. Lihat Konfigurasi tugas verifikasi data.
(Opsional) Konfigurasi bidang database dan tabel
Klik Next: Configure Database and Table Fields untuk mengatur struktur tabel di instans AnalyticDB for PostgreSQL tujuan:
| Parameter | Deskripsi |
|---|---|
| Type | Jenis tabel di instans tujuan. |
| Primary Key Column | Kolom kunci primer atau kolom-kolom tersebut. Beberapa kolom membentuk kunci primer komposit. |
| Distribution Key | Kunci distribusi untuk tabel. Harus merupakan salah satu kolom kunci primer. Lihat Kelola tabel dan Definisikan distribusi tabel. |
Langkah ini hanya tersedia jika Schema Synchronization dipilih. Atur Definition Status ke All untuk melihat dan memodifikasi semua tabel.
Langkah 6: Simpan pengaturan dan jalankan pemeriksaan awal
Klik Next: Save Task Settings and Precheck.
Untuk melihat pratinjau parameter OpenAPI untuk konfigurasi tugas ini, arahkan kursor ke tombol dan klik Preview OpenAPI parameters.
DTS menjalankan pemeriksaan awal sebelum memulai tugas. Tugas hanya dimulai setelah pemeriksaan awal berhasil.
Jika pemeriksaan awal gagal, klik View Details di sebelah setiap item yang gagal, selesaikan masalahnya, lalu klik Precheck Again.
Jika peringatan dipicu: jika tidak dapat diabaikan, selesaikan masalah dan jalankan ulang pemeriksaan awal. Jika dapat diabaikan, klik Confirm Alert Details, lalu Ignore, lalu OK, lalu Precheck Again. Mengabaikan peringatan dapat menyebabkan inkonsistensi data.
Langkah 7: Beli dan mulai instans
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Di halaman pembelian, konfigurasikan hal berikut:
| Parameter | Deskripsi |
|---|---|
| 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. Lepaskan instans saat tidak lagi diperlukan untuk menghentikan biaya. |
| Resource Group Settings | Kelompok sumber daya untuk instans. Default: default resource group. Lihat Apa itu Resource Management? |
| Instance Class | Tingkat kecepatan sinkronisasi. Lihat Kelas instans untuk instansi sinkronisasi data. |
| Subscription Duration | Hanya tersedia untuk metode penagihan subscription. Opsi: 1–9 bulan, 1 tahun, 2 tahun, 3 tahun, atau 5 tahun. |
Baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms, lalu klik Buy and Start. Di dialog konfirmasi, klik OK.
Tugas muncul di daftar tugas. Anda dapat memantau progresnya di sana.
Langkah selanjutnya
Logical Replication Slot Failover — aktifkan ini di instans RDS sumber jika Anda berencana melakukan alih bencana primary/secondary.
Pemetaan nama objek — ganti nama objek di tujuan tanpa mengubah objek sumber.
Modifikasi parameter instans DTS — sesuaikan parameter tugas setelah tugas dimulai.
Konfigurasi tugas verifikasi data — verifikasi konsistensi data antara sumber dan tujuan.