All Products
Search
Document Center

Data Transmission Service:Sinkronisasi data RDS for MySQL ke MaxCompute

Last Updated:May 30, 2026

MaxCompute, sebelumnya dikenal sebagai ODPS, adalah solusi data warehousing yang cepat, sepenuhnya terkelola, dan berskala exabyte. Anda dapat menggunakan Data Transmission Service (DTS) untuk menyinkronkan data dari instans ApsaraDB RDS for MySQL ke MaxCompute guna membangun sistem analitik data real-time dengan cepat.

Prasyarat

Anda telah menyelesaikan operasi berikut:

Catatan penting

  • Selama inisialisasi data penuh, DTS mengonsumsi sumber daya baca dan tulis dari database sumber dan tujuan, sehingga meningkatkan beban keduanya. Jika database Anda memiliki performa buruk, spesifikasi rendah, atau traffic bisnis tinggi (misalnya, database sumber memiliki banyak kueri SQL lambat atau tabel tanpa kunci primer, atau database tujuan mengalami deadlock), beban database dapat meningkat hingga menyebabkan gangguan layanan. Sebelum menyinkronkan data, evaluasi performa instans sumber dan tujuan. Kami menyarankan melakukan sinkronisasi data selama jam sepi, misalnya ketika utilisasi CPU kedua instans berada di bawah 30%.

  • Hanya sinkronisasi data tingkat tabel yang didukung.

  • Selama sinkronisasi data, jangan gunakan alat seperti gh-ost atau pt-online-schema-change untuk melakukan perubahan DDL online pada objek sinkronisasi di database sumber. Hal ini dapat menyebabkan kegagalan sinkronisasi.

  • MaxCompute tidak mendukung batasan kunci primer. Jika DTS mengirim ulang data karena masalah jaringan, catatan duplikat mungkin muncul di MaxCompute.

Penagihan

Jenis sinkronisasi

Harga

Sinkronisasi skema dan sinkronisasi data penuh

Gratis.

Sinkronisasi data inkremental

Dikenai biaya. Untuk informasi lebih lanjut, lihat Ikhtisar penagihan.

Tipe instans sumber yang didukung

Database MySQL sumber mendukung tipe instans berikut:

  • Database yang dikelola sendiri pada instance ECS

  • Database yang dikelola sendiri yang terhubung melalui Express Connect, VPN Gateway, atau Smart Access Gateway

  • Database yang dikelola sendiri yang terhubung melalui Database Gateway

  • Instans ApsaraDB RDS for MySQL dalam akun Alibaba Cloud yang sama atau berbeda

Topik ini menggunakan RDS Instance sebagai contoh. Prosedurnya serupa untuk tipe instans sumber lainnya.

Catatan

Jika database sumber adalah database MySQL yang dikelola sendiri, Anda juga harus menyelesaikan langkah-langkah persiapan. Untuk informasi lebih lanjut, lihat Ikhtisar persiapan.

Operasi SQL yang didukung

  • Operasi DDL: ALTER TABLE, ADD COLUMN

  • Operasi DML: INSERT, UPDATE, DELETE

Proses sinkronisasi

  1. Sinkronisasi skema awal.

    DTS menyinkronkan definisi skema tabel dari database sumber ke MaxCompute. Selama inisialisasi, DTS menambahkan sufiks _base ke nama tabel. Misalnya, jika tabel sumber adalah customer, maka tabel di MaxCompute akan menjadi customer_base.

  2. Sinkronisasi data penuh awal.

    DTS menyinkronkan semua data yang ada dari tabel sumber ke tabel _base di MaxCompute. Misalnya, data dari tabel customer disinkronkan ke tabel customer_base. Data ini berfungsi sebagai garis dasar untuk sinkronisasi data inkremental berikutnya.

    Catatan

    Tabel ini juga dikenal sebagai tabel garis dasar penuh.

  3. Sinkronisasi data inkremental.

    DTS membuat tabel data inkremental di MaxCompute dengan sufiks _log, seperti customer_log. Kemudian, DTS menyinkronkan data inkremental dari database sumber ke tabel ini secara real time.

    Catatan

    Untuk informasi lebih lanjut tentang skema tabel data inkremental, lihat Skema tabel log inkremental.

