All Products
Search
Document Center

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

Last Updated:Mar 28, 2026

Gunakan Data Transmission Service (DTS) untuk memigrasikan data dari kluster PolarDB for PostgreSQL ke instans SelectDB guna analitik data volume besar.

Pilih strategi migrasi

DTS mendukung tiga jenis migrasi yang dapat Anda kombinasikan sesuai kebutuhan:

StrategiJenis migrasiKapan digunakanDowntime
Migrasi penuhMigrasi Skema + Migrasi Data PenuhMigrasi satu kali; tidak ada penulisan data baru selama migrasiDiperlukan
Migrasi onlineMigrasi Skema + Migrasi Data Penuh + Migrasi Data InkrementalMigrasi tanpa downtime; sumber terus menerima penulisanTidak ada

Untuk sebagian besar beban kerja produksi, gunakan strategi migrasi online. Jika Anda hanya memilih migrasi penuh, hentikan semua penulisan ke database sumber sebelum memulai — jika tidak, akan terjadi ketidakkonsistenan data antara sumber dan tujuan.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Instans SelectDB tujuan dengan storage space lebih besar daripada storage space yang digunakan oleh kluster PolarDB for PostgreSQL sumber. Untuk instruksi penyiapan, lihat Buat instans.

  • Akun database dengan hak istimewa pada kluster PolarDB for PostgreSQL sumber (akun harus merupakan Pemilik database). Untuk instruksi penyiapan, lihat Buat akun database dan Pengelolaan database.

  • Akun database pada instans SelectDB tujuan dengan izin berikut: Usage_priv, Select_priv, Load_priv, Alter_priv, Create_priv, dan Drop_priv. Untuk instruksi penyiapan, lihat Pengelolaan izin klaster dan Pengelolaan izin dasar.

  • Untuk Incremental Data Migration: parameter wal_level pada kluster PolarDB for PostgreSQL sumber harus diatur ke logical. Verifikasi dan perbarui parameter ini di pengaturan parameter klaster.

  • Untuk alih bencana primary/secondary selama migrasi: fitur failover slot replikasi logis harus diaktifkan pada kluster sumber. Lihat Failover slot replikasi logis.

Jika klaster PolarDB for PostgreSQL sumber tidak mendukung fitur failover slot replikasi logis (misalnya, saat Database Engine diatur ke PostgreSQL 14) dan Anda memicu alih bencana primary/secondary, tugas migrasi akan gagal dan tidak dapat dipulihkan.

Batasan

Database sumber

  • Tabel yang akan dimigrasikan harus memiliki primary key atau indeks UNIQUE NOT NULL. Bergantung pada tabel Anda:

    • Jika semua tabel memiliki primary key atau indeks unik non-null: pastikan bidang tabel bersifat unik; jika tidak, data duplikat mungkin ada di database tujuan.

    • Jika beberapa tabel tidak memiliki primary key maupun indeks unik non-null: saat mengonfigurasi instans, pilih Schema Migration di bawah Migration Types, lalu pada langkah Configurations for Databases, Tables, and Columns, atur Engine ke duplicate untuk tabel-tabel tersebut. Jika tidak, instans migrasi mungkin gagal atau data hilang.

  • Selama migrasi skema dan migrasi data penuh, jangan menjalankan operasi DDL yang mengubah skema database atau tabel — tugas migrasi akan gagal.

  • Selama migrasi data inkremental, satu perubahan data yang melebihi 256 MB menyebabkan instans migrasi gagal secara permanen. Anda harus mengonfigurasi ulang instans migrasi.

  • Transaksi berdurasi panjang selama migrasi inkremental dapat menyebabkan akumulasi log write-ahead logging (WAL), yang berpotensi menghabiskan disk space pada database sumber.

Database tujuan

  • Tabel dalam instans SelectDB tujuan harus menggunakan engine Unique atau duplicate.

  • Nama database dan tabel harus dimulai dengan huruf. Gunakan fitur pemetaan nama objek untuk mengganti nama objek yang tidak dimulai dengan huruf, atau objek dengan nama yang mengandung karakter Tionghoa.

  • Jangan menambahkan node backend (BE) ke instans SelectDB selama migrasi — tugas akan gagal. Restart instans migrasi untuk melanjutkan.

  • Jangan membuat klaster dalam instans SelectDB tujuan selama migrasi — tugas akan gagal. Restart instans migrasi untuk melanjutkan.

