All Products
Search
Document Center

Data Transmission Service:Sinkronisasi data dari PolarDB for PostgreSQL ke SelectDB

Last Updated:Mar 29, 2026

Gunakan Data Transmission Service (DTS) untuk menyinkronkan data dari kluster PolarDB for PostgreSQL ke instans ApsaraDB for SelectDB guna analitik data skala besar. DTS mendukung sinkronisasi skema, sinkronisasi data penuh, dan sinkronisasi data inkremental berkelanjutan.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Memiliki instans ApsaraDB for SelectDB tujuan dengan ruang disk lebih besar daripada jumlah yang digunakan oleh kluster PolarDB for PostgreSQL sumber. Untuk informasi selengkapnya, lihat Buat instans.

  • Menyetel parameter wal_level pada kluster PolarDB for PostgreSQL sumber ke logical. Untuk informasi selengkapnya, lihat Setel parameter kluster.

Penagihan

Jenis sinkronisasiBiaya
Sinkronisasi skema dan sinkronisasi data penuhGratis
Sinkronisasi data inkrementalDikenai biaya. Untuk informasi selengkapnya, lihat Ikhtisar penagihan.

Operasi SQL yang didukung

Jenis operasiPernyataan SQL
DMLINSERT, UPDATE, DELETE
DDLADD COLUMN, DROP COLUMN

Izin yang diperlukan

DatabaseIzin yang diperlukanCara memberikan izin
Kluster PolarDB for PostgreSQL sumberAkun istimewa yang memiliki database yang akan disinkronkanBuat akun database dan Manajemen Database
Instans ApsaraDB for SelectDB tujuanIzin akses kluster (Usage_priv) dan izin akses database (Select_priv, Load_priv, Alter_priv, Create_priv, dan Drop_priv)Manajemen Izin Kluster dan Manajemen Izin Dasar

Batasan

Database sumber

  • Semua tabel yang akan disinkronkan harus memiliki primary key atau indeks unik non-null. Jika bidang tabel tidak unik, data duplikat dapat muncul di database tujuan.

  • Untuk tabel tanpa primary key atau indeks unik non-null: pilih Schema Synchronization untuk Synchronization Types dan duplicate untuk Engine pada langkah Configurations for Databases, Tables, and Columns.

  • Transaksi berdurasi panjang di database sumber dapat menyebabkan akumulasi log write-ahead logging (WAL) sebelum transaksi tersebut dikomit, yang berpotensi menghabiskan ruang disk di database sumber.

  • Kluster PolarDB for PostgreSQL harus mendukung dan telah mengaktifkan Logical Replication Slot Failover. Jika kluster menggunakan PostgreSQL 14 yang tidak mendukung Logical Replication Slot Failover, alih bencana high-availability (HA) dapat menyebabkan instans sinkronisasi gagal secara permanen dan memerlukan konfigurasi ulang penuh.

  • Jika satu perubahan inkremental melebihi 256 MB, instans sinkronisasi dapat gagal secara permanen. Konfigurasi ulang instans sinkronisasi untuk memulihkannya.

  • Jangan menjalankan operasi DDL yang mengubah skema selama sinkronisasi skema awal atau sinkronisasi data penuh awal. DTS melakukan kueri ke database sumber selama sinkronisasi data penuh awal, yang membuat kunci metadata yang dapat memblokir operasi DDL.

Database tujuan

Persyaratan model data SelectDB

DTS hanya dapat menyinkronkan data ke tabel yang menggunakan model Unique Key atau model Duplicate key di ApsaraDB for SelectDB. Pilih model berdasarkan kebutuhan Anda:

KebutuhanModel yang direkomendasikanCatatan
Catatan konsisten tanpa duplikasiModel Unique KeySemua kunci unik pada tabel tujuan harus ada di tabel sumber dan objek sinkronisasi. Kunci yang hilang menyebabkan ketidakkonsistenan data.
Ingesti hanya tambah (append-only) atau throughput tinggiModel Duplicate keyData duplikat dapat muncul jika terjadi pengulangan (retry) atau dua atau lebih operasi DML dijalankan pada baris yang sama setelah instans sinkronisasi dimulai. Gunakan kolom _is_deleted, _version, dan _record_id untuk menghapus duplikat. DTS mengonversi pernyataan UPDATE dan DELETE menjadi pernyataan INSERT untuk tabel model Duplicate key.