Prosedur

Peringatan

Gunakan Akun Alibaba Cloud Anda untuk melakukan langkah-langkah berikut. Hal ini memastikan bahwa akun sinkronisasi DTS memiliki otorisasi yang tepat.

  1. Beli tugas sinkronisasi data. Untuk informasi lebih lanjut, lihat Beli instans DTS.

    Catatan

    Saat pembelian, atur instans sumber ke MySQL, instans tujuan ke MaxCompute, dan topologi sinkronisasi ke One-way Synchronization.

  2. Masuk ke atau Konsol DTS.

    Catatan

    Jika Anda dialihkan secara otomatis ke konsol Data Management (DMS), Anda dapat mengklik ikon jiqiren di pojok kanan bawah lalu klik 返回旧版 untuk kembali ke konsol DTS klasik.

  3. Di panel navigasi kiri, klik Data Synchronization.

  4. Di bagian atas halaman Synchronization Tasks, pilih wilayah tempat instans tujuan berada.

  5. Temukan tugas sinkronisasi data yang telah Anda beli dan klik Configure Task.

  6. Konfigurasikan instans sumber dan tujuan.

    配置源和目标实例信息

    Bagian

    Parameter

    Deskripsi

    N/A

    Nama tugas sinkronisasi

    DTS secara otomatis menghasilkan nama tugas. Tentukan nama deskriptif agar mudah diidentifikasi. Nama ini tidak perlu unik.

    Detail instans sumber

    Tipe instans

    Pilih RDS Instance.

    Wilayah instans

    Wilayah instans sumber yang Anda pilih saat pembelian. Parameter ini tidak dapat diubah.

    ID Instans

    Pilih ID instans RDS sumber.

    Akun database

    Masukkan akun database untuk instans RDS sumber.

    Catatan

    Jika tipe database instans RDS sumber adalah MySQL 5.5 atau MySQL 5.6, Anda tidak perlu mengonfigurasi Database Account dan Database Password.

    Password database

    Masukkan password untuk akun database.

    Metode koneksi

    Pilih Non-encrypted atau SSL-encrypted sesuai kebutuhan Anda. Jika memilih SSL-encrypted, Anda harus terlebih dahulu mengaktifkan enkripsi SSL pada instans RDS. Untuk informasi selengkapnya, lihat Mengonfigurasi enkripsi SSL.

    Penting

    Saat ini, Anda hanya dapat mengatur Encryption di wilayah Tiongkok daratan dan China (Hong Kong).

    Detail instans tujuan

    Tipe instans

    Nilainya diatur ke MaxCompute dan tidak dapat diubah.

    Wilayah instans

    Wilayah instans tujuan yang Anda pilih saat pembelian. Parameter ini tidak dapat diubah.

    Project

    Masukkan nama Project MaxCompute. Anda dapat menemukannya di halaman Daftar Proyek MaxCompute.

  7. Di pojok kanan bawah, klik Set Whitelist and Next.

    Jika database sumber atau tujuan adalah instans database Alibaba Cloud, seperti ApsaraDB RDS for MySQL atau ApsaraDB for MongoDB, DTS secara otomatis menambahkan alamat IP layanan DTS di wilayah yang sesuai ke daftar putih IP instans database tersebut. Jika database sumber atau tujuan adalah database yang dikelola sendiri pada instance ECS, DTS secara otomatis menambahkan alamat IP layanan DTS di wilayah yang sesuai ke aturan security group instance ECS tersebut. Anda juga harus memastikan bahwa database yang dikelola sendiri tidak membatasi akses dari instance ECS. Jika database dideploy sebagai kluster pada beberapa instance ECS, Anda harus secara manual menambahkan alamat IP layanan DTS di wilayah yang sesuai ke aturan security group masing-masing instance ECS lainnya. Jika database sumber atau tujuan adalah database yang dikelola sendiri di pusat data lokal atau database dari penyedia cloud lain, Anda harus secara manual menambahkan alamat IP layanan DTS di wilayah yang sesuai untuk mengizinkan akses dari server DTS. Untuk daftar alamat IP layanan DTS, lihat Rentang alamat IP server DTS.

    Peringatan

    Menambahkan blok CIDR alamat IP publik server DTS, baik secara otomatis maupun manual, dapat menimbulkan risiko keamanan. Dengan menggunakan produk ini, Anda mengakui dan menerima risiko potensial tersebut. Anda harus menerapkan perlindungan keamanan dasar. Perlindungan ini mencakup tetapi tidak terbatas pada penguatan keamanan password, pembatasan port terbuka untuk blok CIDR, penggunaan otentikasi untuk komunikasi API internal, serta peninjauan dan pembatasan rutin terhadap blok CIDR yang tidak diperlukan. Sebagai alternatif, Anda dapat menghubungkan ke database melalui jaringan internal, seperti jalur sewa, VPN Gateway, atau Smart Access Gateway.

  8. Di pojok kanan bawah, klik Next untuk memberikan izin berikut pada proyek MaxCompute kepada akun sinkronisasi DTS.

  9. Konfigurasikan kebijakan dan objek sinkronisasi.

    Parameter

    Deskripsi

    Definisi partisi tabel data inkremental

    Pilih nama partisi sesuai kebutuhan bisnis Anda. Untuk informasi lebih lanjut tentang partisi, lihat Partisi.

    Inisialisasi sinkronisasi

    Ini mencakup Sinkronisasi Skema Awal dan Sinkronisasi Data Penuh Awal.

    Pilih kedua opsi Initial Schema Synchronization dan Initial Full Data Synchronization. Sebelum sinkronisasi data inkremental, DTS menyinkronkan skema dan data yang ada dari objek sinkronisasi ke database tujuan.

    Resolusi konflik untuk tabel yang sudah ada

    • Precheck and Report Errors: Memeriksa keberadaan tabel dengan nama yang sama di database tujuan. Jika tidak ada tabel tersebut, pemeriksaan awal lolos. Jika ditemukan tabel yang bertabrakan, pemeriksaan awal melaporkan error dan tugas tidak dimulai.

      Catatan

      Jika Anda tidak dapat dengan mudah menghapus atau mengganti nama tabel yang bertabrakan di tujuan, Anda dapat mengatur nama objek di instans tujuan untuk menghindari konflik nama.

    • Ignore Errors and Proceed: Melewati pemeriksaan tabel dengan nama yang sama di database tujuan.

      Peringatan

      Memilih Ignore Errors and Proceed dapat menyebabkan inkonsistensi data dan risiko bisnis. Misalnya:

      • Jika skema tabel identik, catatan dengan nilai kunci primer yang sama di database tujuan dipertahankan selama fase inisialisasi, tetapi akan ditimpa selama fase sinkronisasi inkremental.

      • Jika skema tabel berbeda, inisialisasi data mungkin gagal, hanya sebagian data yang disinkronkan, atau seluruh tugas sinkronisasi gagal.

    Pilih objek sinkronisasi

    Di kotak Source Objects, klik tabel yang ingin Anda sinkronkan, lalu klik ikon untuk memindahkannya ke kotak Selected Objects.

    Catatan
    • Anda hanya dapat memilih tabel sebagai objek sinkronisasi. Anda dapat memilih tabel dari beberapa database.

    • Secara default, nama objek sinkronisasi tetap tidak berubah. Jika Anda perlu menggunakan nama berbeda di instans tujuan, gunakan fitur pemetaan nama objek. Untuk informasi lebih lanjut, lihat Atur nama objek di instans tujuan.

    Pilih aturan kolom tambahan

    Saat DTS menyinkronkan data ke MaxCompute, DTS menambahkan beberapa kolom tambahan ke tabel tujuan. Jika nama kolom tambahan ini bertabrakan dengan kolom yang sudah ada di tabel tujuan, sinkronisasi data akan gagal. Sesuai kebutuhan bisnis Anda, pilih Yes atau No untuk Enable new additional column rules.

    Peringatan

    Sebelum memilih aturan, evaluasi apakah kolom tambahan akan bertabrakan dengan nama kolom yang sudah ada di tabel tujuan. Jika tidak, tugas mungkin gagal atau data hilang. Untuk informasi lebih lanjut tentang aturan dan definisi kolom tambahan, lihat Nama dan definisi kolom tambahan.

    Pemetaan tabel dan kolom

    Ubah nama objek yang disinkronkan di instans tujuan. Untuk informasi lebih lanjut, lihat Pemetaan database, tabel, dan kolom.

    Replikasi tabel temporary selama DDL online DMS

    Jika Anda menggunakan Data Management (DMS) untuk melakukan perubahan DDL online pada database sumber, Anda dapat memilih apakah akan menyinkronkan tabel temporary yang dihasilkan oleh perubahan DDL tersebut.

    • Yes: Menyinkronkan tabel temporary yang dihasilkan oleh perubahan DDL online.

      Catatan

      Jika sejumlah besar data tabel temporary dihasilkan oleh perubahan DDL online, tugas sinkronisasi data mungkin tertunda.

    • No: Tidak menyinkronkan tabel temporary yang dihasilkan oleh perubahan DDL online. Hanya operasi DDL asli dari database sumber yang disinkronkan.

      Catatan

      Opsi ini menyebabkan tabel di database tujuan terkunci.

    Durasi percobaan koneksi ulang

    Jika DTS tidak dapat terhubung ke instans sumber atau tujuan, DTS akan mencoba lagi selama 720 menit (12 jam) secara default. Anda juga dapat menentukan durasi percobaan ulang kustom. Jika DTS berhasil terhubung kembali ke instans sumber atau tujuan dalam durasi yang ditentukan, tugas sinkronisasi akan dilanjutkan secara otomatis. Jika tidak, tugas akan gagal.

    Catatan

    Anda dikenai biaya selama waktu eksekusi tugas selama percobaan koneksi ulang. Sesuaikan durasi percobaan ulang berdasarkan kebutuhan bisnis Anda, atau segera rilis instans DTS setelah instans sumber dan tujuan dirilis.

  10. Setelah menyelesaikan konfigurasi di atas, klik Precheck and Start di pojok kanan bawah halaman.

    Catatan
    • DTS melakukan pemeriksaan awal sebelum tugas sinkronisasi dimulai. Tugas hanya dapat dimulai setelah lolos pemeriksaan ini.

    • Jika pemeriksaan awal gagal, klik ikon 提示 di samping item yang gagal untuk melihat detailnya.

      • Perbaiki masalah berdasarkan penyebabnya dan jalankan kembali pemeriksaan awal.

      • Jika Anda tidak perlu memperbaiki item peringatan, Anda dapat mengklik Ignore atau Ignore and Re-precheck untuk melewati item peringatan tersebut dan menjalankan kembali pemeriksaan awal.

  11. Setelah kotak dialog Precheck menampilkan Precheck Passed, tutup kotak dialog Precheck. Tugas sinkronisasi akan dimulai secara otomatis.

  12. Tunggu hingga tugas selesai inisialisasi dan memasuki status Synchronizing.

    Anda dapat melihat status tugas sinkronisasi data di halaman Data Synchronization.

