Data Transmission Service (DTS) memungkinkan Anda menyinkronkan data dari satu instans ApsaraDB RDS for PostgreSQL ke instans lainnya secara real time. Gunakan alur kerja ini jika Anda memerlukan instans standby untuk pemulihan bencana, replika baca saja untuk pemisahan beban baca/tulis, migrasi database lintas akun, atau instans analitik terpisah yang tetap selaras dengan produksi.
DTS mendukung tiga fase sinkronisasi—Sinkronisasi skema, migrasi data penuh, dan Sinkronisasi data inkremental—serta empat topologi satu arah: satu-ke-satu, satu-ke-banyak, cascade, dan banyak-ke-satu.
Prasyarat
Sebelum memulai, pastikan Anda telah:
-
Membuat kedua instans ApsaraDB RDS for PostgreSQL (sumber dan tujuan). Lihat Create an ApsaraDB RDS for PostgreSQL instance.
-
Versi instans tujuan sama dengan atau lebih baru daripada versi sumber. Versi tujuan yang lebih lama dapat menyebabkan error kompatibilitas.
-
Ruang penyimpanan kosong yang cukup pada instans tujuan—harus melebihi total ukuran data pada instans sumber.
-
Parameter
wal_levelpada instans sumber diatur kelogical. -
Retensi log WAL dikonfigurasi sebagai berikut:
-
Hanya Sinkronisasi data inkremental: pertahankan log WAL lebih dari 24 jam.
-
Sinkronisasi data penuh + Sinkronisasi data inkremental: pertahankan log WAL selama minimal tujuh hari. Setelah sinkronisasi data penuh selesai, Anda dapat mengurangi periode retensi menjadi lebih dari 24 jam.
-
Jika log WAL tidak dipertahankan cukup lama, DTS mungkin gagal membacanya, menyebabkan tugas gagal dan berpotensi mengakibatkan inkonsistensi atau kehilangan data. Pastikan Anda mengatur periode retensi log WAL sesuai persyaratan di atas. Jika tidak, keandalan atau kinerja layanan dalam Service Level Agreement (SLA) DTS mungkin tidak dijamin.
Untuk kombinasi versi sumber dan tujuan yang didukung, lihat Overview of data synchronization scenarios.
Penagihan
| Synchronization type | Fee |
|---|---|
| Schema synchronization and full data synchronization | Free |
| Incremental data synchronization | Charged. See Billing overview. |
Batasan
Tinjau batasan berikut sebelum memulai.
Persyaratan database sumber
-
Tabel harus memiliki PRIMARY KEY atau UNIQUE constraint, dengan semua field unik. Tanpa constraint ini, database tujuan mungkin berisi catatan duplikat.
Jika Anda membuat tugas sinkronisasi tanpa memilih Schema Synchronization, tabel tujuan harus memiliki PRIMARY KEY atau constraint NOT NULL UNIQUE yang sama dengan tabel sumber. Jika tidak, catatan duplikat mungkin muncul.
-
Jika Anda memilih tabel sebagai objek sinkronisasi dan ingin mengganti nama tabel atau kolom di tujuan, satu tugas mendukung maksimal 5.000 tabel. Untuk lebih dari 5.000 tabel, bagi beban kerja ke beberapa tugas atau lakukan sinkronisasi di tingkat database, bukan tingkat tabel.
-
DTS tidak dapat menyinkronkan temporary tables, internal triggers, atau prosedur dan fungsi internal tertentu yang ditulis dalam C. DTS dapat menyinkronkan parameter kustom tipe COMPOSITE, ENUM, dan RANGE. Tabel harus memiliki constraint PRIMARY KEY, FOREIGN KEY, UNIQUE, atau CHECK.
-
DTS membuat replication slot dengan awalan
dts_sync_pada database sumber, memberi DTS akses ke log inkremental dari 15 menit terakhir. Replication slot yang menumpuk dapat menghabiskan ruang disk. Atur alarm penggunaan disk pada instans sumber saat logical replication aktif. Perilaku pembersihan replication slot:
-
Setelah instans DTS dilepas, slot tersebut dihapus secara otomatis—kecuali jika Anda mengubah password database sumber atau menghapus alamat IP DTS dari daftar putih IP, dalam hal ini Anda harus menghapus slot tersebut secara manual.
-
Jika terjadi switchover primary/secondary pada sumber, login ke database secondary dan hapus slot tersebut secara manual.
-
-
DTS membuat tabel temporary berikut di database sumber untuk menangkap pernyataan DDL, skema tabel inkremental, dan informasi heartbeat. Jangan menghapusnya selama sinkronisasi berjalan—tabel-tabel ini akan dihapus secara otomatis saat instans DTS dilepas:
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 -
DTS menambahkan tabel heartbeat bernama
dts_postgres_heartbeatke database sumber untuk melacak latensi sinkronisasi secara akurat. -
Untuk melakukan switchover primary/secondary pada instans ApsaraDB RDS for PostgreSQL sumber tanpa mengganggu sinkronisasi, aktifkan fitur Logical Replication Slot Failover terlebih dahulu. Lihat Logical Replication Slot Failover.
-
Jika satu perubahan data inkremental melebihi 256 MB, instans sinkronisasi yang sedang berjalan akan gagal dan tidak dapat dipulihkan—Anda harus mengonfigurasi ulang tugas tersebut.
-
Selama Sinkronisasi skema dan migrasi data penuh, jangan jalankan pernyataan DDL yang mengubah skema database atau tabel. Tugas akan gagal jika Anda melakukannya.
-
Jika database sumber memiliki transaksi jangka panjang selama Sinkronisasi data inkremental, log WAL yang dihasilkan sebelum transaksi tersebut dikomit dapat menumpuk dan menghabiskan ruang disk.
-
Jika dilakukan peningkatan versi utama pada database sumber saat instans sinkronisasi sedang berjalan, instans tersebut akan gagal dan tidak dapat dipulihkan—Anda harus mengonfigurasi ulang tugas tersebut.
Persyaratan lainnya
-
Satu tugas hanya menyinkronkan data dari satu database. Untuk menyinkronkan beberapa database, buat tugas terpisah untuk masing-masing.
-
DTS tidak dapat menyinkronkan tabel yang memiliki hubungan inheritance lintas skema.
-
Jika Anda memilih skema sebagai objek sinkronisasi, jalankan pernyataan berikut sebelum menulis data ke tabel baru atau berganti nama dalam skema tersebut:
ALTER TABLE schema.table REPLICA IDENTITY FULL;Ganti
schemadantabledengan nama aktual. Jalankan pernyataan ini selama jam sepi dan hindari mengunci tabel—menguncinya saat menjalankan pernyataan ini dapat menyebabkan deadlock. -
DTS tidak memvalidasi metadata seperti sequences. Periksa validitas sequence secara manual.
-
Sebelum mengalihkan workload ke database tujuan, perbarui nilai awal sequences di tujuan. Setelah dialihkan, sequence yang baru ditulis tidak akan dilanjutkan dari nilai maksimum di sumber.
-
Ketika akun tujuan adalah akun istimewa atau superuser dan tabel yang disinkronkan berisi foreign keys, triggers, atau event triggers, DTS sementara mengatur
session_replication_rolekereplicapada tingkat sesi. Jika akun tujuan tidak memiliki izin yang diperlukan, atur parameter ini kereplicasecara manual. Operasi CASCADE UPDATE atau DELETE pada sumber selama periode ini dapat menyebabkan inkonsistensi data. Setelah tugas dilepas, atur kembali parameter keorigin. -
Menulis data dari sumber lain ke database tujuan selama sinkronisasi berjalan menyebabkan inkonsistensi data. Misalnya, menjalankan pernyataan DDL online dari DMS sambil sumber lain menulis ke database tujuan dapat menyebabkan kehilangan data.
-
Jika tugas gagal, dukungan teknis DTS akan mencoba memulihkannya dalam waktu 8 jam. Selama pemulihan, tugas mungkin dimulai ulang dan parameter tugas (bukan parameter database) mungkin dimodifikasi.
Persyaratan untuk jenis database sumber tertentu
ApsaraDB RDS for PostgreSQL
Jangan mengubah endpoint atau zona instans sumber selama sinkronisasi berjalan. Hal ini akan menyebabkan tugas gagal.
Database PostgreSQL yang dikelola sendiri sebagai sumber
Nilai max_wal_senders dan max_replication_slots masing-masing harus lebih besar dari jumlah total replication slot yang sedang digunakan ditambah jumlah instans DTS yang direncanakan untuk database ini.
Sumber Cloud SQL for PostgreSQL (Google Cloud)
Atur Database Account ke akun dengan izin cloudsqlsuperuser. Saat memilih objek untuk disinkronkan, pilih hanya objek yang diizinkan dikelola oleh akun tersebut, atau berikan izin OWNER pada objek tersebut kepada akun tersebut.
Akun dengan izin cloudsqlsuperuser tidak dapat mengelola data yang dimiliki oleh akun lain dengan izin yang sama.
Objek yang didukung
| Object type | Details |
|---|---|
| SCHEMA and TABLE | Includes PRIMARY KEY, UNIQUE KEY, FOREIGN KEY, built-in data types, and DEFAULT constraints |
| VIEW, PROCEDURE, FUNCTION, RULE, SEQUENCE, EXTENSION, TRIGGER, AGGREGATE, INDEX, OPERATOR, DOMAIN | PROCEDURE requires PostgreSQL V11 or later |
Operasi SQL yang dapat disinkronkan
| Type | Statements |
|---|---|
| DML | INSERT, UPDATE, DELETE |
| DDL | See below |
Sinkronisasi DDL hanya tersedia untuk tugas yang dibuat setelah 1 Oktober 2020.
Untuk tugas yang dibuat sebelum 12 Mei 2023, Anda harus membuat triggers dan functions di database sumber untuk menangkap informasi DDL sebelum mengonfigurasi tugas. Lihat Use triggers and functions to implement incremental DDL migration for PostgreSQL databases.
Sinkronisasi DDL memerlukan akun database istimewa pada instans sumber dengan versi mesin minor 20210228 atau lebih baru. Untuk memperbarui versi minor, lihat Update the minor engine version.
Pernyataan DDL yang didukung:
-
CREATE TABLE dan DROP TABLE
-
ALTER TABLE: RENAME TABLE, ADD COLUMN, ADD COLUMN DEFAULT, ALTER COLUMN TYPE, DROP COLUMN, ADD CONSTRAINT, ADD CONSTRAINT CHECK, ALTER COLUMN DROP DEFAULT
-
TRUNCATE TABLE (hanya untuk PostgreSQL versi 11 atau lebih baru yang dikelola sendiri)
-
CREATE INDEX ON TABLE
Batasan DDL:
-
Untuk menggunakan tugas sinkronisasi data yang dibuat sebelum 12 Mei 2023 guna menyinkronkan operasi DDL, Anda harus membuat triggers dan functions di database sumber untuk menangkap informasi DDL sebelum mengonfigurasi tugas sinkronisasi data. Untuk informasi lebih lanjut, lihat Use triggers and functions to implement incremental DDL migration for PostgreSQL databases.
-
Data tipe BIT tidak dapat disinkronkan selama Sinkronisasi data inkremental.
-
Klausa DDL tambahan seperti CASCADE atau RESTRICT tidak disinkronkan.
-
Pernyataan DDL dari sesi yang menjalankan
SET session_replication_role = replicatidak disinkronkan. -
Pernyataan DDL yang dieksekusi dengan memanggil fungsi tidak disinkronkan.
-
Jika sebuah transaksi berisi pernyataan DML dan DDL, pernyataan DDL-nya tidak disinkronkan.
-
Pernyataan DDL untuk objek di luar cakupan sinkronisasi tidak disinkronkan.
Buat tugas sinkronisasi
Langkah 1: Buka halaman sinkronisasi data
Gunakan Konsol DTS atau Konsol DMS.
DTS console
-
Login ke DTS console.DTS console
-
Di panel navigasi kiri, klik Data Synchronization.
-
Di pojok kiri atas, pilih wilayah tempat instans sinkronisasi berada.
DMS console
-
Login ke DMS console.DMS console
-
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: Buat tugas
-
Klik Create Task.
-
Jika halaman menampilkan tombol New Configuration Page di pojok kanan atas, klik tombol tersebut.
Lewati langkah ini jika yang ditampilkan adalah Back to Previous Version. Halaman konfigurasi baru dan versi sebelumnya mungkin sedikit berbeda—gunakan versi baru.
Langkah 3: Konfigurasikan database sumber dan tujuan
Setelah mengonfigurasi kedua database, baca Limits yang ditampilkan di halaman. Mengabaikan hal ini dapat menyebabkan tugas gagal atau mengakibatkan inkonsistensi data.
|
Section |
Parameter |
Description |
|
N/A |
Task Name |
DTS secara otomatis menghasilkan nama tugas. Kami menyarankan Anda menentukan nama deskriptif agar mudah diidentifikasi. Nama tidak harus unik. |
|
Source Database |
Database Type |
Jenis database sumber. Pilih PostgreSQL. |
|
Connection Type |
Metode akses database sumber. Pilih Alibaba Cloud Instance. |
|
|
Instance Region |
Wilayah tempat instans ApsaraDB RDS for PostgreSQL sumber berada. |
|
|
Replicate Data Across Alibaba Cloud Accounts |
Contoh ini menggunakan instans database milik Akun Alibaba Cloud saat ini. Pilih No. |
|
|
Instance ID |
ID instans ApsaraDB RDS for PostgreSQL sumber. |
|
|
Database Name |
Nama database tempat objek disinkronkan dalam instans ApsaraDB RDS for PostgreSQL sumber. |
|
|
Database Account |
Akun database instans ApsaraDB RDS for PostgreSQL sumber. Tentukan akun istimewa yang merupakan pemilik database. Untuk informasi lebih lanjut tentang cara membuat akun untuk instans ApsaraDB RDS for PostgreSQL dan memberikan izin kepada akun tersebut, lihat Create an account dan Create a database. Catatan
Jika instans sumber adalah instans ApsaraDB RDS for PostgreSQL V9.4 dan Anda hanya ingin menyinkronkan operasi DML, akun database hanya memerlukan izin REPLICATION. |
|
|
Database Password |
Masukkan password yang sesuai dengan akun database. |
|
|
Encryption |
Menentukan apakah koneksi ke database sumber dienkripsi. Anda dapat mengonfigurasi parameter ini sesuai kebutuhan bisnis. Dalam contoh ini, Non-encrypted dipilih. Jika Anda ingin membuat koneksi terenkripsi SSL ke database sumber, lakukan langkah-langkah berikut: Pilih SSL-encrypted, unggah CA Certificate, Client Certificate, dan Private Key of Client Certificate sesuai kebutuhan, lalu tentukan Private Key Password of Client Certificate. Catatan
|
|
|
Destination Database |
Database Type |
Jenis database tujuan. Pilih PostgreSQL. |
|
Connection Type |
Metode akses database tujuan. Pilih Alibaba Cloud Instance. |
|
|
Instance Region |
Wilayah tempat instans ApsaraDB RDS for PostgreSQL tujuan berada. |
|
|
Instance ID |
ID instans ApsaraDB RDS for PostgreSQL tujuan. |
|
|
Database Name |
Nama database tempat objek disinkronkan dalam instans ApsaraDB RDS for PostgreSQL tujuan. |
|
|
Database Account |
Akun database instans ApsaraDB RDS for PostgreSQL tujuan. Akun tersebut harus memiliki izin owner pada skema. Untuk informasi tentang cara membuat akun untuk instans ApsaraDB RDS for PostgreSQL dan memberikan izin kepada akun tersebut, lihat Create an account. |
|
|
Database Password |
Masukkan password yang sesuai dengan akun database. |
|
|
Encryption |
Menentukan apakah koneksi ke database sumber dienkripsi. Anda dapat mengonfigurasi parameter ini sesuai kebutuhan bisnis. Dalam contoh ini, Non-encrypted dipilih. Jika Anda ingin membuat koneksi terenkripsi SSL ke database sumber, lakukan langkah-langkah berikut: Pilih SSL-encrypted, unggah CA Certificate, Client Certificate, dan Private Key of Client Certificate sesuai kebutuhan, lalu tentukan Private Key Password of Client Certificate. Catatan
|
Langkah 4: Uji konektivitas
Klik Test Connectivity and Proceed di bagian bawah halaman.
Blok CIDR server DTS harus ditambahkan ke pengaturan keamanan kedua database. Lihat Add the CIDR blocks of DTS servers. Jika salah satu database dikelola sendiri dan tidak diatur ke akses Alibaba Cloud Instance, klik Test Connectivity di dialog CIDR Blocks of DTS Servers.
Langkah 5: Konfigurasikan objek untuk disinkronkan
Pada langkah Configure Objects, atur parameter berikut:
| Parameter | Description |
|---|---|
| Synchronization Types | Incremental Data Synchronization dipilih secara default. Pilih juga Schema Synchronization dan Full Data Synchronization untuk menyinkronkan data historis sebagai garis dasar untuk sinkronisasi inkremental. Memilih Schema Synchronization menyebabkan DTS menyinkronkan skema tabel, termasuk foreign keys. |
| Synchronization Topology | Pilih One-way Synchronization. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors (default): pemeriksaan awal gagal jika sumber dan tujuan memiliki tabel dengan nama yang sama. Gunakan object name mapping untuk mengganti nama tabel yang bertentangan di tujuan jika diperlukan. Ignore Errors and Proceed: melewati pemeriksaan konflik nama. Selama migrasi data penuh, catatan tujuan yang sudah ada dengan nilai primary key atau unique key yang cocok tetap dipertahankan. Selama sinkronisasi inkremental, catatan tersebut ditimpa. Jika skema berbeda, inisialisasi mungkin sebagian gagal. Gunakan dengan hati-hati. |
| Capitalization of Object Names in Destination Instance | Mengontrol kapitalisasi nama database, tabel, dan kolom di tujuan. Default adalah DTS default policy. Lihat Specify the capitalization of object names. |
| Source Objects | Pilih kolom, tabel, atau skema lalu klik ikon panah untuk memindahkannya ke Selected Objects. |
| Selected Objects | Klik kanan objek untuk mengganti namanya (lihat Map the name of a single object), filter berdasarkan operasi SQL, atau tambahkan kondisi WHERE (lihat Set filter conditions). Untuk mengganti nama beberapa objek sekaligus, klik Batch Edit. Perhatikan bahwa mengganti nama objek dapat mengganggu sinkronisasi objek dependen. |
Langkah 6: Konfigurasikan pengaturan lanjutan
Klik Next: Advanced Settings dan konfigurasikan hal berikut:
| Parameter | Description |
|---|---|
| Dedicated Cluster for Task Scheduling | Secara default, DTS menggunakan kluster bersama. Untuk stabilitas tugas yang lebih tinggi, beli kluster khusus. Lihat What is a DTS dedicated cluster. |
| Retry Time for Failed Connections | Durasi DTS mencoba ulang setelah kegagalan koneksi. Rentang valid: 10–1440 menit. Default: 720 menit. Atur minimal 30 menit. Jika DTS terhubung kembali dalam jendela ini, tugas dilanjutkan; jika tidak, tugas gagal. Jika beberapa tugas berbagi sumber atau tujuan yang sama, waktu retry terpendek yang berlaku. Biaya instans DTS tetap berjalan selama percobaan ulang. |
| Retry Time for Other Issues | Durasi DTS mencoba ulang setelah kegagalan DDL atau DML. Rentang valid: 1–1440 menit. Default: 10 menit. Atur minimal 10 menit. Nilai ini harus lebih kecil dari Retry Time for Failed Connections. |
| Enable Throttling for Full Data Migration | Batasi QPS ke database sumber, RPS migrasi data penuh, atau kecepatan migrasi (MB/detik) untuk mengurangi beban selama migrasi data penuh. Hanya terlihat jika Full Data Synchronization dipilih. |
| Enable Throttling for Incremental Data Synchronization | Batasi RPS atau kecepatan sinkronisasi (MB/detik) untuk sinkronisasi inkremental guna mengurangi beban pada tujuan. |
| Environment Tag | Tag opsional untuk mengidentifikasi instans DTS. |
| Configure ETL | Aktifkan fitur ekstrak, transformasi, muat (ETL) untuk mentransformasi data saat transit. Pilih Yesalert notification settings untuk memasukkan pernyataan pemrosesan data. Lihat Configure ETL in a data migration or data synchronization task. |
| Monitoring and Alerting | Atur peringatan untuk kegagalan tugas atau latensi yang melebihi ambang batas. Pilih Yes untuk mengonfigurasi ambang batas peringatan dan kontak notifikasi. Lihat Configure monitoring and alerting when you create a DTS task. |
Langkah 7: Konfigurasikan verifikasi data (opsional)
Klik Next Step: Data Verification untuk mengatur verifikasi. Lihat Configure a data verification task.
Langkah 8: Jalankan pemeriksaan awal
Klik Next: Save Task Settings and Precheck.
Untuk melihat pratinjau parameter API untuk konfigurasi tugas ini, arahkan kursor ke tombol lalu klik Preview OpenAPI parameters sebelum melanjutkan.
DTS menjalankan pemeriksaan awal sebelum tugas dapat dimulai. Jika pemeriksaan awal gagal:
-
Klik View Details di samping setiap item yang gagal, selesaikan masalahnya, lalu klik Precheck Again.
-
Jika suatu item menampilkan peringatan yang dapat diabaikan, klik Confirm Alert Details > Ignore > OK, lalu klik Precheck Again. Mengabaikan peringatan dapat menyebabkan inkonsistensi data.
Langkah 9: Beli dan mulai instans
-
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
-
Di halaman pembelian, konfigurasikan hal berikut:
Section
Parameter
Description
New Instance Class
Billing Method
-
Subscription: Anda membayar untuk langganan saat membuat instans sinkronisasi data. Metode penagihan langganan lebih hemat biaya dibanding metode penagihan bayar sesuai pemakaian untuk penggunaan jangka panjang.
-
Pay-as-you-go: Instans bayar sesuai penggunaan ditagih per jam. Metode penagihan bayar sesuai penggunaan cocok untuk penggunaan jangka pendek. Jika Anda tidak lagi memerlukan instans sinkronisasi data bayar sesuai penggunaan, Anda dapat melepas instans tersebut untuk mengurangi biaya.
Resource Group Settings
Kelompok sumber daya tempat instans sinkronisasi data berada. Nilai default: default resource group. Untuk informasi lebih lanjut, lihat What is Resource Management?
Instance Class
DTS menyediakan kelas instans dengan kecepatan sinkronisasi berbeda. Anda dapat memilih kelas instans sesuai kebutuhan bisnis. Untuk informasi lebih lanjut, lihat Instance classes of data synchronization instances.
Subscription Duration
Jika Anda memilih metode penagihan subscription, tentukan durasi langganan dan jumlah instans sinkronisasi data yang ingin dibuat. Durasi langganan dapat berupa satu hingga sembilan bulan, satu tahun, dua tahun, tiga tahun, atau lima tahun.
NoteParameter ini hanya tersedia jika Anda memilih metode penagihan Subscription.
-
-
Baca dan terima Data Transmission Service (Pay-as-you-go) Service Terms.
-
Klik Buy and Start, lalu klik OK di dialog.
Lihat progres tugas di daftar tugas.
Yang harus dilakukan setelah tugas dimulai
Setelah tugas dimulai, pantau latensi sinkronisasi di daftar tugas. Sebelum mengalihkan workload ke tujuan:
-
Perbarui nilai awal sequences di database tujuan. Setelah dialihkan, nilai sequence baru tidak akan dilanjutkan dari nilai maksimum di sumber.
-
Jika Anda hanya menggunakan DTS untuk menulis data tabel ke database tujuan, Anda dapat menggunakan DMS untuk melakukan operasi DDL online pada tabel sumber tanpa menguncinya selama sinkronisasi. Lihat Change schemas without locking tables.
Untuk topologi sinkronisasi yang didukung, lihat Synchronization topologies.