Perilaku migrasi

  • Satu instans migrasi hanya dapat memigrasikan satu database. Untuk memigrasikan beberapa database, buat instans migrasi terpisah untuk setiap database.

  • DTS tidak mendukung tabel ekstensi TimescaleDB atau tabel dengan pewarisan lintas-skema.

  • DTS tidak memvalidasi metadata seperti sequences. Verifikasi validitas metadata secara manual setelah migrasi.

  • Saat memigrasikan tabel partisi, sertakan baik tabel induk maupun semua partisi anak sebagai objek migrasi. Tabel induk dari tabel partisi PostgreSQL tidak menyimpan data secara langsung — semua data berada di partisi anak. Partisi anak yang tidak disertakan menyebabkan ketidakkonsistenan data.

  • Dalam skenario penggabungan multi-tabel (beberapa tabel sumber dimigrasikan ke satu tabel tujuan), skema semua tabel sumber harus identik.

  • Anda tidak dapat menjalankan operasi DDL yang memodifikasi beberapa kolom sekaligus atau memodifikasi tabel yang sama secara berturut-turut.

  • DTS membuat tabel sementara berikut di database sumber selama migrasi inkremental. Jangan menghapusnya — penghapusan menyebabkan tugas gagal. DTS menghapusnya secara otomatis setelah instans migrasi 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.

Perilaku engine Unique

Jika tabel tujuan menggunakan engine Unique, semua unique key di tabel tujuan harus ada di tabel sumber dan disertakan sebagai objek migrasi — jika tidak, ketidakkonsistenan data mungkin terjadi.

Perilaku engine Duplicate

Jika tabel tujuan menggunakan engine Duplicate:

  • DTS mengonversi pernyataan UPDATE dan DELETE menjadi pernyataan INSERT.

  • Baris duplikat mungkin muncul di tujuan dalam kasus-kasus berikut: terjadi retry, instans migrasi direstart, atau dua atau lebih operasi DML dilakukan pada baris yang sama setelah migrasi dimulai. Gunakan kolom tambahan (_is_deleted, _version, dan _record_id) untuk mengidentifikasi dan menghapus duplikat.

Persyaratan migrasi data inkremental

Sebelum menulis data ke tabel yang termasuk dalam migrasi inkremental, jalankan perintah berikut pada setiap tabel di database sumber:

ALTER TABLE schema.table REPLICA IDENTITY FULL;

Ganti schema dan table dengan nama skema dan nama tabel yang sebenarnya. Jalankan perintah ini selama jam sepi dan jangan mengunci tabel — penguncian dapat menyebabkan deadlock.

Jika Anda melewati item pemeriksaan awal terkait, DTS akan menjalankan perintah ini secara otomatis selama inisialisasi instans — saat instans pertama kali dijalankan, atau saat granularitas objek migrasi diatur ke Skema dan tabel baru dibuat atau dibangun ulang menggunakan perintah RENAME.

Pengelolaan slot replikasi

DTS membuat slot replikasi dengan awalan dts_sync_ di database sumber untuk mereplikasi data inkremental. Slot tersebut menyimpan log inkremental hingga 15 menit.

Saat tugas migrasi gagal atau instans migrasi dirilis, DTS mencoba membersihkan slot replikasi secara otomatis. Pembersihan manual diperlukan dalam kasus-kasus berikut:

  • Kata sandi akun database sumber diubah selama migrasi.

  • Alamat IP DTS dihapus dari daftar putih selama migrasi.

  • Terjadi failover primary/secondary — login ke database sekunder untuk melakukan pembersihan.

Slot replikasi yang tidak dibersihkan akan terakumulasi dan mengonsumsi disk space, yang dapat menyebabkan database sumber tidak tersedia.

Penagihan

Jenis migrasiBiaya konfigurasi koneksiBiaya transfer data
Migrasi skema + migrasi data penuhGratisGratis
Migrasi data inkrementalDikenai biaya. Lihat Ikhtisar penagihan.

Operasi SQL yang didukung untuk migrasi inkremental

JenisOperasi
DMLINSERT, UPDATE, DELETE
DDLADD COLUMN, DROP COLUMN

Migrasi data dari PolarDB for PostgreSQL ke SelectDB

Langkah 1: Buka halaman Data Migration

Gunakan salah satu metode berikut:

Konsol DTS

  1. Login ke Konsol DTS.

  2. Di panel navigasi kiri, klik Data Migration.

  3. Di pojok kiri atas, pilih wilayah tempat instans migrasi berada.

Konsol DMS

Catatan