Skema tabel log inkremental

Catatan

Anda harus menjalankan perintah set odps.sql.allow.fullscan=true; di MaxCompute untuk mengatur properti proyek yang mengizinkan pemindaian tabel penuh.

Saat DTS menyinkronkan data inkremental dari MySQL ke tabel data inkremental di MaxCompute, DTS menyimpan data inkremental beserta beberapa metadata. Berikut adalah contohnya.

Catatan

Pada contoh ini, modifytime_year, modifytime_month, modifytime_day, modifytime_hour, dan modifytime_minute adalah bidang partisi yang ditentukan dalam langkah Konfigurasi kebijakan dan objek sinkronisasi.

Definisi skema

Bidang

Deskripsi

record_id

ID unik dari catatan log inkremental.

Catatan
  • ID bersifat unik dan auto-incrementing.

  • Jika operasinya adalah UPDATE, perubahan tersebut dibagi menjadi dua catatan (satu untuk pra-gambar dan satu untuk post-image), dan kedua catatan memiliki record_id yang sama.

operation_flag

Jenis operasi. Nilai yang valid:

  • I: Operasi INSERT.

  • D: Operasi DELETE.

  • U: Operasi UPDATE.

utc_timestamp

Timestamp operasi (dalam UTC), yaitu timestamp binlog.