Batasan objek dan penamaan

  • Hanya parameter bucket_count yang dapat ditentukan di bagian Selected Objects. Nilainya harus berupa bilangan bulat positif. Nilai default: auto.

  • ApsaraDB for SelectDB hanya mendukung nama database dan tabel yang diawali huruf. Gunakan fitur pemetaan nama objek untuk mengganti nama objek yang tidak diawali huruf.

  • Nama objek (database, tabel, atau kolom) yang mengandung karakter Tionghoa harus diganti namanya menggunakan fitur pemetaan nama objek.

  • Satu instans sinkronisasi hanya dapat menyinkronkan satu database. Untuk menyinkronkan beberapa database, konfigurasikan instans sinkronisasi terpisah untuk setiap database.

Lingkup sinkronisasi dan batasan DDL

  • Sinkronisasi tabel ekstensi TimescaleDB dan tabel dengan pewarisan lintas-skema tidak didukung.

  • Anda tidak dapat memodifikasi operasi DDL pada beberapa kolom sekaligus, atau memodifikasi operasi DDL pada tabel yang sama secara berurutan.

  • Dalam skenario penggabungan multi-tabel (menyinkronkan beberapa tabel sumber ke satu tabel tujuan), skema semua tabel sumber harus identik. Jika tidak, ketidakkonsistenan data atau kegagalan tugas dapat terjadi.

Tabel partisi

Saat menyinkronkan tabel partisi, sertakan baik tabel induk maupun semua partisi anaknya sebagai objek sinkronisasi. Tabel induk dari tabel partisi PostgreSQL tidak menyimpan data secara langsung—semua data berada di partisi anak. Mengabaikan partisi menyebabkan ketidakkonsistenan data.

Persyaratan REPLICA IDENTITY

Jalankan perintah berikut pada tabel sebelum menulis data dalam tiga skenario ini: saat instans pertama kali dijalankan; saat Anda memilih objek pada level skema dan tabel baru dibuat atau dibangun ulang menggunakan RENAME; serta saat Anda menggunakan fitur untuk memodifikasi objek sinkronisasi.

ALTER TABLE schema.table REPLICA IDENTITY FULL;

Ganti schema dan table dengan nama skema dan nama tabel yang sebenarnya. Jalankan perintah ini pada jam sepi. Jangan lakukan operasi penguncian tabel selama perintah ini berjalan. Jika Anda melewati pemeriksaan awal terkait, DTS akan menjalankan perintah ini secara otomatis selama inisialisasi instans.

Operasi yang menyebabkan kegagalan tugas

Operasi berikut menyebabkan tugas sinkronisasi gagal. Mulai ulang instans sinkronisasi untuk melanjutkan:

  • Menambahkan node backend ke database ApsaraDB for SelectDB tujuan selama sinkronisasi

  • Membuat kluster di instans ApsaraDB for SelectDB tujuan selama sinkronisasi

Tabel sementara

DTS membuat tabel temporary berikut di database sumber untuk mendukung sinkronisasi inkremental. Jangan menghapusnya selama sinkronisasi—tabel ini akan dihapus secara otomatis setelah instans DTS dirilis:

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, dan public.aliyun_dts_instance.

Slot replikasi

DTS membuat slot replikasi dengan awalan dts_sync_ di database sumber. Slot ini menyimpan log inkremental selama 15 menit terakhir. Saat tugas sinkronisasi gagal atau instans dirilis, DTS mencoba membersihkan slot tersebut secara otomatis.

Jika Anda mengubah kata sandi akun database sumber atau menghapus daftar putih alamat IP DTS selama sinkronisasi, slot replikasi tidak dapat dibersihkan secara otomatis. Bersihkan slot replikasi secara manual untuk mencegah ruang disk habis. Jika terjadi alih bencana primer/sekunder, login ke database sekunder untuk melakukan pembersihan.