Operasi aktual mungkin berbeda tergantung mode dan tata letak Konsol DMS. Untuk informasi lebih lanjut, 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 > DTS (DTS) > Data Migration.

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

Langkah 2: Buat tugas

Klik Create Task untuk membuka halaman konfigurasi tugas.

Langkah 3: Konfigurasi database sumber dan tujuan

Konfigurasikan parameter yang dijelaskan dalam tabel berikut.

BagianParameterDeskripsi
Task NameNama untuk tugas DTS. DTS menghasilkan nama secara otomatis. Tentukan nama deskriptif agar mudah diidentifikasi — nama tidak perlu unik.
Source DatabaseSelect Existing ConnectionJika Anda memiliki instans database yang terdaftar di DTS, pilih dari daftar drop-down — DTS akan mengisi parameter lainnya secara otomatis. Lihat Manage database connections. Jika tidak, konfigurasikan parameter di bawah ini.
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 (contoh ini menggunakan instans di akun saat ini).
Instance IDPilih ID kluster PolarDB for PostgreSQL sumber.
Database NameMasukkan nama database yang berisi objek yang akan dimigrasikan.
Database AccountMasukkan akun database. Lihat Prasyarat untuk izin yang diperlukan.
Database PasswordMasukkan kata sandi untuk akun database.
Destination DatabaseSelect Existing ConnectionJika Anda memiliki instans database yang terdaftar di DTS, pilih dari daftar drop-down. Jika tidak, konfigurasikan parameter di bawah ini.
Database TypePilih SelectDB.
Access MethodPilih Alibaba Cloud Instance.
Instance RegionPilih wilayah tempat instans SelectDB tujuan berada.
Replicate Data Across Alibaba Cloud AccountsPilih No (contoh ini menggunakan instans di akun saat ini).
Instance IDPilih ID instans SelectDB tujuan.
Database AccountMasukkan akun database. Lihat Prasyarat untuk izin yang diperlukan.
Database PasswordMasukkan kata sandi untuk akun database.

Setelah menyelesaikan konfigurasi, klik Test Connectivity and Proceed di bagian bawah halaman.

Alamat IP server DTS harus ditambahkan ke pengaturan keamanan database sumber dan tujuan. DTS dapat menambahkan alamat IP ini secara otomatis, atau Anda dapat menambahkannya secara manual. Lihat Add DTS server IP addresses to a whitelist.

Langkah 4: Konfigurasi objek migrasi

Di halaman Configure Objects, atur parameter berikut.

ParameterDeskripsi
Migration TypesPilih jenis migrasi berdasarkan strategi Anda: - Full Data Migration (tidak toleransi downtime): Pilih Schema Migration dan Full Data Migration. Hentikan semua penulisan ke sumber sebelum memulai. - Online migration (tanpa downtime): Pilih Schema Migration, Full Data Migration, dan Incremental Data Migration.
Processing Mode of Conflicting Tables- Precheck and Report Errors: DTS memeriksa tabel dengan nama yang sama di tujuan. Jika ditemukan duplikat, pemeriksaan awal gagal. Untuk mengatasi, ganti nama tabel tujuan menggunakan fitur object name mapping. - Ignore Errors and Proceed: DTS melewati pemeriksaan nama duplikat.
Peringatan

Hal ini dapat menyebabkan ketidakkonsistenan data — jika skema cocok, catatan sumber akan menimpa catatan tujuan dengan primary key yang sama; jika skema berbeda, migrasi mungkin gagal atau menghasilkan data yang tidak lengkap. Gunakan dengan hati-hati.

Capitalization of Object Names in Destination InstanceMengontrol kapitalisasi nama database, tabel, dan kolom di tujuan. Nilai default adalah DTS default policy. Lihat Specify the capitalization of object names in the destination instance.
Source ObjectsPilih objek yang akan dimigrasikan. Klik ikon 向右小箭头 untuk memindahkannya ke Selected Objects. Granularitas objek migrasi dapat berupa skema, tabel, atau kolom.
Selected Objects- Untuk memetakan objek ke nama atau tujuan berbeda, klik kanan objek dan pilih opsi pemetaan. Lihat Map object names. - Untuk menghapus objek, klik objek tersebut lalu klik ikon image. - Untuk mengatur parameter bucket_count untuk tabel (tersedia saat Schema Migration dipilih dan granularitas objek migrasi adalah tabel): klik kanan tabel, atur Enable Parameter Settings ke Yesalert notification settings, masukkan nilai, lalu klik OK. - Untuk memfilter baris berdasarkan kondisi SQL, klik kanan tabel dan tentukan kondisinya. Lihat Specify filter conditions. - Untuk memilih operasi SQL mana yang akan dimigrasikan secara inkremental, klik kanan objek dan pilih operasinya.
Penting
  • Jika Anda tidak memilih Schema Migration, buat tabel tujuan secara manual dengan model data Unique atau Duplicate sebelum memulai migrasi. Lihat Pemetaan tipe data, Kolom tambahan, dan Model data.

  • Nilai parameter bucket_count harus berupa bilangan bulat positif. Nilai default adalah auto.

  • Jika Anda menggunakan pemetaan nama objek untuk mengganti nama objek, objek lain yang bergantung padanya mungkin gagal dimigrasikan.

  • Pemetaan nama objek berlaku untuk database, tabel, dan kolom. Jika nama mengandung karakter Tionghoa, ganti namanya menjadi nama ASCII saja — jika tidak, tugas mungkin gagal.

