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_levelpada kluster PolarDB for PostgreSQL sumber kelogical. Untuk informasi selengkapnya, lihat Setel parameter kluster.
Penagihan
| Jenis sinkronisasi | Biaya |
|---|---|
| Sinkronisasi skema dan sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Untuk informasi selengkapnya, lihat Ikhtisar penagihan. |
Operasi SQL yang didukung
| Jenis operasi | Pernyataan SQL |
|---|---|
| DML | INSERT, UPDATE, DELETE |
| DDL | ADD COLUMN, DROP COLUMN |
Izin yang diperlukan
| Database | Izin yang diperlukan | Cara memberikan izin |
|---|---|---|
| Kluster PolarDB for PostgreSQL sumber | Akun istimewa yang memiliki database yang akan disinkronkan | Buat akun database dan Manajemen Database |
| Instans ApsaraDB for SelectDB tujuan | Izin 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:
| Kebutuhan | Model yang direkomendasikan | Catatan |
|---|---|---|
| Catatan konsisten tanpa duplikasi | Model Unique Key | Semua 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 tinggi | Model Duplicate key | Data 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_countyang 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.

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
Login ke Konsol DTS.
Di panel navigasi kiri, klik Data Synchronization.
Di pojok kiri atas halaman, pilih wilayah tempat tugas sinkronisasi berada.
Konsol DMS
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.
Login ke Konsol DMS.
Di bilah navigasi atas, arahkan pointer ke Data + AI lalu pilih DTS (DTS) > Data Synchronization.
Dari daftar drop-down di sebelah kanan Data Synchronization Tasks, pilih wilayah tempat instans sinkronisasi berada.
Langkah 2: Konfigurasi database sumber dan tujuan
Klik Create Task untuk membuka halaman konfigurasi tugas.
Konfigurasikan database sumber dan tujuan menggunakan parameter berikut.
Kategori Parameter Deskripsi Tidak ada Task Name Nama tugas. DTS secara otomatis menghasilkan nama. Tentukan nama deskriptif agar tugas mudah diidentifikasi. Nama unik tidak diperlukan. Source Database Select Existing Connection Jika 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 Type Pilih PolarDB for PostgreSQL. Access Method Pilih Alibaba Cloud Instance. Instance Region Pilih wilayah tempat kluster PolarDB for PostgreSQL sumber berada. Replicate Data Across Alibaba Cloud Accounts Pilih No jika database sumber dan tujuan berada dalam Akun Alibaba Cloud yang sama. Instance ID Pilih ID kluster PolarDB for PostgreSQL sumber. Database Name Masukkan nama database yang berisi objek yang akan disinkronkan. Database Account Masukkan akun database. Untuk persyaratan izin, lihat Izin yang diperlukan. Database Password Masukkan kata sandi untuk akun database. Destination Database Select Existing Connection Jika 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 Type Pilih SelectDB. Access Method Pilih Alibaba Cloud Instance. Instance Region Pilih wilayah tempat instans SelectDB tujuan berada. Replicate Data Across Alibaba Cloud Accounts Pilih No jika database sumber dan tujuan berada dalam Akun Alibaba Cloud yang sama. Instance ID Pilih ID instans SelectDB tujuan. Database Account Masukkan akun database. Untuk persyaratan izin, lihat Izin yang diperlukan. Database Password Masukkan kata sandi untuk akun database. 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
Pada langkah Configure Objects, konfigurasikan parameter sinkronisasi.
Parameter Deskripsi Synchronization Types Secara 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. PentingSaat 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 Tables Precheck 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. CatatanJika 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.
PeringatanOpsi 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 Instance Kebijakan 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 Objects Pilih 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
. - Untuk menyetel parameter bucket_countuntuk 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.CatatanMengganti 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.
Klik Next: Advanced Settings dan konfigurasikan parameter berikut.
Parameter Deskripsi Dedicated Cluster for Task Scheduling Secara 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 Connections Rentang 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. CatatanJika 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 Issues Rentang 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 Synchronization Batasi 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 Synchronization Batasi sinkronisasi data inkremental dengan mengonfigurasi RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s). Environment Tag Tag opsional untuk mengidentifikasi instans. Configure ETL Tentukan 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 Alerting Tentukan 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. (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
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.
Jika pemeriksaan awal gagal, klik View Details di sebelah setiap item yang gagal, atasi masalahnya, lalu jalankan kembali pemeriksaan awal.
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
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Di halaman buy, konfigurasikan parameter berikut.
Parameter Deskripsi Billing Method Subscription: 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 Settings Kelompok sumber daya untuk instans sinkronisasi. Default: default resource group. Untuk informasi selengkapnya, lihat Apa itu Resource Management? Instance Class Tingkat kecepatan sinkronisasi. Pilih berdasarkan kebutuhan bisnis Anda. Untuk informasi selengkapnya, lihat Kelas instans 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.
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.
| Kategori | Tipe data PolarDB for PostgreSQL | Tipe data SelectDB |
|---|---|---|
| Numerik | SMALLINT | SMALLINT |
| INTEGER | INT | |
| BIGINT | BIGINT | |
| DECIMAL | DECIMAL | |
| NUMERIC | DECIMAL | |
| REAL | DOUBLE | |
| DOUBLE | DOUBLE | |
| SMALLSERIAL | SMALLINT | |
| SERIAL | INT | |
| BIGSERIAL | BIGINT | |
| Moneter | MONEY | STRING |
| Karakter | CHAR(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. |
| TEXT | STRING | |
| Biner | BYTEA | STRING |
| Tanggal dan waktu | TIMESTAMP [(P)] [WITHOUT TIME ZONE] | DATETIMEV2 |
| TIMESTAMP [(P)] WITH TIME ZONE | DATETIMEV2 | |
| DATE | DATEV2 | |
| TIME [(P)] [WITHOUT TIME ZONE] | VARCHAR(50) | |
| TIME [(P)] WITH TIME ZONE | VARCHAR(50) | |
| INTERVAL [FIELDS] [(P)] | STRING | |
| Boolean | BOOLEAN | BOOLEAN |
| Geometrik | POINT, LINE, LSEG, BOX, PATH, POLYGON, CIRCLE | STRING |
| Alamat jaringan | CIDR, INET, MACADDR, MACADDR8 | STRING |
| Pencarian teks | TSVECTOR | STRING |
| XML | XML | STRING |
| JSON | JSON | JSON |
Informasi kolom tambahan
Untuk tabel yang menggunakan model Duplicate key, DTS secara otomatis menambahkan atau mengharuskan kolom berikut di tabel tujuan.
| Nama kolom | Tipe data | Nilai default | Deskripsi |
|---|---|---|---|
_is_deleted | Int | 0 | Bendera penghapusan. Insert: 0. Update: 0. Delete: 1. |
_version | Bigint | 0 | Sinkronisasi data penuh: 0. Sinkronisasi data inkremental: timestamp yang sesuai dalam detik dari log biner database sumber. |
_record_id | Bigint | 0 | Sinkronisasi data penuh: 0. Sinkronisasi data inkremental: ID catatan dari log inkremental, yang secara unik mengidentifikasi entri log. Nilainya unik dan bertambah. |