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:
| Strategi | Jenis migrasi | Kapan digunakan | Downtime |
|---|---|---|---|
| Migrasi penuh | Migrasi Skema + Migrasi Data Penuh | Migrasi satu kali; tidak ada penulisan data baru selama migrasi | Diperlukan |
| Migrasi online | Migrasi Skema + Migrasi Data Penuh + Migrasi Data Inkremental | Migrasi tanpa downtime; sumber terus menerima penulisan | Tidak 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_levelpada kluster PolarDB for PostgreSQL sumber harus diatur kelogical. 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, danpublic.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 migrasi | Biaya konfigurasi koneksi | Biaya transfer data |
|---|---|---|
| Migrasi skema + migrasi data penuh | Gratis | Gratis |
| Migrasi data inkremental | Dikenai biaya. Lihat Ikhtisar penagihan. | — |
Operasi SQL yang didukung untuk migrasi inkremental
| Jenis | Operasi |
|---|---|
| DML | INSERT, UPDATE, DELETE |
| DDL | ADD COLUMN, DROP COLUMN |
Migrasi data dari PolarDB for PostgreSQL ke SelectDB
Langkah 1: Buka halaman Data Migration
Gunakan salah satu metode berikut:
Konsol DTS
Login ke Konsol DTS.
Di panel navigasi kiri, klik Data Migration.
Di pojok kiri atas, pilih wilayah tempat instans migrasi berada.
Konsol DMS
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.
Login ke Konsol DMS.
Di bilah navigasi atas, arahkan pointer ke .
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.
| Bagian | Parameter | Deskripsi |
|---|---|---|
| — | Task Name | Nama untuk tugas DTS. DTS menghasilkan nama secara otomatis. Tentukan nama deskriptif agar mudah diidentifikasi — nama tidak perlu unik. |
| Source Database | Select Existing Connection | Jika 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 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 (contoh ini menggunakan instans di akun saat ini). | |
| Instance ID | Pilih ID kluster PolarDB for PostgreSQL sumber. | |
| Database Name | Masukkan nama database yang berisi objek yang akan dimigrasikan. | |
| Database Account | Masukkan akun database. Lihat Prasyarat untuk izin yang diperlukan. | |
| Database Password | Masukkan kata sandi untuk akun database. | |
| Destination Database | Select Existing Connection | Jika Anda memiliki instans database yang terdaftar di DTS, pilih dari daftar drop-down. Jika tidak, konfigurasikan parameter di bawah ini. |
| 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 (contoh ini menggunakan instans di akun saat ini). | |
| Instance ID | Pilih ID instans SelectDB tujuan. | |
| Database Account | Masukkan akun database. Lihat Prasyarat untuk izin yang diperlukan. | |
| Database Password | Masukkan 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.
| Parameter | Deskripsi |
|---|---|
| Migration Types | Pilih 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 Instance | Mengontrol 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 Objects | Pilih objek yang akan dimigrasikan. Klik ikon |
| 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 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. |
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_countharus 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.
| Parameter | Deskripsi |
|---|---|
| Dedicated Cluster for Task Scheduling | Secara default, DTS menggunakan kluster bersama. Beli kluster khusus untuk meningkatkan stabilitas tugas migrasi. Lihat What is a DTS dedicated cluster. |
| Retry Time for Failed Connections | Durasi 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 Issues | Durasi 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 Migration | Membatasi 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 Migration | Membatasi 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 ETL | Mengaktifkan 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 Alerting | Mengonfigurasi 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
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Di halaman Purchase Instance, konfigurasikan kelas instans:
Bagian Parameter Deskripsi New Instance Class Resource Group Kelompok sumber daya untuk instans migrasi. Default: default resource group. Lihat Apa itu Resource Management?. Instance Class Kelas instans menentukan kecepatan migrasi. Lihat Instance classes of data migration instances. Baca dan centang kotak Data Transmission Service (Pay-as-you-go) Service Terms.
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.
| Kategori | Tipe PolarDB for PostgreSQL | Tipe 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 |
| 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 |
| Geometris | 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 |
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 defaultVARCHAR(65533). Jika panjang hasil melebihi 65.533, data dikonversi keSTRING.
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.
| Kolom | Tipe data | Default | Nilai |
|---|---|---|---|
_is_deleted | Int | 0 | INSERT atau UPDATE: 0. DELETE: 1. |
_version | Bigint | 0 | Migrasi penuh: 0. Migrasi inkremental: timestamp dalam detik dari log biner sumber. |
_record_id | Bigint | 0 | Migrasi 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.