Langkah 5: Konfigurasi pengaturan lanjutan

Klik Next: Advanced Settings dan konfigurasikan parameter berikut.

ParameterDeskripsi
Dedicated Cluster for Task SchedulingSecara default, DTS menggunakan kluster bersama. Beli kluster khusus untuk meningkatkan stabilitas tugas migrasi. Lihat What is a DTS dedicated cluster.
Retry Time for Failed ConnectionsDurasi DTS mencoba kembali setelah kegagalan koneksi. Rentang valid: 10–1.440 menit. Default: 720 menit. Atur ke nilai lebih dari 30. Jika DTS terhubung kembali dalam jendela percobaan ulang, tugas dilanjutkan; jika tidak, tugas gagal. Catatan: Jika beberapa tugas berbagi database sumber atau tujuan yang sama, waktu percobaan ulang yang dikonfigurasi terakhir akan berlaku. DTS menagih instans selama percobaan ulang.
Retry Time for Other IssuesDurasi DTS mencoba kembali setelah kegagalan non-koneksi (seperti error DDL atau DML). Rentang valid: 1–1.440 menit. Default: 10 menit. Atur ke nilai lebih dari 10. Harus kurang dari Retry Time for Failed Connections.
Enable Throttling for Full Data MigrationMembatasi beban baca/tulis pada database sumber dan tujuan selama migrasi penuh. Konfigurasikan Queries per second (QPS) to the source database, RPS of Full Data Migration, dan Data migration speed for full migration (MB/s). Tersedia hanya saat Full Data Migration dipilih.
Enable Throttling for Incremental Data MigrationMembatasi beban selama migrasi inkremental. Konfigurasikan RPS of Incremental Data Migration dan Data migration speed for incremental migration (MB/s). Tersedia hanya saat Incremental Data Migration dipilih.
Environment Tag(Opsional) Beri label lingkungan pada instans.
Configure ETLMengaktifkan fitur extract, transform, and load (ETL). Pilih Yes untuk memasukkan pernyataan pemrosesan data. Lihat Configure ETL in a data migration or data synchronization task.
Monitoring and AlertingMengonfigurasi peringatan untuk kegagalan tugas atau latensi yang melebihi ambang batas. Pilih Yes untuk mengonfigurasi ambang batas peringatan dan pengaturan notifikasi. Lihat Configure monitoring and alerting.

Langkah 6: Konfigurasi bidang database dan tabel (opsional)

Klik Next: Configure Database and Table Fields untuk mengatur Primary Key Column, Distribution Key, dan Engine untuk tabel tujuan.

Langkah ini tersedia hanya saat Schema Migration dipilih. Untuk melihat semua tabel, atur Definition Status ke All.
Primary Key Column dapat berupa composite primary key. Pilih satu atau beberapa kolom dari Primary Key Column untuk digunakan sebagai Distribution Key.
Untuk tabel tanpa primary key atau Kendala UNIK, atur Engine ke duplicate — jika tidak, migrasi mungkin gagal atau data hilang.

Langkah 7: Jalankan pemeriksaan awal

Klik Next: Save Task Settings and Precheck.

Untuk melihat pratinjau parameter API untuk mengonfigurasi tugas ini, arahkan kursor ke Next: Save Task Settings and Precheck lalu klik Preview OpenAPI parameters sebelum melanjutkan.

DTS menjalankan pemeriksaan awal sebelum memulai migrasi. Jika pemeriksaan awal gagal:

  • Untuk item yang gagal: klik View Details, analisis hasilnya, selesaikan masalahnya, lalu klik Precheck Again.

  • Untuk item peringatan: jika peringatan dapat diabaikan, klik Confirm Alert Details > Ignore > OK > Precheck Again. Perhatikan bahwa mengabaikan peringatan dapat menyebabkan ketidakkonsistenan data.

