全部产品
Search
文档中心

Data Transmission Service:Sinkronkan data dari instance ApsaraDB RDS for MySQL ke proyek MaxCompute

更新时间:Jul 06, 2025

MaxCompute (sebelumnya dikenal sebagai ODPS) adalah platform komputasi cepat dan sepenuhnya dikelola untuk gudang data berskala besar. MaxCompute mampu memproses data dalam skala exabyte. Topik ini menjelaskan cara menyinkronkan data dari instance ApsaraDB RDS for MySQL ke proyek MaxCompute menggunakan Data Transmission Service (DTS).

Prasyarat

Operasi berikut telah dilakukan:

Batasan

  • DTS menggunakan sumber daya baca dan tulis instance RDS sumber dan tujuan selama sinkronisasi data penuh awal. Hal ini dapat meningkatkan beban pada instance RDS. Jika performa instance tidak optimal, spesifikasinya rendah, atau volume datanya besar, layanan database mungkin menjadi tidak tersedia. Sebagai contoh, DTS menggunakan sejumlah besar sumber daya baca dan tulis dalam kasus-kasus berikut: banyak kueri SQL lambat dilakukan pada instance RDS sumber, tabel tidak memiliki kunci utama, atau terjadi deadlock di instance RDS tujuan. Sebelum melakukan sinkronisasi data, evaluasi dampak sinkronisasi terhadap performa instance RDS sumber dan tujuan. Kami menyarankan Anda menyinkronkan data selama jam-jam sepi. Misalnya, Anda dapat menyinkronkan data ketika utilisasi CPU instance RDS sumber dan tujuan kurang dari 30%.

  • Hanya tabel yang dapat dipilih sebagai objek yang akan disinkronkan.

  • Kami menyarankan Anda untuk tidak menggunakan alat seperti gh-ost atau pt-online-schema-change untuk melakukan operasi DDL pada objek selama sinkronisasi data. Jika tidak, sinkronisasi data mungkin gagal.

  • MaxCompute tidak mendukung batasan PRIMARY KEY. Jika terjadi kesalahan jaringan, DTS mungkin menyinkronkan catatan data duplikat ke MaxCompute.

Penagihan

Jenis sinkronisasiBiaya konfigurasi tugas
Sinkronisasi skema dan data penuhGratis.
Sinkronisasi data tambahanDikenakan biaya. Untuk informasi lebih lanjut, lihat Ikhtisar penagihan.

Jenis database sumber yang didukung

Anda dapat menggunakan DTS untuk menyinkronkan data dari jenis-jenis database MySQL berikut:

  • Database mandiri yang di-hosting di Elastic Compute Service (ECS).

  • Database mandiri yang terhubung melalui Express Connect, VPN Gateway, atau Smart Access Gateway.

  • Database mandiri yang terhubung melalui Database Gateway.

  • Instance ApsaraDB RDS for MySQL yang dimiliki oleh akun Alibaba Cloud yang sama dengan proyek MaxCompute atau akun Alibaba Cloud yang berbeda dari proyek MaxCompute.

Dalam contoh ini, sebuah ApsaraDB RDS for MySQL instance digunakan untuk menjelaskan cara mengonfigurasi tugas sinkronisasi data. Anda juga dapat mengikuti prosedur ini untuk mengonfigurasi tugas sinkronisasi data untuk jenis-jenis database MySQL lainnya.

Catatan

Jika database sumber Anda adalah database MySQL mandiri, Anda harus menyiapkan lingkungan jaringan untuk database tersebut. Untuk informasi lebih lanjut, lihat Ikhtisar Persiapan.

Operasi SQL yang dapat disinkronkan

  • Operasi DDL: ALTER TABLE ADD COLUMN.

  • Operasi DML: INSERT, UPDATE, dan DELETE.

