Gunakan Data Transmission Service (DTS) untuk mereplikasi data secara berkelanjutan dari instans PolarDB-X 2.0 ke proyek MaxCompute. DTS melakukan pemuatan penuh awal, lalu menangkap perubahan inkremental dari log biner sumber dan menuliskannya ke tabel data inkremental khusus di MaxCompute bersamaan dengan tabel garis dasar penuh.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Memiliki instans PolarDB-X 2.0 yang kompatibel dengan MySQL 5.7. Lihat Buat instans dan Buat database.
Mengaktifkan MaxCompute. Lihat Aktifkan MaxCompute dan DataWorks.
Membuat proyek MaxCompute. Lihat Buat proyek MaxCompute.
Memiliki akun database pada instans PolarDB-X sumber dengan izin berikut:
Izin Digunakan saat Mengapa diperlukan SELECTSinkronisasi data penuh awal Membaca baris dari objek yang akan disinkronkan REPLICATION CLIENTSelalu Menanyakan status log biner ( SHOW MASTER STATUS,SHOW BINARY LOGS)REPLICATION SLAVESinkronisasi data inkremental Terhubung ke instans sumber dan membaca log biner Untuk petunjuk pemberian izin ini, lihat Alat sinkronisasi data untuk PolarDB-X.
Pencatatan log biner diaktifkan di konsol PolarDB-X 2.0 dengan
binlog_row_imagediatur kefull. Lihat Pengaturan parameter. Jikabinlog_row_imagetidak diatur kefull, pemeriksaan awal gagal dan tugas tidak dapat dimulai.Periode retensi log biner dikonfigurasi sebagai berikut:
Cakupan sinkronisasi Periode retensi minimum Hanya sinkronisasi inkremental 24 jam Sinkronisasi penuh + inkremental 7 hari (dapat dikurangi menjadi 24 jam setelah sinkronisasi penuh selesai) Jika DTS tidak dapat membaca log biner karena periode retensi terlalu singkat, tugas gagal dan ketidakkonsistenan atau kehilangan data mungkin terjadi. Pastikan Anda mengonfigurasi periode retensi sesuai persyaratan di atas. Jika tidak, keandalan layanan dan kinerja yang dinyatakan dalam Perjanjian Tingkat Layanan (SLA) DTS tidak dapat tercapai.
Batasan
Kunci asing tidak disinkronkan. Operasi CASCADE dan DELETE yang dipicu oleh kendala kunci asing di database sumber tidak direplikasi ke MaxCompute.
Batasan database sumber
| Kendala | Detail | Workaround |
|---|---|---|
| Kunci primer atau kunci unik wajib | Tabel tanpa kendala PRIMARY KEY atau UNIQUE dapat menghasilkan catatan duplikat di tujuan. | Tambahkan kunci primer atau kunci unik ke tabel sumber sebelum memulai tugas. |
| Batas jumlah tabel saat mengganti nama objek | Jika Anda mengganti nama tabel atau kolom di tujuan, satu tugas hanya dapat menyinkronkan hingga 5.000 tabel; tugas dengan lebih dari 5.000 tabel gagal dengan error permintaan. | Bagi menjadi beberapa tugas, atau sinkronkan seluruh database tanpa mengganti nama per tabel. |
| TABLEGROUP dan Locality tidak didukung | Instans PolarDB-X yang menggunakan TABLEGROUP atau atribut Locality tidak didukung. | Hapus definisi TABLEGROUP dan atribut Locality sebelum sinkronisasi. |
| Nama tabel huruf kapital | Tabel dengan huruf kapital dalam namanya hanya mendukung sinkronisasi skema. | Gunakan nama tabel huruf kecil, atau sinkronkan hanya skema. |
| Tidak ada DDL selama sinkronisasi | Menjalankan pernyataan DDL selama sinkronisasi skema atau data penuh menyebabkan tugas gagal. | Tunda operasi DDL hingga fase sinkronisasi awal selesai. |
Batasan lainnya
Hanya tabel yang dapat dipilih sebagai objek sinkronisasi. View, trigger, dan prosedur tersimpan tidak disinkronkan.
DTS menggunakan resource baca dan tulis di sumber dan tujuan selama sinkronisasi data penuh awal, sehingga meningkatkan beban server. Jalankan sinkronisasi selama jam sepi.
Sinkronisasi data penuh menggunakan operasi INSERT secara bersamaan, yang dapat memecah tabel tujuan. Setelah sinkronisasi penuh selesai, ukuran ruang tabel tujuan mungkin lebih besar daripada sumber.
Jangan gunakan pt-online-schema-change untuk operasi DDL selama sinkronisasi—hal ini dapat menyebabkan tugas gagal.
Tulis data ke tujuan hanya melalui DTS selama sinkronisasi. Menulis melalui alat lain dapat menyebabkan ketidakkonsistenan data, dan penggunaan DMS untuk operasi DDL Online di tujuan dapat mengakibatkan kehilangan data.
MaxCompute tidak mendukung kendala kunci primer. Jika terjadi error jaringan, DTS mungkin menulis catatan duplikat ke tujuan. Rancang kueri Anda untuk menangani duplikat.
Jika tugas DTS gagal, dukungan teknis DTS berusaha memulihkannya dalam waktu 8 jam. Tugas mungkin dimulai ulang dan parameter tugas (bukan parameter database) mungkin disesuaikan.
DTS memperbarui tabeldts_health_check.ha_health_checkdi database sumber secara berkala untuk memajukan posisi file log biner.
Penagihan
| Jenis sinkronisasi | Biaya |
|---|---|
| Sinkronisasi skema dan sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Lihat Ikhtisar penagihan |
Operasi SQL yang didukung
| Jenis operasi | Pernyataan SQL |
|---|---|
| DML | INSERT, UPDATE, DELETE |
Buat tugas sinkronisasi
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.
Tata letak konsol mungkin berbeda. Lihat Mode simple dan Sesuaikan tata letak dan gaya Konsol DMS. Anda juga dapat langsung membuka halaman Tugas Sinkronisasi Data di konsol DTS baru.
Langkah 2: Konfigurasi sumber dan tujuan
Di halaman Data Synchronization Tasks, pilih wilayah tempat instans sinkronisasi data berada.
Di konsol DTS baru, pilih wilayah dari bilah navigasi atas.
Klik Create Task. Di wizard, konfigurasi parameter berikut.
Nama tugas
Parameter Deskripsi Task Name Masukkan nama deskriptif untuk mengidentifikasi tugas. Nama tidak harus unik. Database sumber
Parameter Deskripsi Select a DMS database instance Pilih instans yang sudah ada untuk mengisi parameter secara otomatis, atau biarkan kosong untuk memasukkan detail secara manual. Database Type Pilih PolarDB-X 2.0. Access Method Pilih Alibaba Cloud Instance. Instance Region Wilayah tempat instans PolarDB-X berada. Database Account Akun database dengan izin SELECT, REPLICATION CLIENT, dan REPLICATION SLAVE (lihat Prasyarat). Database Password Password untuk akun database. Database tujuan
Parameter Deskripsi Select a DMS database instance Pilih instans yang sudah ada untuk mengisi parameter secara otomatis, atau biarkan kosong untuk memasukkan detail secara manual. Database Type Pilih MaxCompute. Access Method Pilih Alibaba Cloud Instance. Instance Region Wilayah tempat proyek MaxCompute tujuan berada. Project Nama proyek MaxCompute. Temukan di halaman Workspaces di konsol DataWorks. accessKeyId ID AccessKey akun yang digunakan untuk terhubung ke MaxCompute. Lihat Dapatkan Pasangan Kunci Akses. accessSecret Rahasia AccessKey akun yang digunakan untuk terhubung ke MaxCompute. Lihat Dapatkan Pasangan Kunci Akses. 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 di-host di Elastic Compute Service (ECS). Untuk database yang dikelola sendiri di pusat data atau cloud pihak ketiga, tambahkan secara manual blok CIDR server DTS. Lihat Tambahkan blok CIDR server DTS.
PeringatanMenambahkan blok CIDR server DTS ke daftar putih atau grup keamanan menimbulkan risiko keamanan. Sebelum melanjutkan, ambil langkah pencegahan: perkuat kredensial, batasi port yang terbuka, autentikasi panggilan API, dan audit aturan daftar putih secara berkala. Atau, sambungkan melalui Express Connect, VPN Gateway, atau Smart Access Gateway untuk menghindari perubahan daftar putih.
Klik OK untuk memberikan izin yang diperlukan ke akun MaxCompute Anda.
Langkah 3: Pilih objek dan konfigurasi opsi sinkronisasi
Konfigurasikan parameter berikut.
| Parameter | Deskripsi |
|---|---|
| Synchronization Types | Pilih Schema Synchronization, Sinkronisasi Data Penuh, dan Sinkronisasi Data Inkremental. Secara default, Sinkronisasi Data Inkremental dipilih; Anda juga harus memilih Schema Synchronization dan Sinkronisasi Data Penuh. DTS terlebih dahulu menyinkronkan data historis (garis dasar untuk sinkronisasi inkremental), lalu mereplikasi perubahan secara berkelanjutan. |
| Partition Definition of Incremental Data Table | Pilih nama partisi untuk tabel data inkremental. Kolom kunci partisi default adalah modifytime_year, modifytime_month, modifytime_day, modifytime_hour, dan modifytime_minute. Lihat Partisi. |
| Processing Mode of Conflicting Tables | Periksa Awal dan Laporkan Error (default): gagal dalam pemeriksaan awal jika tabel tujuan memiliki nama yang sama dengan tabel sumber. Gunakan opsi ini jika tabel tujuan tidak boleh ditimpa. Jika terjadi bentrok nama dan tabel tujuan tidak dapat dihapus atau diganti namanya, gunakan pemetaan nama objek untuk mengganti nama tabel yang disinkronkan. Lihat Pemetaan nama objek. Abaikan Error dan Lanjutkan: melewati pemeriksaan bentrok nama. Jika skema cocok dan kunci primer atau unik suatu catatan sudah ada di tujuan, DTS mempertahankan catatan yang ada selama sinkronisasi penuh dan menimpanya selama sinkronisasi inkremental. Jika skema berbeda, sinkronisasi mungkin gagal atau hanya menulis sebagian kolom—lanjutkan dengan hati-hati. |
| Naming Rules of Additional Columns | DTS menambahkan kolom metadata ke setiap tabel tujuan. Jika kolom ini bertabrakan dengan nama kolom yang sudah ada, sinkronisasi gagal. Pilih New Rule atau Aturan Sebelumnya berdasarkan pengaturan Anda. Periksa bentrok nama sebelum mengonfigurasi parameter ini. Lihat Aturan penamaan untuk kolom tambahan. |
| Capitalization of Object Names in Destination Instance | Mengontrol kapitalisasi nama database, nama tabel, dan nama kolom di MaxCompute. Default: Kebijakan default DTS. Lihat Tentukan kapitalisasi nama objek di instans tujuan. |
| Source Objects | Pilih objek dan klik ikon panah kanan untuk memindahkannya ke Selected Objects. Pilih tabel sebagai objek—DTS tidak menyinkronkan view, trigger, atau prosedur tersimpan. |
| Selected Objects | Klik kanan objek untuk mengganti namanya atau memfilter operasi SQL. Untuk mengganti nama beberapa objek sekaligus, klik Batch Edit. Untuk memfilter data berdasarkan kondisi, klik kanan dan tentukan kondisi WHERE. Lihat Pemetaan nama objek dan Tentukan kondisi filter. |
Langkah 4: Konfigurasi pengaturan lanjutan
Klik Next: Advanced Settings dan konfigurasi:
| Parameter | Deskripsi |
|---|---|
| Monitoring and Alerting | Pilih Yes untuk menerima notifikasi jika tugas gagal atau latensi sinkronisasi melebihi ambang batas. Konfigurasi ambang batas peringatan dan pengaturan notifikasi. Lihat Konfigurasi pemantauan dan peringatan. Pilih No untuk melewati peringatan. |
| Retry Time for Failed Connections | Jendela waktu selama DTS mencoba ulang koneksi yang gagal setelah tugas dimulai. Nilai valid: 10–1.440 menit. Default: 720 menit. Atur minimal 30 menit. Jika beberapa tugas berbagi sumber atau tujuan yang sama, jendela coba ulang terpendek berlaku untuk semua. DTS menagih instance selama masa coba ulang. |
| Configure ETL | Pilih Yes untuk mengonfigurasi aturan ekstrak, transformasi, dan muat (ETL) serta memasukkan pernyataan pemrosesan data. Pilih No untuk melewati ETL. Lihat Apa itu ETL? |
Langkah 5: Jalankan pemeriksaan awal
Klik Next: Save Task Settings and Precheck. Untuk melihat pratinjau parameter OpenAPI untuk tugas ini sebelum menyimpan, arahkan kursor ke tombol tersebut dan klik Preview OpenAPI parameters.
Tunggu hingga pemeriksaan awal selesai.
Jika suatu item gagal, klik View Details, perbaiki masalahnya, lalu klik Precheck Again.
Jika suatu item memicu peringatan yang tidak dapat diabaikan, perbaiki dan jalankan ulang pemeriksaan awal.
Jika item peringatan dapat diabaikan, klik Confirm Alert Details > Ignore > OK, lalu klik Precheck Again. Mengabaikan peringatan dapat menyebabkan ketidakkonsistenan data.
Tunggu hingga Tingkat Keberhasilan mencapai 100%, lalu klik Next: Purchase Instance.
Langkah 6: Beli instance
Di halaman pembelian, lakukan konfigurasi berikut:
| Parameter | Deskripsi |
|---|---|
| Billing Method | Langganan: bayar di muka untuk jangka waktu tetap—lebih hemat biaya untuk penggunaan jangka panjang. Pay-as-you-go: ditagih per jam—cocok untuk penggunaan jangka pendek atau uji coba. Hentikan instance jika tidak lagi digunakan untuk menghindari biaya berkelanjutan. |
| Resource group | Kelompok sumber daya untuk instance ini. Default: kelompok sumber daya default. Lihat Apa itu Resource Management? |
| Instance Class | Tier throughput sinkronisasi. Lihat Kelas instance instansi sinkronisasi data. |
| Subscription Duration | (Hanya untuk penagihan langganan) Panjang jangka waktu: 1–9 bulan, atau 1, 2, 3, atau 5 tahun. |
Baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms, lalu klik Buy and Start > OK.
Tugas muncul di daftar tugas. Pantau perkembangannya di sana.
Skema tabel data inkremental
Jalankan set odps.sql.allow.fullscan=true; di MaxCompute untuk mengizinkan pemindaian tabel penuh pada proyek.DTS menulis perubahan inkremental dari PolarDB-X 2.0 ke tabel data inkremental di MaxCompute. Selain kolom tabel sumber, DTS menambahkan kolom metadata berikut ke setiap tabel data inkremental:

Dalam contoh ini,modifytime_year,modifytime_month,modifytime_day,modifytime_hour, danmodifytime_minutemembentuk kunci partisi, seperti yang dikonfigurasi di langkah 3.
| Kolom | Deskripsi |
|---|---|
record_id | ID unik entri log. Otomatis bertambah untuk setiap entri baru. Untuk operasi UPDATE, DTS menghasilkan dua entri dengan record_id yang sama—satu untuk nilai sebelum update dan satu untuk nilai setelah update. |
operation_flag | Jenis operasi: I (INSERT), U (UPDATE), atau D (DELETE). |
utc_timestamp | Timestamp UTC operasi, diambil dari log biner. |
before_flag | Y jika baris berisi nilai sebelum update; N jika tidak. |
after_flag | Y jika baris berisi nilai setelah update; N jika tidak. |
Cara kerja before_flag dan after_flag
Nilai before_flag dan after_flag bergantung pada jenis operasi:
INSERT: Baris berisi nilai yang baru dimasukkan.
before_flag = N,after_flag = Y.
UPDATE: DTS menghasilkan dua entri log dengan
record_id,operation_flag, danutc_timestampyang sama. Entri pertama berisi nilai sebelum update (before_flag = Y,after_flag = N). Entri kedua berisi nilai setelah update (before_flag = N,after_flag = Y).
DELETE: Baris berisi nilai catatan yang dihapus.
before_flag = Y,after_flag = N.
Gabungkan tabel garis dasar penuh dan tabel data inkremental
Setelah tugas sinkronisasi dimulai, DTS membuat tabel garis dasar penuh dan tabel data inkremental di MaxCompute. Gabungkan kedua tabel tersebut dengan SQL untuk merekonstruksi dataset lengkap pada titik waktu tertentu.
Contoh berikut menggabungkan data untuk tabel bernama customer.