Langkah 8: Beli instans

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

  2. Di halaman Purchase Instance, konfigurasikan kelas instans:

    BagianParameterDeskripsi
    New Instance ClassResource GroupKelompok sumber daya untuk instans migrasi. Default: default resource group. Lihat Apa itu Resource Management?.
    Instance ClassKelas instans menentukan kecepatan migrasi. Lihat Instance classes of data migration instances.
  3. Baca dan centang kotak Data Transmission Service (Pay-as-you-go) Service Terms.

  4. Klik Buy and Start, lalu klik OK di dialog konfirmasi.

Monitor progres di halaman Data Migration:

  • Hanya migrasi penuh: tugas berhenti otomatis saat selesai. Status menunjukkan Completed.

  • Termasuk migrasi inkremental: tugas berjalan terus-menerus dan tidak pernah berhenti otomatis. Status menunjukkan Running.

Selama migrasi data penuh, DTS mengonsumsi sumber daya baca dan tulis pada database sumber dan tujuan, yang meningkatkan beban database. Jalankan migrasi selama jam sepi ketika Beban CPU pada kedua database di bawah 30%.

Pemetaan tipe data

Tipe data dikonversi saat memigrasikan dari PolarDB for PostgreSQL ke SelectDB. Tinjau pemetaan sebelum migrasi, terutama untuk tipe dengan potensi perbedaan presisi atau semantik.

KategoriTipe PolarDB for PostgreSQLTipe SelectDB
NumerikSMALLINTSMALLINT
INTEGERINT
BIGINTBIGINT
DECIMALDECIMAL
NUMERICDECIMAL
REALDOUBLE
DOUBLEDOUBLE
SMALLSERIALSMALLINT
SERIALINT
BIGSERIALBIGINT
MoneterMONEYSTRING
KarakterCHAR(n), VARCHAR(n)VARCHAR
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
GeometrisPOINT, LINE, LSEG, BOX, PATH, POLYGON, CIRCLESTRING
Alamat jaringanCIDR, INET, MACADDR, MACADDR8STRING
Pencarian teksTSVECTORSTRING
XMLXMLSTRING
JSONJSONJSON

Catatan konversi utama:

  • CHAR(n) dan VARCHAR(n): Dikonversi ke VARCHAR(4*n) untuk mencegah kehilangan data dari karakter multi-byte. Jika tidak ada panjang yang ditentukan, SelectDB menggunakan default VARCHAR(65533). Jika panjang hasil melebihi 65.533, data dikonversi ke STRING.

Kolom tambahan

DTS secara otomatis menambahkan kolom berikut ke tabel tujuan yang menggunakan engine Duplicate. Kolom-kolom ini memungkinkan Anda mengidentifikasi dan menghapus catatan duplikat.

KolomTipe dataDefaultNilai
_is_deletedInt0INSERT atau UPDATE: 0. DELETE: 1.
_versionBigint0Migrasi penuh: 0. Migrasi inkremental: timestamp dalam detik dari log biner sumber.
_record_idBigint0Migrasi penuh: 0. Migrasi inkremental: ID catatan dari entri log inkremental (unik dan auto-incrementing).

Catatan penggunaan

Latensi migrasi inkremental

DTS menggunakan kebijakan sinkronisasi batch untuk mengurangi beban pada tujuan. Secara default, setiap objek sinkronisasi ditulis paling banyak sekali setiap 5 detik, sehingga latensi sinkronisasi normal biasanya dalam 10 detik.

Untuk mengurangi latensi, sesuaikan parameter selectdb.reservoir.timeout.milliseconds dari instans migrasi di Konsol DTS. Rentang valid adalah 1.000–10.000 milidetik.

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

Pemulihan kegagalan instans

Jika instans migrasi gagal, tim dukungan DTS akan mencoba pemulihan dalam waktu 8 jam. Selama pemulihan, instans mungkin direstart atau parameternya disesuaikan (hanya parameter instans DTS yang dimodifikasi — parameter database tidak diubah). Untuk daftar parameter yang mungkin dimodifikasi, lihat Modify instance parameters.

Migrasi di jam sepi

Jalankan migrasi selama jam sepi ketika Beban CPU pada database sumber dan tujuan di bawah 30%. Hal ini mengurangi risiko degradasi kinerja pada beban kerja produksi.