Replication slot query information

Incremental synchronization latency

DTS menggunakan kebijakan sinkronisasi batch untuk mengurangi beban pada tujuan. Secara default, DTS menulis data paling sering sekali setiap 5 detik per objek sinkronisasi, sehingga menghasilkan latensi sinkronisasi normal hingga 10 detik. Untuk mengurangi latensi ini, ubah parameter selectdb.reservoir.timeout.milliseconds pada instans DTS di konsol. Rentang nilai yang valid adalah 1.000 hingga 10.000 milidetik.

Waktu batching yang lebih rendah meningkatkan frekuensi penulisan, yang dapat meningkatkan beban dan waktu respons penulisan tujuan, dan pada gilirannya meningkatkan latensi sinkronisasi DTS. Sesuaikan waktu batching berdasarkan beban tujuan.

Catatan lainnya

  • DTS tidak memeriksa validitas metadata seperti sequence. Verifikasi validitas metadata secara manual sebelum dan sesudah sinkronisasi.

  • Lakukan sinkronisasi data penuh saat beban CPU baik database sumber maupun tujuan berada di bawah 30%.

  • Jika sebuah instans gagal, tim dukungan DTS akan mencoba memulihkannya dalam waktu 8 jam. Selama pemulihan, hanya parameter instans DTS yang dapat dimodifikasi—parameter database tidak diubah. Untuk parameter yang dapat dimodifikasi, lihat Modifikasi parameter instans.

Buat tugas sinkronisasi

Langkah 1: Buka halaman Sinkronisasi Data

Gunakan salah satu konsol berikut.

Konsol DTS

  1. Login ke Konsol DTS.

  2. Di panel navigasi kiri, klik Data Synchronization.

  3. Di pojok kiri atas halaman, pilih wilayah tempat tugas sinkronisasi berada.

Konsol DMS

Catatan

Operasi aktual dapat berbeda tergantung mode dan tata letak konsol DMS. Untuk informasi selengkapnya, lihat Simple mode dan Sesuaikan tata letak dan gaya konsol DMS.

  1. Login ke Konsol DMS.

  2. Di bilah navigasi atas, arahkan pointer ke Data + AI lalu pilih DTS (DTS) > Data Synchronization.

  3. Dari daftar drop-down di sebelah kanan Data Synchronization Tasks, pilih wilayah tempat instans sinkronisasi berada.

Langkah 2: Konfigurasi database sumber dan tujuan

  1. Klik Create Task untuk membuka halaman konfigurasi tugas.

  2. Konfigurasikan database sumber dan tujuan menggunakan parameter berikut.

    KategoriParameterDeskripsi
    Tidak adaTask NameNama tugas. DTS secara otomatis menghasilkan nama. Tentukan nama deskriptif agar tugas mudah diidentifikasi. Nama unik tidak diperlukan.
    Source DatabaseSelect Existing ConnectionJika Anda telah mendaftarkan instans database ke DTS, pilih dari daftar drop-down. DTS akan mengisi parameter database secara otomatis. Jika tidak, konfigurasikan parameter berikut secara manual.
    Database TypePilih PolarDB for PostgreSQL.
    Access MethodPilih Alibaba Cloud Instance.
    Instance RegionPilih wilayah tempat kluster PolarDB for PostgreSQL sumber berada.
    Replicate Data Across Alibaba Cloud AccountsPilih No jika database sumber dan tujuan berada dalam Akun Alibaba Cloud yang sama.
    Instance IDPilih ID kluster PolarDB for PostgreSQL sumber.
    Database NameMasukkan nama database yang berisi objek yang akan disinkronkan.
    Database AccountMasukkan akun database. Untuk persyaratan izin, lihat Izin yang diperlukan.
    Database PasswordMasukkan kata sandi untuk akun database.
    Destination DatabaseSelect Existing ConnectionJika Anda telah mendaftarkan instans database ke DTS, pilih dari daftar drop-down. DTS akan mengisi parameter database secara otomatis. Jika tidak, konfigurasikan parameter berikut secara manual.
    Database TypePilih SelectDB.
    Access MethodPilih Alibaba Cloud Instance.
    Instance RegionPilih wilayah tempat instans SelectDB tujuan berada.
    Replicate Data Across Alibaba Cloud AccountsPilih No jika database sumber dan tujuan berada dalam Akun Alibaba Cloud yang sama.
    Instance IDPilih ID instans SelectDB tujuan.
    Database AccountMasukkan akun database. Untuk persyaratan izin, lihat Izin yang diperlukan.
    Database PasswordMasukkan kata sandi untuk akun database.
  3. Klik Test Connectivity and Proceed.

    Pastikan blok CIDR server DTS telah ditambahkan ke pengaturan keamanan database sumber dan tujuan. Untuk informasi selengkapnya, lihat Tambahkan alamat IP server DTS ke daftar putih.

