Layanan Transmisi Data (DTS) menjaga agar instans AnalyticDB for PostgreSQL tetap sinkron dengan sumber ApsaraDB RDS for MySQL, sehingga memungkinkan analitik real-time terhadap data bisnis yang sedang berjalan. Topik ini menjelaskan cara mengonfigurasi tugas sinkronisasi data untuk pipeline ini.
Database sumber yang didukung
Prosedur dalam topik ini menggunakan instans ApsaraDB RDS for MySQL sebagai sumber. Langkah-langkah yang sama berlaku ketika sumbernya adalah salah satu jenis database MySQL berikut:
Instans ApsaraDB RDS for MySQL
Database MySQL yang dikelola sendiri yang dihosting di Elastic Compute Service (ECS)
Database MySQL yang dikelola sendiri yang terhubung melalui Express Connect, VPN Gateway, atau Smart Access Gateway
Database MySQL yang dikelola sendiri yang terhubung melalui Database Gateway
Database MySQL yang dikelola sendiri yang terhubung melalui Cloud Enterprise Network (CEN)
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Instans sumber ApsaraDB RDS for MySQL
Instans tujuan AnalyticDB for PostgreSQL. Lihat Buat instans
Akun database pada instans sumber dengan izin REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, dan SELECT
Akun database pada instans tujuan dengan peran akun awal atau izin RDS_SUPERUSER. Lihat Kelola pengguna dan izin
Persyaratan log biner
Verifikasi pengaturan log biner berikut sebelum mengonfigurasi DTS.
Untuk ApsaraDB RDS for MySQL (binary logging diaktifkan secara default):
Atur
binlog_row_imagekefull. Lihat Ubah parameter instansSimpan log biner minimal selama 3 hari (disarankan 7 hari). Lihat Hapus file log biner
Untuk MySQL yang dikelola sendiri:
Aktifkan binary logging
Atur
binlog_formatkerowAtur
binlog_row_imagekefullSimpan log biner minimal selama 7 hari
Untuk kluster dual-primary, atur
log_slave_updateskeON. Lihat Buat akun untuk database MySQL yang dikelola sendiri dan konfigurasi binary logging
Jika log biner dihapus sebelum DTS membacanya, tugas sinkronisasi gagal dan dapat menyebabkan inkonsistensi atau kehilangan data. DTS tidak menjamin kinerja Service Level Agreement (SLA) jika periode retensi lebih pendek dari ketentuan minimum di atas.
Penagihan
| Jenis sinkronisasi | Biaya |
|---|---|
| Sinkronisasi skema dan sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Lihat Ikhtisar penagihan |
Batasan
Database sumber
Tabel harus memiliki PRIMARY KEY atau kendala UNIK dengan semua bidang unik. Tabel tanpa kendala ini dapat menghasilkan catatan duplikat di tujuan.
Ketika menyinkronkan tabel individual (bukan seluruh database) dan Anda ingin mengedit tabel tersebut, seperti mengganti nama tabel atau kolom, satu tugas mendukung hingga 1.000 tabel. Jika tugas melebihi 1.000 tabel, terjadi error permintaan. Untuk set yang lebih besar, konfigurasikan beberapa tugas atau lakukan sinkronisasi di tingkat database.
DTS tidak menyinkronkan tipe data berikut: BIT, VARBIT, GEOMETRY, ARRAY, UUID, TSQUERY, TSVECTOR, TXID_SNAPSHOT, dan POINT.
Indeks prefiks tidak didukung dan dapat menyebabkan tugas gagal.
Hanya tabel yang dapat dipilih sebagai objek sinkronisasi. Indeks, partisi, view, prosedur tersimpan, fungsi, pemicu, dan kunci asing tidak disertakan.
Jangan jalankan pernyataan DDL yang mengubah kunci primer atau menambahkan komentar selama sinkronisasi. Misalnya,
ALTER TABLE table_name COMMENT='...'tidak berpengaruh.Jangan jalankan pernyataan DDL yang mengubah skema database atau tabel selama fase sinkronisasi skema atau sinkronisasi data penuh.
Jika sumbernya adalah MySQL 8.0.23 atau versi lebih baru dan tabel mencakup kolom tak terlihat (invisible columns), DTS tidak dapat membaca kolom tersebut dan terjadi kehilangan data. Jalankan
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;untuk membuat kolom tersebut terlihat sebelum memulai tugas. Tabel tanpa kunci primer eksplisit akan menghasilkan kunci primer tak terlihat secara otomatis — buat juga kunci tersebut terlihat. Lihat Invisible Columns dan Generated Invisible Primary Keys.Jika sumbernya adalah instans ApsaraDB RDS for MySQL dengan EncDB diaktifkan, sinkronisasi data penuh tidak didukung. Instans dengan Transparent Data Encryption (TDE) yang diaktifkan mendukung ketiga jenis sinkronisasi.
Nilai DATETIME
0000-00-00 00:00:00dikonversi menjadinulldi tujuan. Untuk menghindarinya, ubah nilainya menjadi0001-01-01 00:00:00di sumber atau biarkan bidang tujuan kosong sebelum memulai tugas.Data yang dihasilkan oleh operasi perubahan log biner — seperti data yang dipulihkan dari backup fisik atau data dari operasi kaskade — tidak dicatat atau disinkronkan ke tujuan selama instans sinkronisasi berjalan. Jika hal ini terjadi, Anda dapat menghapus database atau tabel yang terdampak dari objek yang disinkronkan lalu menambahkannya kembali, asalkan tidak memengaruhi bisnis Anda. Lihat Ubah objek yang akan disinkronkan.
Database tujuan
Tabel tujuan tidak boleh berupa tabel append-optimized (AO).
Kunci unik (termasuk kunci primer) tabel tujuan harus mencakup semua kolom kunci distribusi.
Jika tabel sumber memiliki kunci primer, kolom kunci primer tujuan sesuai dengan sumber. Jika tabel sumber tidak memiliki kunci primer, kolom kunci primer tujuan sesuai dengan kunci distribusi.
Batasan lainnya
Data yang ditulis ke tujuan dari sumber lain selama sinkronisasi dapat menyebabkan inkonsistensi. Hindari penulisan konkuren ke tabel tujuan saat DTS sedang berjalan.
Alat Online DDL seperti
pt-online-schema-changetidak didukung ketika tabel individual dipilih sebagai objek. Gunakan Data Management (DMS) untuk operasi DDL tanpa lock sebagai gantinya. Lihat Lakukan operasi DDL tanpa lock.Jika pemetaan kolom digunakan atau skema sumber dan tujuan berbeda, kolom yang ada di sumber tetapi tidak ada di tujuan tidak disinkronkan.
Selama sinkronisasi skema, DTS menyinkronkan kunci asing dari database sumber ke database tujuan.
DTS sementara menonaktifkan pemeriksaan kendala kunci asing dan operasi kaskade di tingkat session selama sinkronisasi data penuh dan inkremental. Pembaruan atau penghapusan kaskade di sumber selama periode ini dapat menyebabkan inkonsistensi data.
Selama sinkronisasi data penuh awal, operasi INSERT konkuren menyebabkan fragmentasi tabel di tujuan. Ruang tabel tujuan akan lebih besar daripada sumber setelah sinkronisasi penuh selesai. Jadwalkan sinkronisasi awal selama jam sepi untuk mengurangi beban.
Jika tugas DTS gagal, dukungan teknis DTS berusaha memulihkannya dalam waktu 8 jam. Tugas dapat dimulai ulang dan parameternya disesuaikan selama pemulihan.
Sumber MySQL yang dikelola sendiri
Alih bencana primary/secondary saat tugas sedang berjalan menyebabkan tugas gagal.
DTS menghitung latensi sinkronisasi berdasarkan stempel waktu terakhir yang disinkronkan dibandingkan dengan stempel waktu sumber saat ini. Jika tidak ada operasi DML yang dijalankan di sumber dalam jangka waktu lama, latensi yang dilaporkan mungkin tidak akurat. Jalankan operasi DML di sumber untuk memperbarui metrik latensi. Jika Anda memilih seluruh database sebagai objek sinkronisasi, Anda dapat membuat tabel heartbeat yang diperbarui setiap detik untuk menjaga akurasi metrik latensi.
DTS secara berkala menjalankan
CREATE DATABASE IF NOT EXISTS 'test'di sumber untuk memajukan posisi log biner.
Sumber ApsaraDB RDS for MySQL
Instans ApsaraDB RDS for MySQL yang tidak mencatat log transaksi, seperti instans ApsaraDB RDS for MySQL 5.6 read-only, tidak dapat digunakan sebagai sumber.
DTS secara berkala menjalankan
CREATE DATABASE IF NOT EXISTS 'test'di sumber untuk memajukan posisi log biner.
Operasi SQL yang dapat disinkronkan
DML: INSERT, UPDATE, DELETE
Saat menulis ke AnalyticDB for PostgreSQL, DTS mengonversi UPDATE menjadi REPLACE INTO. Jika UPDATE menargetkan kolom kunci primer, DTS mengonversinya menjadi DELETE diikuti oleh INSERT.
DDL: CREATE TABLE, ALTER TABLE, TRUNCATE TABLE, DROP TABLE
Topologi sinkronisasi yang didukung
Satu arah satu-ke-satu
Satu arah satu-ke-banyak
Satu arah banyak-ke-satu
Pemetaan istilah
| MySQL | AnalyticDB for PostgreSQL |
|---|---|
| Database | Schema |
| Table | Table |
Konfigurasi tugas sinkronisasi data
Prosedur ini terdiri dari 9 langkah: buka halaman tugas, pilih wilayah, konfigurasi database sumber dan tujuan, uji konektivitas, konfigurasi objek dan pengaturan, konfigurasi pengaturan lanjutan, atur kolom kunci, jalankan pemeriksaan awal, serta beli dan mulai instans.
Langkah 1: Buka halaman Tugas Sinkronisasi Data
Masuk ke Konsol Data Management (DMS).
Di bilah navigasi atas, klik Data + AI.
Di panel navigasi kiri, pilih DTS (DTS) > Data Synchronization.
Navigasi konsol dapat berbeda tergantung tata letak DMS Anda. Lihat Mode simple dan Sesuaikan tata letak dan gaya konsol DMS. Atau, langsung buka halaman Tugas Sinkronisasi Data.
Langkah 2: Pilih wilayah
Di sisi kanan Tugas Sinkronisasi Data, pilih wilayah tempat instans sinkronisasi data berada.
Di konsol DTS baru, pilih wilayah dari bilah navigasi atas.
Langkah 3: Konfigurasi database sumber dan tujuan
Klik Create Task. Di wizard, konfigurasi parameter berikut.
Source database
| Parameter | Deskripsi |
|---|---|
| Task Name | Nama untuk tugas DTS. DTS menghasilkan nama secara otomatis. Gunakan nama deskriptif agar mudah diidentifikasi — tidak perlu unik. |
| Database Type | Pilih MySQL. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah instans sumber ApsaraDB RDS for MySQL. |
| Replicate Data Across Alibaba Cloud Accounts | Pilih No untuk sinkronisasi dalam akun yang sama. |
| RDS Instance ID | ID instans sumber. Sumber dan tujuan dapat berupa instans yang sama (untuk sinkronisasi dalam instans) atau instans berbeda. |
| Database Account | Akun dengan izin REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, dan SELECT. |
| Database Password | Password untuk akun database. |
| Encryption | Pilih Non-encrypted atau SSL-encrypted. Untuk menggunakan enkripsi SSL, aktifkan terlebih dahulu di instans RDS. Lihat Gunakan sertifikat cloud untuk mengaktifkan enkripsi SSL. |
Destination database
| Parameter | Deskripsi |
|---|---|
| Database Type | Pilih AnalyticDB for PostgreSQL. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah instans tujuan AnalyticDB for PostgreSQL. |
| Instance ID | ID instans tujuan. |
| Database Name | Nama database target di instans tujuan. |
| Database Account | Akun awal atau akun dengan izin RDS_SUPERUSER. |
| Database Password | Password untuk akun database. |
Langkah 4: Uji konektivitas
Klik Test Connectivity and Proceed.
DTS secara otomatis menambahkan blok CIDR servernya ke daftar putih instans database Alibaba Cloud dan ke aturan grup keamanan database yang dihosting di ECS. Jika database dihosting di ECS, Anda juga harus memastikan bahwa instance ECS dapat mengakses database tersebut. Jika database dideploy di beberapa instance ECS, Anda harus secara manual menambahkan blok CIDR DTS ke aturan grup keamanan setiap instance ECS. Untuk database yang dikelola sendiri di pusat data atau cloud pihak ketiga, tambahkan secara manual blok CIDR DTS ke daftar putih database. Lihat Blok CIDR server DTS.
Menambahkan blok CIDR DTS ke daftar putih atau grup keamanan menimbulkan risiko keamanan. Sebelum melanjutkan, ambil tindakan pencegahan seperti memberlakukan kredensial kuat, membatasi port yang terbuka, melakukan audit rutin terhadap aturan daftar putih, dan menghapus blok CIDR yang tidak sah. Pertimbangkan untuk terhubung melalui Express Connect, VPN Gateway, atau Smart Access Gateway guna mengurangi risiko tersebut.
Langkah 5: Konfigurasi objek dan pengaturan sinkronisasi
| Parameter | Deskripsi |
|---|---|
| Synchronization Types | Pilih Schema Synchronization, Full Data Synchronization, dan Incremental Data Synchronization. Secara default, Incremental Data Synchronization dipilih; Anda juga harus memilih kedua opsi lainnya. Sinkronisasi skema dan sinkronisasi penuh menetapkan garis dasar, sedangkan sinkronisasi inkremental menjaga agar destinasi tetap mutakhir setelahnya. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors (default): gagal dalam Pemeriksaan Awal jika terdapat tabel dengan nama yang sama di destinasi. Gunakan Pemetaan nama objek untuk mengganti nama tabel yang bentrok jika diperlukan. Lihat Map object names. Ignore Errors and Proceed: melewati Pemeriksaan Awal untuk konflik nama. Selama sinkronisasi penuh, catatan di destinasi yang sudah ada dengan nilai kunci primary atau kunci unik yang cocok akan dipertahankan. Selama sinkronisasi inkremental, catatan tersebut akan ditimpa. Jika skema berbeda, inisialisasi mungkin gagal, hanya kolom sebagian yang disinkronkan, atau instansi sinkronisasi data gagal—lanjutkan dengan hati-hati. |
| DDL and DML Operations to Be Synchronized | Operasi SQL yang akan disinkronkan. Lihat SQL operations that can be synchronized. Untuk mengonfigurasi pemfilteran SQL per objek, klik kanan objek di Selected Objects dan pilih operasi yang diinginkan. |
| Source Objects | Pilih objek dan klik ikon panah untuk menambahkannya ke Selected Objects. Hanya tabel yang didukung. |
| Selected Objects | Untuk mengganti nama satu objek, klik kanan objek tersebut. Untuk penggantian nama massal, klik Batch Edit. Lihat Map object names. Untuk memfilter baris, klik kanan tabel dan tentukan kondisi WHERE. Lihat Specify filter conditions. Mengganti nama objek dapat menyebabkan gangguan pada sinkronisasi objek dependen. |
Langkah 6: Konfigurasi pengaturan lanjutan
Klik Next: Advanced Settings.
Verifikasi data
Lihat Konfigurasi verifikasi data.
Pengaturan lanjutan
| Parameter | Deskripsi |
|---|---|
| Dedicated Cluster for Task Scheduling | Secara default, DTS menjadwalkan ke klaster bersama. Beli klaster khusus untuk stabilitas yang lebih baik. Lihat Apa itu klaster khusus DTS. |
| Set Alerts | No: peringatan dinonaktifkan. Ya: konfigurasi ambang batas peringatan dan kontak. Lihat Konfigurasi pemantauan dan peringatan. |
| Retry Time for Failed Connections | Durasi DTS mencoba ulang saat koneksi gagal. Rentang: 10–1440 menit. Default: 720 menit. Atur minimal 30 menit. Jika beberapa tugas menggunakan sumber atau tujuan yang sama, jendela coba ulang terpendek yang berlaku. DTS menagih instans selama masa coba ulang — segera lepas instans jika sumber dan tujuan sudah tidak digunakan. |
| Retry Time for Other Issues | Durasi DTS mencoba ulang saat terjadi kegagalan DDL/DML. Rentang: 1–1440 menit. Default: 10 menit. Harus lebih pendek dari Waktu Coba Ulang untuk Koneksi Gagal. |
| Enable Throttling for Full Data Synchronization | Batasi QPS ke sumber, RPS untuk sinkronisasi penuh, dan throughput data (MB/detik) untuk mengurangi beban selama sinkronisasi data penuh awal. Tersedia hanya jika Sinkronisasi Data Penuh dipilih. |
| Enable Throttling for Incremental Data Synchronization | Batasi RPS dan throughput (MB/detik) untuk sinkronisasi inkremental guna mengurangi beban di tujuan. |
| Environment Tag | Berikan tag pada instans DTS berdasarkan lingkungan. Opsional. |
| Enclose Object Names in Quotation Marks | Ya: DTS membungkus nama skema, tabel, dan kolom dalam tanda kutip tunggal atau ganda selama sinkronisasi skema dan inkremental jika nama tersebut mengandung campuran huruf besar/kecil, diawali non-huruf, mengandung karakter non-standar, atau bentrok dengan kata tercadang di tujuan. No: nama tidak diberi tanda kutip. |
| Configure ETL | Ya: masukkan pernyataan transformasi data di editor kode. Lihat Konfigurasi ETL. No: tanpa transformasi. |
| Whether to delete SQL operations on heartbeat tables of forward and reverse tasks | Ya: DTS tidak menulis operasi tabel heartbeat ke sumber. Metrik latensi mungkin ditampilkan di tugas. No: DTS menulis operasi heartbeat ke sumber, yang dapat memengaruhi backup fisik dan kloning database sumber. |
Langkah 7: Atur kolom kunci primer dan kunci distribusi
Klik Next: Configure Database and Table Fields. Atur kolom kunci primer dan kunci distribusi untuk setiap tabel yang disinkronkan ke instans tujuan AnalyticDB for PostgreSQL.
Langkah 8: Jalankan pemeriksaan awal
Klik Next: Save Task Settings and Precheck.
Untuk melihat pratinjau parameter API yang setara sebelum menyimpan, arahkan kursor ke tombol tersebut lalu klik Preview OpenAPI parameters.
DTS menjalankan pemeriksaan awal sebelum memulai sinkronisasi. Jika ada item yang gagal:
Klik View Details di sebelah item yang gagal, selesaikan masalahnya, lalu klik Precheck Again.
Jika item peringatan dapat diabaikan dengan aman, klik Confirm Alert Details, lalu klik Ignore di dialog, kemudian klik OK, lalu klik Precheck Again. Mengabaikan peringatan dapat menyebabkan inkonsistensi data.
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Langkah 9: Beli dan mulai instans
Di halaman buy, konfigurasi parameter berikut.
| Parameter | Deskripsi |
|---|---|
| Billing Method | Pay-as-you-go: ditagih per jam. Lepaskan instans saat tidak lagi digunakan untuk menghindari biaya berkelanjutan. |
| Resource Group Settings | Kelompok sumber daya untuk instans. Default: default resource group. Lihat Apa itu Resource Management? |
| Instance Class | Kelas throughput sinkronisasi. Lihat Kelas instans untuk instans sinkronisasi data. |
Baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms, lalu klik Buy and Start. Di dialog konfirmasi, klik OK.
Tugas muncul di daftar tugas. Pantau perkembangannya di sana.