Proses sinkronisasi

  1. Sinkronisasi Skema Awal.

    DTS menyinkronkan skema objek yang diperlukan dari database sumber ke MaxCompute. Selama sinkronisasi skema awal, DTS menambahkan akhiran _base ke nama tabel sumber. Sebagai contoh, jika nama tabel sumber adalah customer, nama tabel di MaxCompute adalah customer_base.

  2. Sinkronisasi Data Penuh Awal.

    DTS menyinkronkan data historis tabel dari database sumber ke tabel tujuan di MaxCompute. Sebagai contoh, tabel customer di database sumber disinkronkan ke tabel customer_base di MaxCompute. Data ini merupakan dasar untuk sinkronisasi tambahan selanjutnya.

    Catatan

    Tabel tujuan yang memiliki akhiran _base dikenal sebagai tabel baseline penuh.

  3. Sinkronisasi Data Tambahan.

    DTS membuat tabel data tambahan di MaxCompute. Nama tabel data tambahan memiliki akhiran _log, seperti customer_log. Kemudian, DTS menyinkronkan data tambahan yang dihasilkan di database sumber ke tabel data tambahan.

    Catatan

    Untuk informasi lebih lanjut, lihat Skema Tabel Data Tambahan.

Prosedur

Peringatan

Untuk memastikan bahwa akun sinkronisasi dapat diberi otorisasi, kami menyarankan Anda melakukan langkah-langkah berikut menggunakan akun Alibaba Cloud Anda.

  1. Beli instance sinkronisasi data. Untuk informasi lebih lanjut, lihat Beli Instance DTS.

    Catatan

    Di halaman pembelian, atur parameter Instance Sumber ke MySQL, atur parameter Instance Tujuan ke MaxCompute, dan kemudian atur parameter Topologi Sinkronisasi ke One-way Synchronization.

  2. Masuk ke Konsol DTS.

    Catatan

    Jika Anda dialihkan ke Konsol Manajemen Data (DMS), Anda dapat mengklik ikon old di image untuk pergi ke versi sebelumnya dari Konsol DTS.

  3. Di panel navigasi di sebelah kiri, klik Data Synchronization.

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

  5. Temukan instance sinkronisasi data dan klik Configure Task di kolom Tindakan.

  6. Konfigurasikan instance sumber dan tujuan.

    Configure the source and destination instances

    Bagian

    Parameter

    Deskripsi

    Tidak Ada

    Nama Tugas Sinkronisasi

    Nama tugas yang dibuat oleh DTS. Kami menyarankan Anda menentukan nama deskriptif yang mudah diidentifikasi. Anda tidak perlu menggunakan nama tugas unik.

    Detail Instance Sumber

    Jenis Instance

    Jenis instance dari instance sumber. Pilih RDS Instance.

    Wilayah Instance

    Wilayah sumber yang Anda pilih di halaman pembelian. Anda tidak dapat mengubah nilai parameter ini.

    ID Instance

    ID instance ApsaraDB RDS for MySQL sumber.

    Akun Database

    Akun database dari instance ApsaraDB RDS for MySQL sumber.

    Catatan

    Jika mesin database dari instance ApsaraDB RDS for MySQL adalah MySQL 5.5 atau MySQL 5.6, Anda tidak perlu mengonfigurasi parameter Database Account dan Database Password.

    Kata Sandi Database

    Kata sandi akun database.

    Enkripsi

    Menentukan apakah akan mengenkripsi koneksi ke instance sumber. Pilih Non-encrypted atau SSL-encrypted berdasarkan kebutuhan bisnis dan keamanan Anda. Jika Anda memilih SSL-encrypted, Anda harus mengaktifkan enkripsi SSL untuk instance ApsaraDB RDS for MySQL sebelum mengonfigurasi tugas sinkronisasi data. Untuk informasi lebih lanjut, lihat Konfigurasikan enkripsi SSL untuk instance ApsaraDB RDS for MySQL.

    Penting

    Parameter Encryption hanya tersedia di wilayah-wilayah di daratan Tiongkok dan wilayah China (Hong Kong).

    Detail Instance Tujuan

    Jenis Instance

    Jenis instance dari instance tujuan. Parameter ini diatur ke MaxCompute dan tidak dapat diubah.

    Wilayah Instance

    Wilayah tujuan yang Anda pilih di halaman pembelian. Anda tidak dapat mengubah nilai parameter ini.

    Proyek

    Nama proyek MaxCompute. Untuk melihat nama proyek, masuk ke Konsol DataWorks dan pilih Compute Engines > MaxCompute di panel navigasi di sebelah kiri. Anda dapat melihat nama proyek di halaman Proyek. MaxCompute projects

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

    Catatan

    Anda tidak perlu memodifikasi pengaturan keamanan untuk instance ApsaraDB (seperti ApsaraDB RDS for MySQL dan ApsaraDB for MongoDB instance) dan database mandiri yang di-hosting di ECS. DTS secara otomatis menambahkan blok CIDR server DTS ke daftar putih IP instance ApsaraDB atau aturan keamanan instance ECS. Untuk informasi lebih lanjut, lihat Tambahkan Blok CIDR Server DTS.

  8. Di pojok kanan bawah halaman, klik Next. Pada langkah ini, izin pada proyek MaxCompute diberikan kepada akun sinkronisasi.

    Grant permissions to an account

  9. Pilih kebijakan sinkronisasi dan objek yang akan disinkronkan.

    Select objects to be synchronized

    Parameter atau Pengaturan

    Deskripsi

    Definisi Partisi Tabel Data Tambahan

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

    Inisialisasi Sinkronisasi

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

    Pilih kedua opsi Initial Schema Synchronization dan Initial Full Data Synchronization. Dalam hal ini, DTS menyinkronkan skema dan data historis objek yang diperlukan dan kemudian menyinkronkan data tambahan.

    Mode Pemrosesan di Tabel Tujuan yang Sudah Ada

    • Pre-check and Intercept: memeriksa apakah database tujuan berisi tabel yang memiliki nama yang sama dengan tabel di database sumber. Jika database sumber dan tujuan tidak berisi nama tabel yang identik, pemeriksaan pendahuluan berhasil. Jika tidak, kesalahan dikembalikan selama pemeriksaan pendahuluan dan tugas sinkronisasi data tidak dapat dimulai.

      Catatan

      Anda dapat menggunakan fitur pemetaan nama objek untuk mengganti nama tabel yang disinkronkan ke database tujuan. Anda dapat menggunakan fitur ini jika database sumber dan tujuan berisi nama tabel yang identik dan tabel di database tujuan tidak dapat dihapus atau diganti namanya. Untuk informasi lebih lanjut, lihat Ganti Nama Objek yang Akan Disinkronkan.

    • Ignore: melewati pemeriksaan pendahuluan untuk nama tabel yang identik di database sumber dan tujuan.

      Peringatan

      Jika Anda memilih Ignore, konsistensi data tidak dijamin, dan bisnis Anda mungkin terpapar risiko potensial.

      • Selama sinkronisasi data awal, DTS tidak menyinkronkan catatan data yang memiliki kunci utama yang sama dengan catatan data di database tujuan. Ini terjadi jika database sumber dan tujuan memiliki skema yang sama. Namun, DTS menyinkronkan catatan data ini selama sinkronisasi data tambahan.

      • Jika database sumber dan tujuan memiliki skema yang berbeda, sinkronisasi data awal mungkin gagal. Dalam hal ini, hanya beberapa kolom yang disinkronkan atau tugas sinkronisasi data gagal.

    Pilih Objek yang Akan Disinkronkan

    Pilih satu atau lebih tabel dari bagian Available dan klik ikon Rightwards arrow untuk memindahkan tabel ke bagian Selected.

    Catatan
    • Anda dapat memilih tabel dari beberapa database sebagai objek yang akan disinkronkan.

    • Secara default, setelah objek disinkronkan ke database tujuan, nama objek tetap tidak berubah. Anda dapat menggunakan fitur pemetaan nama objek untuk mengganti nama objek yang disinkronkan ke database tujuan. Untuk informasi lebih lanjut, lihat Ganti Nama Objek yang Akan Disinkronkan.

    Apakah akan Mengaktifkan Aturan Penamaan Baru untuk Kolom Tambahan

    Setelah DTS menyinkronkan data ke MaxCompute, DTS menambahkan kolom tambahan ke tabel tujuan. Jika nama kolom tambahan sama dengan nama kolom yang ada di tabel tujuan, sinkronisasi data gagal. Pilih Yes atau No untuk menentukan apakah Anda ingin mengaktifkan aturan penamaan baru untuk kolom tambahan.

    Peringatan

    Sebelum Anda menentukan parameter ini, periksa apakah kolom tambahan dan kolom yang ada di tabel tujuan memiliki konflik nama. Untuk informasi lebih lanjut, lihat Aturan Penamaan untuk Kolom Tambahan.

    Ganti Nama Basis Data dan Tabel

    Anda dapat menggunakan fitur pemetaan nama objek untuk mengganti nama objek yang disinkronkan ke instance tujuan. Untuk informasi lebih lanjut, lihat Pemetaan Nama Objek.

    Replikasi Tabel Sementara Saat DMS Melakukan Operasi DDL

    Jika Anda menggunakan DMS untuk melakukan operasi DDL online pada database sumber, Anda dapat menentukan apakah akan menyinkronkan tabel sementara yang dihasilkan oleh operasi DDL online.

    • Yes: DTS menyinkronkan data dari tabel sementara yang dihasilkan oleh operasi DDL online.

      Catatan

      Jika operasi DDL online menghasilkan sejumlah besar data, tugas sinkronisasi data mungkin tertunda.

    • No: DTS tidak menyinkronkan data dari tabel sementara yang dihasilkan oleh operasi DDL online. Hanya data DDL asli dari database sumber yang disinkronkan.

      Catatan

      Jika Anda memilih Tidak, tabel di database tujuan mungkin terkunci.

    Waktu Ulangi Koneksi Gagal

    Secara default, jika DTS gagal terhubung ke database sumber atau tujuan, DTS mencoba kembali dalam waktu 720 menit (12 jam) berikutnya. Anda dapat menentukan waktu percobaan ulang berdasarkan kebutuhan Anda. Jika DTS berhasil tersambung kembali ke database sumber dan tujuan dalam waktu yang ditentukan, DTS melanjutkan tugas sinkronisasi data. Jika tidak, tugas sinkronisasi data gagal.

    Catatan

    Saat DTS mencoba kembali koneksi, Anda akan dikenakan biaya untuk instance DTS. Kami menyarankan Anda menentukan waktu percobaan ulang berdasarkan kebutuhan bisnis Anda. Anda juga dapat melepaskan instance DTS sesegera mungkin setelah instance sumber dan tujuan dilepaskan.

  10. Di pojok kanan bawah halaman, klik Precheck.

    Catatan
    • Sebelum Anda dapat memulai tugas sinkronisasi data, DTS melakukan pemeriksaan pendahuluan. Anda hanya dapat memulai tugas sinkronisasi data setelah tugas tersebut lulus pemeriksaan pendahuluan.

    • Jika tugas gagal lulus pemeriksaan pendahuluan, Anda dapat mengklik ikon 提示 di sebelah setiap item yang gagal untuk melihat detailnya.

      • Setelah Anda menyelesaikan masalah berdasarkan detailnya, mulai pemeriksaan pendahuluan baru.

      • Jika Anda tidak perlu menyelesaikan masalah, ignore the failed items dan initiate a new precheck.

  11. Tutup kotak dialog Precheck setelah pesan berikut ditampilkan: Precheck Passed. Kemudian, tugas sinkronisasi data dimulai.

  12. Tunggu hingga sinkronisasi awal selesai dan tugas sinkronisasi data memasuki status Synchronizing.

    Anda dapat melihat status tugas sinkronisasi data di halaman Synchronization Tasks. View the status of a data synchronization task

