All Products
Search
Document Center

Data Transmission Service:Menyinkronkan data dari instans ApsaraDB RDS ke proyek MaxCompute

Last Updated:Sep 04, 2026

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

Prasyarat

Anda telah menyelesaikan operasi berikut:

Peringatan

  • Selama inisialisasi data penuh, DTS mengonsumsi sumber daya baca dan tulis dari database sumber dan tujuan, yang dapat meningkatkan beban database. Ketika database memiliki performa rendah, spesifikasi rendah, atau beban kerja tinggi (misalnya, banyak pernyataan SQL lambat, tabel tanpa primary key, atau deadlock pada database tujuan), tekanan pada database dapat meningkat lebih lanjut dan layanan mungkin menjadi tidak tersedia. Oleh karena itu, evaluasi performa database sumber dan tujuan sebelum memulai sinkronisasi data, dan lakukan sinkronisasi selama jam sepi (misalnya, saat Beban CPU kedua database 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 operasi DDL Online pada objek sinkronisasi di database sumber. Jika tidak, tugas sinkronisasi akan gagal.

  • MaxCompute tidak mendukung kendala PRIMARY KEY. 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 selengkapnya, lihat Ikhtisar penagihan.

Tipe instans sumber yang didukung

Sinkronisasi data didukung untuk jenis database MySQL berikut:

  • Database yang dikelola sendiri pada instance ECS

  • Database yang dikelola sendiri yang terhubung melalui jalur sewa, VPN Gateway, atau Smart Access Gateway

  • Database yang dikelola sendiri yang terhubung melalui Database Gateway

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

Topik ini menggunakan RDS Instance sebagai contoh untuk menjelaskan prosedur konfigurasi. Prosedurnya serupa untuk tipe instans database sumber lainnya.

Catatan

Jika database sumber adalah database MySQL yang dikelola sendiri, Anda juga harus menyelesaikan langkah-langkah persiapan. Untuk informasi selengkapnya, 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 yang akan disinkronkan dari database sumber ke MaxCompute. Selama inisialisasi, DTS menambahkan sufiks `_base` ke nama tabel. Misalnya, jika tabel sumber adalah `customer`, maka tabel di MaxCompute menjadi `customer_base`.

  2. Sinkronisasi data penuh awal.

    DTS menyinkronkan semua data historis dari tabel di database sumber ke tabel `_base` di MaxCompute. Misalnya, data disinkronkan dari tabel `customer` di database sumber ke tabel `customer_base` di MaxCompute. 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 log inkremental di MaxCompute. Nama tabel adalah nama tabel tujuan dengan sufiks `_log`, misalnya `customer_log`. DTS kemudian menyinkronkan data inkremental dari database sumber ke tabel ini secara real time.

    Catatan

    Untuk informasi selengkapnya tentang struktur tabel log inkremental, lihat Skema tabel log inkremental.

Prosedur

Peringatan

Untuk memastikan akun sinkronisasi DTS dapat diberi otorisasi, lengkapi langkah-langkah berikut menggunakan akun root Anda.

  1. Beli instansi sinkronisasi data. Untuk informasi selengkapnya, lihat Beli instans DTS.

    Catatan

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

  2. Masuk ke Konsol Data Transmission Service.
    Catatan

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

  3. Di panel navigasi kiri, klik Data Synchronization.
  4. Di bilah navigasi atas halaman Data Synchronization, pilih wilayah tempat instans tujuan berada.
  5. Temukan instansi sinkronisasi data yang telah dibeli dan klik Configure Synchronization Channel.
  6. Konfigurasikan instans sumber dan tujuan.

    Kategori

    Konfigurasi

    Deskripsi

    Tidak ada

    Synchronization Job Name

    DTS secara otomatis menghasilkan nama untuk tugas sinkronisasi. Kami menyarankan agar Anda menentukan nama deskriptif agar mudah diidentifikasi. Nama tersebut tidak harus unik.

    Informasi Instans Sumber

    Instance Type

    Pilih RDS Instance.

    Instance Region

    Wilayah instans sumber yang Anda pilih saat membeli instans sinkronisasi data. Ini tidak dapat diubah.

    Instance ID

    Pilih ID instans RDS yang berfungsi sebagai sumber data.

    Database Account

    Masukkan akun database instans RDS sumber.

    Catatan

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

    Database Password

    Masukkan password yang sesuai dengan akun database.

    Connection Method

    Pilih Unencrypted Connection atau Secure SSL Connection sesuai kebutuhan. Jika Anda memilih Secure SSL Connection, Anda harus terlebih dahulu mengaktifkan fitur enkripsi SSL untuk instans RDS. Untuk informasi selengkapnya, lihat Setel enkripsi SSL.

    Penting

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

    Informasi Instans Tujuan

    Instance Type

    Diatur ke MaxCompute dan tidak dapat diubah.

    Instance Region

    Wilayah instans tujuan yang Anda pilih saat membeli instans sinkronisasi data. Ini tidak dapat diubah.

    Project

    Masukkan Project instans MaxCompute. Anda dapat menemukannya di halaman Daftar Workspace MaxCompute.MaxCompute workspace list

  7. Di pojok kanan bawah halaman, klik Authorize Whitelist And Go To Next Step.

    Catatan

    Jika database sumber atau tujuan adalah instans database Alibaba Cloud, seperti instans ApsaraDB RDS for MySQL, instans ApsaraDB for MongoDB, atau database yang dikelola sendiri pada instance ECS, DTS secara otomatis menambahkan alamat IP layanan DTS di wilayah yang sesuai ke daftar putih instans database Alibaba Cloud atau aturan keamanan instance ECS. Anda tidak perlu menambahkan alamat IP secara manual. Untuk informasi selengkapnya, lihat Blok alamat IP server DTS.

  8. Di pojok kanan bawah halaman, klik Next. Kemudian, berikan izin akun sinkronisasi DTS pada proyek MaxCompute, seperti yang ditunjukkan pada gambar berikut.

    账号授权

  9. Konfigurasikan kebijakan dan objek sinkronisasi.

    同步对象

    Konfigurasi

    Deskripsi

    Incremental Log Table Partition Definition

    Pilih nama partisi sesuai kebutuhan. Untuk informasi selengkapnya tentang partisi, lihat Partition.

    Synchronization Initialization

    Inisialisasi sinkronisasi mencakup sinkronisasi skema awal dan sinkronisasi data penuh awal.

    Pilih kedua opsi Initial Schema Synchronization dan Initial Full Data Synchronization. DTS kemudian akan menyinkronkan skema dan data historis objek yang dipilih sebelum menyinkronkan data inkremental.

    Processing Mode for Existing Tables in the Destination

    • Precheck And Block On Error: Pemeriksaan Awal berhasil jika database tujuan tidak berisi tabel yang memiliki nama yang sama dengan tabel di database sumber. Jika tidak, kesalahan akan dikembalikan selama Pemeriksaan Awal dan tugas sinkronisasi data tidak dapat dimulai.

      Catatan

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

    • Ignore Errors And Continue Execution: Melewati pemeriksaan untuk tabel dengan nama yang sama di database tujuan.

      Peringatan

      Memilih Ignore Errors And Continue Execution dapat menyebabkan ketidakkonsistenan data dan menimbulkan risiko bagi bisnis Anda:

      • Jika struktur tabel konsisten dan suatu catatan di database tujuan memiliki nilai kunci primer yang sama dengan catatan di database sumber, catatan di database tujuan akan dipertahankan selama inisialisasi. Selama sinkronisasi inkremental, catatan di database tujuan akan ditimpa.

      • Jika struktur tabel tidak konsisten, inisialisasi data mungkin gagal. Hal ini dapat mengakibatkan hanya sebagian data yang disinkronkan atau kegagalan sinkronisasi total.

    Select Synchronization Objects

    Dari kotak Source Objects, pilih satu atau beberapa tabel untuk disinkronkan dan klik ikon Right arrow 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 ingin nama objek berbeda di instans tujuan, gunakan fitur pemetaan nama objek. Untuk informasi selengkapnya, lihat Atur nama objek sinkronisasi di instans tujuan.

    Select Additional Column Rule

    Saat DTS menyinkronkan data ke MaxCompute, kolom tambahan ditambahkan ke tabel tujuan. Jika nama kolom tambahan ini bertabrakan dengan nama kolom yang sudah ada, tugas sinkronisasi data akan gagal. Sesuai kebutuhan bisnis Anda, atur Enable New Additional Column Rule ke Yes atau No.

    Peringatan

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

    Ubah nama mapping

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

    Whether to copy temporary tables to the destination database during an online DDL operation on the source table using DMS

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

    • Yes: Menyinkronkan tabel sementara yang dihasilkan oleh perubahan DDL Online.

      Catatan

      Jika sejumlah besar data tabel sementara dihasilkan oleh perubahan DDL Online, tugas sinkronisasi data mungkin tertunda.

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

      Catatan

      Opsi ini menyebabkan tabel di database tujuan terkunci.

    Retry Time for Failed Connections to Source and Destination Databases

    Jika DTS tidak dapat terhubung ke instans sumber atau tujuan, DTS akan mencoba kembali 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 berdasarkan waktu eksekusi tugas selama percobaan ulang koneksi. Sesuaikan durasi percobaan ulang berdasarkan kebutuhan bisnis Anda, atau rilis instans DTS segera setelah instans sumber dan tujuan dirilis.

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

    Catatan
    • Sebelum tugas sinkronisasi resmi dimulai, Pemeriksaan Awal akan dilakukan. Tugas sinkronisasi hanya dapat dimulai setelah Pemeriksaan Awal berhasil.

    • Jika Pemeriksaan Awal gagal, klik ikon Prompt di samping item pemeriksaan tertentu untuk melihat detail kegagalannya.

      • Ikuti petunjuk untuk memperbaiki masalah dan jalankan Pemeriksaan Awal lagi.

      • Jika Anda tidak perlu memperbaiki item peringatan, Anda juga dapat memilih Ignore, Ignore Warning Items and Rerun Precheck untuk melewati item peringatan dan menjalankan Pemeriksaan Awal lagi.

  11. Setelah muncul pesan Precheck Passed di kotak dialog Precheck, tutup kotak dialog tersebut. Tugas sinkronisasi akan dimulai secara otomatis.
  12. Tunggu hingga saluran sinkronisasi diinisialisasi dan tugas memasuki status Synchronizing.
    Halaman Data Synchronization menampilkan status tugas sinkronisasi data.View sync job status

Skema tabel log inkremental

Catatan

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

Saat DTS menyinkronkan data inkremental dari MySQL ke tabel log inkremental di MaxCompute, metadata disimpan selain data inkremental, seperti yang ditunjukkan pada contoh berikut.

增量日志表结构

Catatan

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

Definisi skema

Bidang

Deskripsi

record_id

ID catatan log inkremental, yang merupakan pengenal unik untuk log tersebut.

Catatan
  • Nilai ID bersifat unik dan bertambah.

  • Jika tipe operasi log inkremental adalah UPDATE, pembaruan inkremental dibagi menjadi dua catatan (mencatat nilai sebelum dan sesudah pembaruan), dan nilai record_id sama untuk keduanya.

operation_flag

Tipe operasi. Nilai yang valid:

  • I: Operasi INSERT.

  • D: Operasi DELETE.

  • U: Operasi UPDATE.

utc_timestamp

Timestamp operasi, yaitu timestamp log biner (dalam UTC).

before_flag

Menunjukkan apakah semua nilai kolom adalah nilai sebelum pembaruan. Nilai yang valid: Y atau N.

after_flag

Menunjukkan apakah semua nilai kolom adalah nilai setelah pembaruan. Nilai yang valid: Y atau N.

Informasi tambahan tentang bidang before_flag dan after_flag

Untuk tipe operasi yang berbeda, bidang before_flag dan after_flag dalam log inkremental didefinisikan sebagai berikut:

  • INSERT

    Ketika tipe operasi adalah INSERT, semua nilai kolom adalah nilai catatan yang baru dimasukkan. Ini adalah nilai setelah pembaruan. Oleh karena itu, nilai `before_flag` adalah N, dan nilai `after_flag` adalah Y, seperti yang ditunjukkan pada contoh berikut.

    INSERT操作示例

  • UPDATE

    Ketika tipe operasi adalah UPDATE, DTS membagi operasi UPDATE menjadi dua catatan log inkremental. Kedua catatan log ini memiliki nilai yang sama untuk `record_id`, `operation_flag`, dan `utc_timestamp`.

    Catatan log pertama berisi nilai sebelum pembaruan, sehingga nilai `before_flag` adalah Y dan nilai `after_flag` adalah N. Catatan log kedua berisi nilai setelah pembaruan, sehingga nilai `before_flag` adalah N dan nilai `after_flag` adalah Y, seperti yang ditunjukkan pada contoh berikut.

    UPDATE操作示例

  • DELETE

    Ketika tipe operasi adalah DELETE, semua nilai kolom dalam catatan log inkremental adalah nilai yang dihapus. Artinya nilai kolom tidak berubah. Oleh karena itu, nilai `before_flag` adalah Y, dan nilai `after_flag` adalah N, seperti yang ditunjukkan pada contoh berikut.

    DELETE操作示例

Contoh penggabungan data penuh

Setelah operasi sinkronisasi data, DTS membuat tabel garis dasar penuh dan tabel log inkremental untuk setiap tabel di MaxCompute. Anda dapat menggunakan perintah SQL MaxCompute untuk menggabungkan kedua tabel ini guna mendapatkan data penuh pada titik waktu tertentu.

Contoh ini menggunakan tabel `customer` (dengan struktur berikut) untuk menjelaskan prosedurnya.

customer表结构

  1. Berdasarkan struktur tabel yang akan disinkronkan di database sumber, buat tabel di MaxCompute untuk menyimpan hasil penggabungan.

    Misalnya, untuk mendapatkan data penuh tabel `customer` pada timestamp 1565944878, buat tabel data berikut agar mudah diidentifikasi oleh bisnis:

    CREATE TABLE `customer_1565944878` (
        `id` bigint NULL,
        `register_time` datetime NULL,
        `address` string);
    Catatan
  2. Jalankan perintah SQL berikut di MaxCompute untuk menggabungkan tabel garis dasar penuh dan tabel log inkremental guna mendapatkan data penuh tabel 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 penggabungan penuh.

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

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

    • <table_log>: Nama tabel log inkremental.

    • <table_base>: Nama tabel garis dasar penuh.

    • <timestamp>: Titik waktu untuk mendapatkan data penuh.

    Untuk menggabungkan tabel data dan mendapatkan data penuh tabel `customer` pada timestamp 1565944878, gunakan contoh berikut:

    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 di atas dieksekusi, Anda dapat mengkueri data yang digabungkan di tabel `customer_1565944878`.

    查询merge后的数据