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 sinkronisasi | Biaya konfigurasi tugas |
| Sinkronisasi skema dan data penuh | Gratis. |
| Sinkronisasi data tambahan | Dikenakan 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.
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
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.
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.
CatatanTabel tujuan yang memiliki akhiran _base dikenal sebagai tabel baseline penuh.
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.
CatatanUntuk informasi lebih lanjut, lihat Skema Tabel Data Tambahan.
Prosedur
Untuk memastikan bahwa akun sinkronisasi dapat diberi otorisasi, kami menyarankan Anda melakukan langkah-langkah berikut menggunakan akun Alibaba Cloud Anda.
Beli instance sinkronisasi data. Untuk informasi lebih lanjut, lihat Beli Instance DTS.
CatatanDi halaman pembelian, atur parameter Instance Sumber ke MySQL, atur parameter Instance Tujuan ke MaxCompute, dan kemudian atur parameter Topologi Sinkronisasi ke One-way Synchronization.
Masuk ke Konsol DTS.
CatatanJika Anda dialihkan ke Konsol Manajemen Data (DMS), Anda dapat mengklik ikon
di
untuk pergi ke versi sebelumnya dari Konsol DTS.Di panel navigasi di sebelah kiri, klik Data Synchronization.
Di bagian atas halaman Synchronization Tasks, pilih wilayah tempat instance tujuan berada.
Temukan instance sinkronisasi data dan klik Configure Task di kolom Tindakan.
Konfigurasikan instance sumber dan tujuan.

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.
CatatanJika 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.
PentingParameter 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.

Di pojok kanan bawah halaman, klik Set Whitelist and Next.
CatatanAnda 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.
Di pojok kanan bawah halaman, klik Next. Pada langkah ini, izin pada proyek MaxCompute diberikan kepada akun sinkronisasi.

Pilih kebijakan sinkronisasi dan objek yang akan disinkronkan.

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.
CatatanAnda 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.
PeringatanJika 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
untuk memindahkan tabel ke bagian Selected.CatatanAnda 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.
PeringatanSebelum 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.
CatatanJika 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.
CatatanJika 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.
CatatanSaat 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.
Di pojok kanan bawah halaman, klik Precheck.
CatatanSebelum 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.
Tutup kotak dialog Precheck setelah pesan berikut ditampilkan: Precheck Passed. Kemudian, tugas sinkronisasi data dimulai.
Tunggu hingga sinkronisasi awal selesai dan tugas sinkronisasi data memasuki status Synchronizing.
Anda dapat melihat status tugas sinkronisasi data di halaman Synchronization Tasks.

Skema tabel data tambahan
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.

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
|
operation_flag | Tipe operasi. Nilai valid:
|
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.

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.

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.

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.

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);CatatanAnda dapat menggunakan fitur kueri ad-hoc untuk menjalankan pernyataan SQL. Untuk informasi lebih lanjut, lihat Gunakan Fitur Kueri Ad-Hoc untuk Menjalankan Pernyataan SQL (Opsional).
Untuk informasi lebih lanjut tentang tipe data yang didukung oleh MaxCompute, lihat Edisi Tipe Data.
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';Kueri data gabungan dari tabel customer_1565944878.