before_flag

Menunjukkan apakah semua nilai kolom adalah nilai sebelum pembaruan (pra-gambar). Nilai yang valid: Y atau N.

after_flag

Menunjukkan apakah semua nilai kolom adalah nilai setelah pembaruan (post-image). Nilai yang valid: Y atau N.

Bidang before_flag dan after_flag

Definisi bidang before_flag dan after_flag dalam log inkremental bergantung pada jenis operasi:

  • INSERT

    Untuk operasi INSERT, semua nilai kolom adalah nilai catatan yang baru dimasukkan (nilai post-update). Oleh karena itu, before_flag bernilai N dan after_flag bernilai Y. Berikut adalah contohnya.

  • UPDATE

    Untuk operasi UPDATE, DTS membagi operasi tersebut menjadi dua catatan log inkremental. Kedua catatan ini memiliki nilai record_id, operation_flag, dan utc_timestamp yang sama.

    Catatan log pertama berisi nilai sebelum pembaruan, sehingga before_flag bernilai Y dan after_flag bernilai N. Catatan log kedua berisi nilai setelah pembaruan, sehingga before_flag bernilai N dan after_flag bernilai Y. Berikut adalah contohnya.

  • DELETE

    Untuk operasi DELETE, semua nilai kolom dalam log inkremental adalah nilai yang dihapus, yaitu nilai sebelum pembaruan. Oleh karena itu, before_flag bernilai Y dan after_flag bernilai N. Berikut adalah contohnya.