Skema tabel data tambahan

Catatan

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

DTS menyinkronkan data tambahan yang dihasilkan di database MySQL sumber ke tabel data tambahan di MaxCompute. Tabel data tambahan menyimpan data tambahan dan metadata spesifik. Gambar berikut menunjukkan skema tabel data tambahan.

Schema of an incremental data table

Catatan

Dalam contoh ini, bidang modifytime_year, modifytime_month, modifytime_day, modifytime_hour, dan modifytime_minute membentuk kunci partisi. Bidang-bidang ini ditentukan dalam langkah Pilih Kebijakan Sinkronisasi dan Objek yang Akan Disinkronkan.

Skema Tabel Data Tambahan

Bidang

Deskripsi

record_id

ID unik entri log tambahan.

Catatan
  • ID bertambah otomatis untuk setiap entri log baru.

  • Jika operasi UPDATE dilakukan, DTS menghasilkan dua entri log tambahan untuk mencatat nilai pra-pembaruan dan pasca-pembaruan. Dua entri log tambahan ini memiliki ID rekaman yang sama.

operation_flag

Tipe operasi. Nilai valid:

  • I: operasi INSERT

  • D: operasi DELETE

  • U: operasi UPDATE

utc_timestamp

Timestamp operasi, dalam UTC. Ini juga merupakan timestamp file log biner.