Langkah 3: Konfigurasi objek sinkronisasi

  1. Pada langkah Configure Objects, konfigurasikan parameter sinkronisasi.

    ParameterDeskripsi
    Synchronization TypesSecara default, Incremental Data Synchronization dipilih. Pilih juga Schema Synchronization dan Full Data Synchronization. Setelah pemeriksaan awal selesai, DTS menyinkronkan data historis sebagai dasar untuk sinkronisasi inkremental berkelanjutan.
    Penting

    Saat menyinkronkan dari PolarDB for PostgreSQL ke SelectDB, tipe data dikonversi. Jika Anda tidak memilih Schema Synchronization, buat tabel tujuan secara manual menggunakan model Unique atau Duplicate yang sesuai. Untuk informasi selengkapnya, lihat Pemetaan tipe data, Informasi kolom tambahan, dan Model data.

    Processing Mode of Conflicting TablesPrecheck and Report Errors: DTS memeriksa keberadaan tabel dengan nama yang sama di database tujuan. Jika tabel duplikat ada, pemeriksaan awal gagal dan tugas tidak dimulai.
    Catatan

    Jika Anda tidak dapat menghapus atau mengganti nama tabel duplikat tersebut, gunakan fitur pemetaan nama objek. Untuk informasi selengkapnya, lihat Pemetaan nama skema, tabel, dan kolom. Ignore Errors and Proceed: DTS melewati pemeriksaan nama tabel duplikat.

    Peringatan

    Opsi ini dapat menyebabkan ketidakkonsistenan data. Jika skema tabel sama dan suatu catatan memiliki primary key atau unique key yang cocok, catatan sumber akan menimpa catatan tujuan. Jika skema berbeda, inisialisasi dapat gagal atau hanya beberapa kolom yang disinkronkan.

    Capitalization of Object Names in Destination InstanceKebijakan kapitalisasi untuk nama database, tabel, dan kolom di instans tujuan. Default: DTS default policy. Untuk informasi selengkapnya, lihat Tentukan kapitalisasi nama objek di instans tujuan.
    Source ObjectsPilih satu atau beberapa objek lalu klik ikon 向右 untuk memindahkannya ke Selected Objects. Objek dapat dipilih pada level skema, tabel, atau kolom.
    Selected Objects- Untuk mengganti nama objek tujuan atau menentukan objek penerima, klik kanan objek tersebut di bagian Selected Objects. Untuk informasi selengkapnya, lihat Pemetaan nama objek. - Untuk menghapus objek yang dipilih, klik objek tersebut lalu klik ikon image. - Untuk menyetel parameter bucket_count untuk tabel (hanya tersedia saat Schema Synchronization dipilih dan objek dipilih pada level tabel): klik kanan tabel, atur Enable Parameter Settings ke Yesalert notification settings, masukkan nilainya, lalu klik OK.
    Catatan

    Mengganti nama objek menggunakan pemetaan nama objek dapat menyebabkan objek dependen gagal disinkronkan. Untuk memfilter data dengan kondisi WHERE, klik kanan tabel dan tentukan kondisinya. Untuk informasi selengkapnya, lihat Tentukan kondisi filter. Untuk memilih operasi SQL untuk sinkronisasi inkremental, klik kanan objek dan pilih operasinya.

  2. Klik Next: Advanced Settings dan konfigurasikan parameter berikut.

    ParameterDeskripsi
    Dedicated Cluster for Task SchedulingSecara default, DTS menjadwalkan tugas ke kluster bersama. Untuk meningkatkan stabilitas, beli kluster khusus. Untuk informasi selengkapnya, lihat Apa itu kluster khusus DTS.
    Retry Time for Failed ConnectionsRentang waktu untuk mencoba koneksi yang gagal. Nilai valid: 10–1440 menit. Default: 720 menit. Atur lebih dari 30 menit. Jika DTS terhubung kembali dalam jendela ini, tugas dilanjutkan. Jika tidak, tugas gagal.
    Catatan

    Jika beberapa tugas berbagi database sumber atau tujuan yang sama dan memiliki jendela retry berbeda, jendela terpendek yang berlaku. DTS mengenakan biaya untuk instans selama proses retry.

    Retry Time for Other IssuesRentang waktu untuk mencoba ulang operasi DDL atau DML yang gagal. Nilai valid: 1–1440 menit. Default: 10 menit. Atur lebih dari 10 menit. Nilai ini harus lebih kecil dari Retry Time for Failed Connections.
    Enable Throttling for Full Data SynchronizationBatasi sinkronisasi data penuh untuk mengurangi beban pada sumber dan tujuan. Konfigurasikan Queries per second (QPS) to the source database, RPS of Full Data Migration, dan Data migration speed for full migration (MB/s). Hanya tersedia saat Full Data Synchronization dipilih.
    Enable Throttling for Incremental Data SynchronizationBatasi sinkronisasi data inkremental dengan mengonfigurasi RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s).
    Environment TagTag opsional untuk mengidentifikasi instans.
    Configure ETLTentukan apakah akan mengaktifkan fitur ekstrak, transformasi, dan muat (ETL). Pilih Yes untuk memasukkan pernyataan pemrosesan data di editor kode. Untuk informasi selengkapnya, lihat Konfigurasi ETL dalam tugas migrasi data atau sinkronisasi data. Pilih No untuk melewati konfigurasi ETL.
    Monitoring and AlertingTentukan apakah akan mengonfigurasi peringatan. Pilih Yes untuk mengonfigurasi ambang batas peringatan dan pengaturan notifikasi. Untuk informasi selengkapnya, lihat bagian Konfigurasi pemantauan dan peringatan saat membuat tugas DTS.
  3. (Opsional) Klik Next: Configure Database and Table Fields untuk menyetel Primary Key Column, Distribution Key, dan Engine untuk tabel tujuan.

    - Langkah ini hanya tersedia saat Schema Synchronization dipilih untuk Synchronization Types. Atur Definition Status ke All untuk melakukan modifikasi. - Anda dapat memilih beberapa kolom sebagai primary key komposit. Setidaknya satu kolom dalam Primary Key Column juga harus dipilih sebagai Distribution Key. - Untuk tabel tanpa primary key atau Kendala UNIK, atur Engine ke duplicate. Jika tidak, sinkronisasi dapat gagal atau data hilang.