Contoh: Gabungkan data penuh dan data inkremental

Saat tugas sinkronisasi data selesai, DTS membuat tabel garis dasar penuh dan tabel data inkremental di MaxCompute. Anda kemudian dapat menjalankan perintah SQL di MaxCompute untuk menggabungkan kedua tabel tersebut dan memperoleh data lengkap pada titik waktu tertentu.

Contoh ini menggunakan tabel bernama customer untuk menunjukkan prosesnya. Gambar berikut menunjukkan skemanya.

  1. Di MaxCompute, buat tabel untuk menyimpan hasil penggabungan. Skema tabel ini harus sesuai dengan skema tabel sumber.

    Misalnya, untuk memperoleh data lengkap tabel customer pada timestamp 1565944878, buat tabel dengan nama deskriptif, seperti:

    CREATE TABLE `customer_1565944878` (
        `id` bigint NULL,
        `register_time` datetime NULL,
        `address` string);
    Catatan
    • Anda dapat menjalankan perintah SQL di fitur ad hoc query MaxCompute.

    • Untuk informasi lebih lanjut tentang tipe data MaxCompute, lihat Tipe data.

  2. Di MaxCompute, jalankan perintah SQL berikut untuk menggabungkan tabel garis dasar penuh dengan tabel data inkremental guna memperoleh data lengkap pada titik waktu tertentu.

    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'
    Catatan
    • <result_storage_table>: Nama tabel yang menyimpan set hasil gabungan.

    • <col1>/<col2>/<colN>: Nama kolom dalam tabel yang disinkronkan.

    • <primary_key_column>: Nama kolom kunci primer dalam tabel yang disinkronkan.

    • <table_log>: Nama tabel data inkremental.

    • <table_base>: Nama tabel garis dasar penuh.

    • <timestamp>: Titik waktu untuk mengambil data lengkap.

    Berikut adalah contoh penggabungan tabel untuk memperoleh data lengkap tabel customer pada timestamp 1565944878:

    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';
  3. Setelah perintah dieksekusi, Anda dapat mengkueri data gabungan di tabel customer_1565944878.