Buat tabel tujuan untuk menyimpan hasil penggabungan, menggunakan skema yang sama dengan tabel sumber. Contoh berikut membuat tabel untuk menyimpan data
customerpada timestamp1565944878:CREATE TABLE `customer_1565944878` ( `id` bigint NULL, `register_time` datetime NULL, `address` string);Gunakan fitur kueri ad hoc untuk menjalankan pernyataan SQL di MaxCompute. Lihat Gunakan fitur kueri ad hoc untuk menjalankan pernyataan SQL. Untuk tipe data yang didukung, lihat Edisi tipe data.
Jalankan SQL berikut untuk menggabungkan tabel garis dasar penuh dan tabel data inkremental. Ganti placeholder dengan nilai Anda.
set odps.sql.allow.fullscan=true; insert overwrite table <result_storage_table> select <col1>, <col2>, <colN> from( select row_number() over(partition by t.<primary_key_column> order by record_id desc, after_flag desc) as row_number, record_id, operation_flag, after_flag, <col1>, <col2>, <colN> from( select incr.record_id, incr.operation_flag, incr.after_flag, incr.<col1>, incr.<col2>, incr.<colN> from <table_log> incr where utc_timestamp< <timestamp> union all select 0 as record_id, 'I' as operation_flag, 'Y' as after_flag, base.<col1>, base.<col2>, base.<colN> from <table_base> base) t) gt where row_number=1 and after_flag='Y'Ganti placeholder berikut:
Placeholder Deskripsi <result_storage_table>Tabel yang menyimpan data gabungan <col1>,<col2>,<colN>Nama kolom tabel yang akan digabung <primary_key_column>Kolom kunci primer tabel yang akan digabung <table_log>Nama tabel data inkremental <table_base>Nama tabel garis dasar penuh <timestamp>Timestamp titik waktu untuk penggabungan Contoh berikut mengambil dataset lengkap
customerpada timestamp1565944878:set odps.sql.allow.fullscan=true; insert overwrite table customer_1565944878 select id, register_time, address from( select row_number() over(partition by t.id order by record_id desc, after_flag desc) as row_number, record_id, operation_flag, after_flag, id, register_time, address from( select incr.record_id, incr.operation_flag, incr.after_flag, incr.id, incr.register_time, incr.address from customer_log incr where utc_timestamp< 1565944878 union all select 0 as record_id, 'I' as operation_flag, 'Y' as after_flag, base.id, base.register_time, base.address from customer_base base) t) gt where gt.row_number= 1 and gt.after_flag= 'Y';Kueri data gabungan dari
customer_1565944878.