before_flag

Menunjukkan apakah nilai kolom adalah nilai pra-pembaruan. Nilai valid: Y dan N.

after_flag

Menunjukkan apakah nilai kolom adalah nilai pasca-pembaruan. Nilai valid: Y dan N.

Informasi tambahan tentang bidang before_flag dan after_flag

Bidang before_flag dan after_flag dari entri log tambahan didefinisikan tergantung pada jenis operasi.

  • INSERT

    Untuk operasi INSERT, nilai kolom adalah nilai catatan baru yang dimasukkan (nilai pasca-pembaruan). Nilai bidang before_flag adalah N dan nilai bidang after_flag adalah Y.

    Example of an INSERT operation

  • UPDATE

    DTS menghasilkan dua entri log tambahan untuk operasi UPDATE. Dua entri log tambahan ini memiliki nilai yang sama untuk bidang record_id, operation_flag, dan utc_timestamp.

    Entri log pertama mencatat nilai pra-pembaruan, sehingga nilai bidang before_flag adalah Y dan nilai bidang after_flag adalah N. Entri log kedua mencatat nilai pasca-pembaruan, sehingga nilai bidang before_flag adalah N dan nilai bidang after_flag adalah Y.

    Example of an UPDATE operation

  • DELETE

    Untuk operasi DELETE, nilai kolom adalah nilai catatan yang dihapus (nilai pra-pembaruan). Nilai bidang before_flag adalah Y dan nilai bidang after_flag adalah N.

    Example of a DELETE operation

