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.
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
Sinkronisasi skema awal.
DTS menyinkronkan definisi skema tabel dari database sumber ke MaxCompute. Selama inisialisasi, DTS menambahkan sufiks
_baseke nama tabel. Misalnya, jika tabel sumber adalahcustomer, maka tabel di MaxCompute akan menjadicustomer_base.Sinkronisasi data penuh awal.
DTS menyinkronkan semua data yang ada dari tabel sumber ke tabel
_basedi MaxCompute. Misalnya, data dari tabelcustomerdisinkronkan ke tabelcustomer_base. Data ini berfungsi sebagai garis dasar untuk sinkronisasi data inkremental berikutnya.CatatanTabel ini juga dikenal sebagai tabel garis dasar penuh.
Sinkronisasi data inkremental.
DTS membuat tabel data inkremental di MaxCompute dengan sufiks
_log, seperticustomer_log. Kemudian, DTS menyinkronkan data inkremental dari database sumber ke tabel ini secara real time.CatatanUntuk informasi lebih lanjut tentang skema tabel data inkremental, lihat Skema tabel log inkremental.
Prosedur
Gunakan Akun Alibaba Cloud Anda untuk melakukan langkah-langkah berikut. Hal ini memastikan bahwa akun sinkronisasi DTS memiliki otorisasi yang tepat.
Beli tugas sinkronisasi data. Untuk informasi lebih lanjut, lihat Beli instans DTS.
CatatanSaat pembelian, atur instans sumber ke MySQL, instans tujuan ke MaxCompute, dan topologi sinkronisasi ke One-way Synchronization.
-
Masuk ke atau Konsol DTS.
CatatanJika Anda dialihkan secara otomatis ke konsol Data Management (DMS), Anda dapat mengklik ikon
di pojok kanan bawah lalu klik
untuk kembali ke konsol DTS klasik. -
Di panel navigasi kiri, klik Data Synchronization.
-
Di bagian atas halaman Synchronization Tasks, pilih wilayah tempat instans tujuan berada.
-
Temukan tugas sinkronisasi data yang telah Anda beli dan klik Configure Task.
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.
CatatanJika 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.
PentingSaat 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.
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.
PeringatanMenambahkan 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.
Di pojok kanan bawah, klik Next untuk memberikan izin berikut pada proyek MaxCompute kepada akun sinkronisasi DTS.
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.
CatatanJika 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.
PeringatanMemilih 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.
CatatanAnda 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.
PeringatanSebelum 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.
CatatanJika 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.
CatatanOpsi 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.
CatatanAnda 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.
-
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.
-
-
-
Setelah kotak dialog Precheck menampilkan Precheck Passed, tutup kotak dialog Precheck. Tugas sinkronisasi akan dimulai secara otomatis.
-
Tunggu hingga tugas selesai inisialisasi dan memasuki status Synchronizing.
Anda dapat melihat status tugas sinkronisasi data di halaman Data Synchronization.
Skema tabel log inkremental
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.
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
|
operation_flag | Jenis operasi. Nilai yang valid:
|
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_flagbernilai N danafter_flagbernilai 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, danutc_timestampyang sama.Catatan log pertama berisi nilai sebelum pembaruan, sehingga
before_flagbernilai Y danafter_flagbernilai N. Catatan log kedua berisi nilai setelah pembaruan, sehinggabefore_flagbernilai N danafter_flagbernilai 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_flagbernilai Y danafter_flagbernilai 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.
Di MaxCompute, buat tabel untuk menyimpan hasil penggabungan. Skema tabel ini harus sesuai dengan skema tabel sumber.
Misalnya, untuk memperoleh data lengkap tabel
customerpada timestamp1565944878, buat tabel dengan nama deskriptif, seperti:CREATE TABLE `customer_1565944878` ( `id` bigint NULL, `register_time` datetime NULL, `address` string);CatatanAnda dapat menjalankan perintah SQL di fitur ad hoc query MaxCompute.
Untuk informasi lebih lanjut tentang tipe data MaxCompute, lihat Tipe data.
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
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';Setelah perintah dieksekusi, Anda dapat mengkueri data gabungan di tabel
customer_1565944878.