Gunakan Data Transmission Service (DTS) untuk menjalankan sinkronisasi data satu arah yang berkelanjutan dari ApsaraDB RDS for PostgreSQL ke ApsaraDB RDS for MySQL. DTS menangani pemuatan data penuh awal dan perubahan inkremental berkelanjutan (INSERT, UPDATE, DELETE) secara real time.
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
Instans ApsaraDB RDS for PostgreSQL yang akan digunakan sebagai sumber. Lihat Buat instans ApsaraDB RDS for PostgreSQL.
Instans ApsaraDB RDS for MySQL yang akan digunakan sebagai tujuan. Lihat Buat instans ApsaraDB RDS for MySQL.
Ruang penyimpanan yang tersedia pada instans tujuan melebihi ukuran total data dari instans PostgreSQL sumber.
Batasan
Tinjau batasan berikut sebelum mengonfigurasi tugas. Beberapa batasan memerlukan tindakan sebelum Anda memulai.
Persyaratan database sumber
Kendala tabel
Tabel yang akan disinkronkan harus memiliki PRIMARY KEY atau kendala UNIQUE, dan semua field harus unik. Tanpa kendala ini, database tujuan mungkin berisi baris duplikat.
Pernyataan DDL tidak disinkronkan ke database tujuan.
Batas jumlah tabel
Jika Anda memilih tabel individual sebagai objek sinkronisasi dan perlu mengganti nama tabel atau kolom di tujuan, satu tugas mendukung hingga 5.000 tabel. Untuk lebih dari 5.000 tabel, bagi menjadi beberapa tugas atau lakukan sinkronisasi di tingkat database.
Persyaratan log WAL
DTS menggunakan replikasi logis PostgreSQL (write-ahead logging) untuk menangkap perubahan inkremental. Konfigurasikan hal berikut sebelum memulai tugas:
Atur
wal_levelkelogicalpada instans sumber.Untuk sinkronisasi hanya inkremental: simpan log WAL selama lebih dari 24 jam.
Untuk sinkronisasi data penuh + sinkronisasi inkremental: simpan log WAL setidaknya selama 7 hari. Setelah fase sinkronisasi penuh selesai, Anda dapat mengurangi retensi menjadi lebih dari 24 jam.
Retensi log WAL yang tidak mencukupi menyebabkan DTS gagal membaca log perubahan, yang dapat mengakibatkan kegagalan tugas atau kehilangan data.
Ruang disk WAL
Transaksi jangka panjang pada database sumber mencegah log WAL dilepaskan. Jika tugas sinkronisasi tertinggal atau sumber memiliki transaksi jangka panjang yang belum dikomit, file WAL dapat menumpuk dan menghabiskan ruang disk sumber. Pantau penggunaan disk sumber dan retensi log WAL selama sinkronisasi.
DTS membuat slot replikasi dengan awalan dts_sync_ pada database sumber. Slot tersebut menyimpan log inkremental hingga 15 menit. Setelah instans DTS dirilis, slot replikasi akan dihapus secara otomatis. Jika tugas sinkronisasi data dirilis atau gagal, DTS secara otomatis menghapus slot replikasi. Jika Anda mengubah kata sandi database sumber atau menghapus blok CIDR DTS dari daftar putih, hapus slot replikasi secara manual untuk mencegah penumpukan.