Langkah 4: Jalankan pemeriksaan awal

  1. Klik Next: Save Task Settings and Precheck. DTS menjalankan pemeriksaan awal sebelum tugas sinkronisasi dapat dimulai. Tugas hanya dimulai setelah pemeriksaan awal berhasil.

    Untuk melihat parameter API untuk konfigurasi ini, arahkan pointer ke Next: Save Task Settings and Precheck lalu klik Preview OpenAPI parameters.
  2. Jika pemeriksaan awal gagal, klik View Details di sebelah setiap item yang gagal, atasi masalahnya, lalu jalankan kembali pemeriksaan awal.

  3. Jika peringatan dipicu:

    • Jika peringatan tidak dapat diabaikan, klik View Details, perbaiki masalahnya, lalu jalankan kembali pemeriksaan awal.

    • Jika peringatan dapat diabaikan, klik Confirm Alert Details, klik Ignore di kotak dialog View Details, klik OK, lalu klik Precheck Again.

    Mengabaikan peringatan dapat menyebabkan ketidakkonsistenan data dan mengekspos bisnis Anda terhadap risiko.

Langkah 5: Beli instans

  1. Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.

  2. Di halaman buy, konfigurasikan parameter berikut.

    ParameterDeskripsi
    Billing MethodSubscription: Bayar di muka untuk durasi tetap. Lebih hemat biaya untuk penggunaan jangka panjang. Pay-as-you-go: Ditagih per jam. Cocok untuk penggunaan jangka pendek. Rilis instans saat tidak lagi diperlukan untuk mengurangi biaya.
    Resource Group SettingsKelompok sumber daya untuk instans sinkronisasi. Default: default resource group. Untuk informasi selengkapnya, lihat Apa itu Resource Management?
    Instance ClassTingkat kecepatan sinkronisasi. Pilih berdasarkan kebutuhan bisnis Anda. Untuk informasi selengkapnya, lihat Kelas instans instansi sinkronisasi data.
    Subscription DurationHanya tersedia untuk metode penagihan subscription. Opsi: 1–9 bulan, 1 tahun, 2 tahun, 3 tahun, atau 5 tahun.
  3. Baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms.

  4. Klik Buy and Start. Di kotak dialog yang muncul, klik OK.