Gabungkan tabel baseline penuh dan tabel data tambahan

Setelah tugas sinkronisasi data dimulai, DTS membuat tabel baseline penuh dan tabel data tambahan di MaxCompute. Anda dapat menggunakan pernyataan SQL untuk menggabungkan kedua tabel tersebut. Hal ini memungkinkan Anda mendapatkan data lengkap pada titik waktu tertentu.

Bagian ini menjelaskan cara menggabungkan data untuk tabel bernama customer. Gambar berikut menunjukkan skema tabel customer.

Schema of the customer table

  1. Buat tabel di MaxCompute berdasarkan skema tabel sumber. Tabel ini digunakan untuk menyimpan data gabungan.

    Sebagai contoh, Anda dapat memperoleh data lengkap tabel customer pada titik waktu 1565944878. Jalankan pernyataan SQL berikut untuk membuat tabel yang diperlukan:

    CREATE TABLE `customer_1565944878` (
        `id` bigint NULL,
        `register_time` datetime NULL,
        `address` string);
    Catatan
  2. Jalankan pernyataan SQL berikut di MaxCompute untuk menggabungkan tabel baseline penuh dan tabel data tambahan serta mendapatkan 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 data gabungan.

    • <col1>/<col2>/<colN>: nama kolom dalam tabel yang akan digabungkan.

    • <primary_key_column>: nama kolom kunci utama dalam tabel yang akan digabungkan.

    • <table_log>: nama tabel data tambahan.

    • <table_base>: nama tabel baseline penuh.

    • <timestamp>: timestamp yang dihasilkan saat data lengkap diperoleh.

    Jalankan pernyataan SQL berikut untuk mendapatkan data lengkap tabel customer pada titik waktu 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. Kueri data gabungan dari tabel customer_1565944878.

    Query the merged data