Jika terjadi alih bencana primary/secondary pada instans sumber, masuk ke database sekunder untuk menghapus slot replikasi.
Alih bencana primary/secondary
Jika Anda berencana melakukan alih bencana primary/secondary pada instans ApsaraDB RDS for PostgreSQL sumber selama sinkronisasi, aktifkan fitur Logical Replication Slot Failover terlebih dahulu. Lihat Logical Replication Slot Failover.
Ukuran data satu baris
Jika satu perubahan inkremental melebihi 256 MB, instans sinkronisasi gagal dan tidak dapat dipulihkan. Konfigurasi ulang tugas jika hal ini terjadi.
Pembatasan DDL
Jangan jalankan pernyataan DDL untuk mengubah skema database atau tabel selama fase sinkronisasi skema atau sinkronisasi data penuh. Hal ini menyebabkan kegagalan tugas.
Peningkatan versi utama
Peningkatan versi utama database sumber saat sinkronisasi sedang berjalan menyebabkan kegagalan tugas yang tidak dapat dipulihkan. Konfigurasi ulang tugas setelah peningkatan selesai.
Batasan lainnya
Satu tugas hanya dapat menyinkronkan dari satu database. Buat tugas terpisah untuk beberapa database.
DTS tidak dapat menyinkronkan tabel yang memiliki hubungan pewarisan lintas skema.
DTS menyinkronkan kunci asing dari database sumber ke database tujuan selama sinkronisasi skema. Selama sinkronisasi data penuh dan sinkronisasi data inkremental, DTS sementara menonaktifkan pemeriksaan kendala dan operasi kaskade pada kunci asing di tingkat sesi. Jika Anda melakukan operasi pembaruan atau penghapusan kaskade pada database sumber selama sinkronisasi, ketidakkonsistenan data mungkin terjadi.
Saat menyinkronkan di tingkat skema: jika Anda membuat tabel baru dalam skema atau mengganti nama tabel dengan RENAME, jalankan pernyataan berikut sebelum menulis data ke tabel tersebut:
ALTER TABLE schema.table REPLICA IDENTITY FULL;Ganti
schemadantabledengan nama aktual. Jalankan pernyataan ini selama jam sepi dan jangan mengunci tabel—mengunci dapat menyebabkan deadlock.DTS membuat tabel temporary berikut di database sumber untuk menangkap pernyataan DDL, perubahan skema, dan informasi heartbeat. Jangan menghapusnya selama sinkronisasi; tabel-tabel tersebut akan dihapus secara otomatis saat 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,public.aliyun_dts_instanceDTS menambahkan tabel heartbeat bernama
dts_postgres_heartbeatke database sumber untuk mengukur latensi sinkronisasi.Jika data yang akan disinkronkan berisi karakter 4-byte (seperti karakter langka atau emoji), database dan tabel tujuan harus menggunakan set karakter UTF8mb4. Jika Anda menggunakan sinkronisasi skema DTS, atur
character_set_serverpada instans tujuan ke UTF8mb4.Sebelum menyinkronkan data, evaluasi dampak sinkronisasi data terhadap kinerja database sumber dan tujuan. Kami menyarankan agar Anda menyinkronkan data selama jam sepi. Selama sinkronisasi data penuh awal, DTS menggunakan resource baca dan tulis dari database sumber dan tujuan. Hal ini dapat meningkatkan beban pada server database.
Setelah sinkronisasi data penuh awal selesai, ruang tabel tujuan mungkin lebih besar daripada sumber karena operasi INSERT konkuren menyebabkan fragmentasi.
Menulis data dari sumber selain DTS ke tujuan selama sinkronisasi dapat menyebabkan ketidakkonsistenan data atau kehilangan data.
Nama kolom MySQL tidak peka huruf besar/kecil. Jika beberapa kolom sumber hanya berbeda dalam kapitalisasi, kolom-kolom tersebut ditulis ke kolom tujuan yang sama, yang dapat menghasilkan hasil yang tidak diharapkan.
Jika pernyataan DDL gagal di tujuan, tugas DTS tetap berjalan. Lihat pernyataan DDL yang gagal di log tugas. Lihat Lihat log tugas.
Jika tugas DTS 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. Kami menyarankan agar Anda merilis instans DTS sesegera mungkin setelah instans sumber dan tujuan dirilis.
Setelah status sinkronisasi berubah menjadi Completed, jalankan perintah berikut untuk memverifikasi bahwa data telah ditulis dengan benar ke tujuan:
ANALYZE TABLE <table_name>;
Kasus khusus
| Jenis sumber | Persyaratan tambahan |
|---|---|
| ApsaraDB RDS for PostgreSQL | Jangan mengubah endpoint atau zona instans sumber selama sinkronisasi. |
| Database yang dikelola sendiri PostgreSQL | Atur max_wal_senders dan max_replication_slots ke nilai yang lebih besar dari jumlah slot replikasi yang ada ditambah jumlah instans DTS yang menyinkronkan dari database ini. |
| Google Cloud Platform Cloud SQL for PostgreSQL | Atur Database Account ke akun dengan izin cloudsqlsuperuser. Berikan izin OWNER pada objek sinkronisasi yang dipilih ke akun ini jika akun tersebut belum memilikinya. Perhatikan bahwa akun cloudsqlsuperuser tidak dapat mengelola objek yang dimiliki oleh akun cloudsqlsuperuser lainnya. |
Penagihan
| Jenis sinkronisasi | Biaya |
|---|---|
| Sinkronisasi skema + sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Lihat Ikhtisar penagihan. |
Topologi sinkronisasi yang didukung
DTS mendukung topologi satu arah berikut untuk jalur sinkronisasi ini:
Sinkronisasi satu arah satu-ke-satu
Sinkronisasi satu arah satu-ke-banyak
Sinkronisasi satu arah kaskade
Sinkronisasi satu arah banyak-ke-satu
Untuk detailnya, lihat Topologi sinkronisasi.
Operasi SQL yang dapat disinkronkan
| Jenis operasi | Pernyataan SQL |
|---|---|
| DML | INSERT, UPDATE, DELETE |
Pernyataan DDL tidak disinkronkan ke database tujuan.
Buat tugas sinkronisasi data
Buka Halaman Sinkronisasi Data di Konsol DTS. Atau, masuk ke Konsol DMS, lalu pada bilah navigasi atas pilih Data + AI > DTS (DTS) > Data Synchronization.
Di pojok kiri atas, pilih wilayah tempat instans sinkronisasi akan berada.
Klik Create Task. Di wizard Create Data Synchronization Task, konfigurasikan database sumber dan tujuan.
PeringatanBaca Limits yang ditampilkan di halaman setelah mengonfigurasi sumber dan tujuan. Melewatkan langkah ini dapat menyebabkan kegagalan tugas atau ketidakkonsistenan data.
Source Database
Parameter Nilai Database Type PostgreSQL Connection Type Alibaba Cloud Instance Instance Region Wilayah instans ApsaraDB RDS for PostgreSQL sumber Instance ID ID instans sumber Database Name Nama database sumber Database Account Akun istimewa yang memiliki database sumber. Lihat Buat akun dan Buat database. Untuk PostgreSQL 9.4 dengan sinkronisasi hanya DML, izin REPLICATION sudah cukup. Database Password Kata sandi untuk akun database Destination Database
Parameter Nilai Database Type MySQL Connection Type Alibaba Cloud Instance Instance Region Wilayah instans ApsaraDB RDS for MySQL tujuan RDS Instance ID ID instans tujuan Database Account Akun dengan izin baca dan tulis pada database tujuan Database Password Kata sandi untuk akun database Encryption Non-encrypted atau SSL-encrypted. Untuk menggunakan enkripsi SSL, aktifkan SSL pada instans RDS MySQL tujuan terlebih dahulu. Lihat Gunakan sertifikat cloud untuk mengaktifkan enkripsi SSL. Klik Test Connectivity and Proceed. DTS secara otomatis menambahkan blok CIDR-nya ke daftar putih instans database Alibaba Cloud dan ke aturan grup keamanan database yang dihosting oleh Elastic Compute Service (ECS). Untuk database yang dikelola sendiri yang dideploy di beberapa instance ECS, tambahkan secara manual blok CIDR DTS ke grup keamanan setiap instance. Untuk database on-premises atau database yang dihosting oleh penyedia cloud pihak ketiga, tambahkan secara manual blok CIDR DTS ke daftar putih database. Lihat Blok CIDR server DTS.
PeringatanMenambahkan blok CIDR DTS ke daftar putih atau grup keamanan Anda membuka blok tersebut untuk akses jaringan. Lakukan tindakan pencegahan seperti menggunakan kredensial kuat, membatasi port yang terbuka, meninjau entri daftar putih secara berkala, dan menghubungkan DTS melalui Express Connect, VPN Gateway, atau Smart Access Gateway.
Konfigurasikan objek yang akan disinkronkan dan pengaturan lanjutan.
Pengaturan dasar
Parameter Deskripsi Synchronization Types Incremental Data Synchronization dipilih secara default. Pilih Full Data Synchronization untuk menyertakan pemuatan data historis sebelum sinkronisasi inkremental dimulai. Schema Synchronization tidak dapat dipilih untuk jalur sinkronisasi ini. Processing Mode of Conflicting Tables Pilih cara menangani tabel yang ada di sumber dan tujuan. Precheck and Report Errors (default): pemeriksaan awal gagal jika tabel dengan nama yang sama ada di tujuan. Gunakan pemetaan nama objek untuk mengganti nama tabel tujuan jika tidak dapat dihapus. Ignore Errors and Proceed: melewati pemeriksaan. Selama sinkronisasi penuh, baris tujuan yang ada tetap dipertahankan; selama sinkronisasi inkremental, baris yang bertentangan ditimpa. Jika skema sumber dan tujuan berbeda, hanya beberapa kolom yang mungkin disinkronkan atau tugas mungkin gagal. Source Objects Pilih kolom, tabel, atau database. View, trigger, dan prosedur tersimpan tidak disinkronkan saat Anda memilih tabel atau kolom. Selected Objects Klik kanan objek untuk mengganti namanya, memilih operasi SQL tertentu yang akan disinkronkan, atau menambahkan kondisi filter WHERE. Klik Batch Edit untuk mengganti nama beberapa objek sekaligus. Lihat Pemetaan nama objek dan Tentukan kondisi filter. Pengaturan lanjutan
Parameter Description Monitoring and Alerting Atur ke Yes untuk menerima peringatan ketika task gagal atau latensi sinkronisasi melebihi ambang batas. Konfigurasikan ambang batas peringatan dan kontak penerima. Lihat Configure monitoring and alerting. Retry Time for Failed Connections Durasi waktu DTS mencoba kembali koneksi yang gagal sebelum menandai task sebagai gagal. Rentang: 10–1.440 menit. Default: 720. Atur nilai ini minimal 30 menit. Jika multiple task menggunakan database sumber atau tujuan yang sama, waktu retry terpendek yang berlaku. Biaya DTS tetap berjalan selama proses retry. Configure ETL Atur ke Yes untuk mentransformasi data saat dalam perjalanan menggunakan editor kode. Lihat Configure ETL dan What is ETL?. Klik Next: Save Task Settings and Precheck. Untuk melihat pratinjau parameter API untuk tugas ini, arahkan pointer ke Next: Save Task Settings and Precheck lalu klik Preview OpenAPI parameters sebelum melanjutkan.
CatatanTugas harus lulus pemeriksaan awal sebelum dapat dimulai. Jika pemeriksaan awal gagal, klik View Details di sebelah setiap item yang gagal, selesaikan masalahnya, lalu klik Precheck Again. Untuk item peringatan yang dapat diabaikan dengan aman, klik Confirm Alert Details > View Details > Ignore > OK, lalu klik Precheck Again.
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Di halaman buy, konfigurasikan pengaturan penagihan dan kelas instans.
Parameter Deskripsi Billing Method Subscription: bayar di muka untuk jangka waktu tetap (1–9 bulan, atau 1, 2, 3, atau 5 tahun). 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 menghentikan biaya. Instance Class Menentukan throughput sinkronisasi. Lihat Kelas instans sinkronisasi data. Resource Group Settings Kelompok sumber daya untuk instans sinkronisasi. Default: default resource group. Lihat Apa itu Resource Management?. Subscription Duration Hanya tersedia untuk metode penagihan Subscription. Baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms.
Klik Buy and Start, lalu klik OK di dialog konfirmasi.
Tugas muncul di daftar tugas. Pantau perkembangannya di sana.
Langkah selanjutnya
Untuk melakukan operasi DDL online pada tabel sumber tanpa mengganggu sinkronisasi, gunakan Data Management Service (DMS). Lihat Ubah skema tanpa mengunci tabel. Ini hanya aman jika DTS adalah satu-satunya penulis ke tujuan. Menulis dari sumber lain secara bersamaan menyebabkan ketidakkonsistenan data.
Untuk memeriksa apakah parameter instans sinkronisasi perlu disesuaikan, lihat Modifikasi parameter instans.