Tugas muncul di daftar tugas. Pantau perkembangannya dari sana.

Pemetaan tipe data

Tabel berikut menunjukkan cara tipe data PolarDB for PostgreSQL dipetakan ke tipe data SelectDB.

KategoriTipe data PolarDB for PostgreSQLTipe data SelectDB
NumerikSMALLINTSMALLINT
INTEGERINT
BIGINTBIGINT
DECIMALDECIMAL
NUMERICDECIMAL
REALDOUBLE
DOUBLEDOUBLE
SMALLSERIALSMALLINT
SERIALINT
BIGSERIALBIGINT
MoneterMONEYSTRING
KarakterCHAR(n), VARCHAR(n)VARCHAR.
Penting

Untuk mencegah kehilangan data, CHAR(n) dan VARCHAR(n) dikonversi ke VARCHAR(4\*n). Jika panjang tidak ditentukan, nilai default SelectDB VARCHAR(65533) digunakan. Jika panjang melebihi 65533, data dikonversi ke STRING.

TEXTSTRING
BinerBYTEASTRING
Tanggal dan waktuTIMESTAMP [(P)] [WITHOUT TIME ZONE]DATETIMEV2
TIMESTAMP [(P)] WITH TIME ZONEDATETIMEV2
DATEDATEV2
TIME [(P)] [WITHOUT TIME ZONE]VARCHAR(50)
TIME [(P)] WITH TIME ZONEVARCHAR(50)
INTERVAL [FIELDS] [(P)]STRING
BooleanBOOLEANBOOLEAN
GeometrikPOINT, LINE, LSEG, BOX, PATH, POLYGON, CIRCLESTRING
Alamat jaringanCIDR, INET, MACADDR, MACADDR8STRING
Pencarian teksTSVECTORSTRING
XMLXMLSTRING
JSONJSONJSON

Informasi kolom tambahan

Untuk tabel yang menggunakan model Duplicate key, DTS secara otomatis menambahkan atau mengharuskan kolom berikut di tabel tujuan.

Nama kolomTipe dataNilai defaultDeskripsi
_is_deletedInt0Bendera penghapusan. Insert: 0. Update: 0. Delete: 1.
_versionBigint0Sinkronisasi data penuh: 0. Sinkronisasi data inkremental: timestamp yang sesuai dalam detik dari log biner database sumber.
_record_idBigint0Sinkronisasi data penuh: 0. Sinkronisasi data inkremental: ID catatan dari log inkremental, yang secara unik mengidentifikasi entri log. Nilainya unik dan bertambah.