Layanan Transmisi Data (DTS) menyinkronkan data dari database MySQL yang dikelola sendiri — yang di-deploy pada server on-premises, instans Elastic Compute Service (ECS), atau cloud pihak ketiga — ke instans ApsaraDB RDS untuk MySQL tanpa mengganggu layanan Anda. Secara default, DTS hanya menyinkronkan data inkremental real-time. Untuk memigrasikan data historis juga, aktifkan sinkronisasi skema dan sinkronisasi data penuh.
Prasyarat
Sebelum memulai, pastikan bahwa:
Database MySQL yang dikelola sendiri terhubung ke Alibaba Cloud, dan blok Classless Inter-Domain Routing (CIDR) server DTS telah ditambahkan ke aturan grup keamanan, kebijakan firewall, serta daftar putih alamat IP database sumber. Untuk informasi lebih lanjut, lihat Tambahkan blok CIDR server DTS.
Akun database telah dibuat untuk database MySQL yang dikelola sendiri, dan binary logging telah dikonfigurasi. Untuk versi database yang didukung, lihat Persiapan.
Instans ApsaraDB RDS untuk MySQL tujuan telah dibuat, dan ruang penyimpanannya tersedia lebih besar daripada total ukuran data di database sumber. Untuk informasi lebih lanjut, lihat Buat instans ApsaraDB RDS untuk MySQL.
Batasan
Persyaratan database sumber
Tabel harus memiliki PRIMARY KEY atau kendala UNIK, dengan semua field unik. Jika tidak, catatan duplikat mungkin muncul di database tujuan.
Jika Anda memilih tabel individual sebagai objek sinkronisasi dan mengganti nama tabel atau kolom, satu tugas sinkronisasi mendukung hingga 1.000 tabel. Melebihi batas ini menyebabkan error permintaan. Dalam kasus tersebut, bagi tabel ke beberapa tugas, atau sinkronkan seluruh database.
Persyaratan log biner harus dipenuhi:
CatatanJika sumbernya adalah database MySQL yang dikelola sendiri, Anda harus secara eksplisit mengaktifkan binary logging dan mengatur kedua parameter berikut. Untuk RDS MySQL, binary logging diaktifkan secara default — cukup verifikasi bahwa
binlog_row_imagediatur keFULL. Untuk informasi lebih lanjut, lihat Buat akun untuk database MySQL yang dikelola sendiri dan konfigurasi binary logging dan Ubah parameter instans.Parameter Nilai yang Diperlukan Catatan binlog_formatROWHanya untuk MySQL yang dikelola sendiri binlog_row_imageFULLDiperlukan untuk MySQL yang dikelola sendiri maupun ApsaraDB RDS untuk MySQL log_slave_updatesONHanya untuk MySQL yang dikelola sendiri dalam kluster dual-primary Periode retensi (RDS MySQL) Minimal 3 hari (disarankan 7 hari) Retensi lebih pendek dapat menyebabkan tugas gagal Periode retensi (MySQL yang dikelola sendiri) Minimal 7 hari Retensi lebih pendek dapat menyebabkan tugas gagal karena DTS tidak dapat memperoleh log biner; dalam kondisi luar biasa, ketidakkonsistenan atau kehilangan data dapat terjadi Jangan mengeksekusi pernyataan DDL yang mengubah skema selama sinkronisasi skema atau sinkronisasi data penuh. Melakukannya akan menyebabkan tugas gagal.
Data yang dihasilkan oleh operasi perubahan log biner — seperti data yang dipulihkan dari backup fisik atau data dari operasi kaskade — tidak disinkronkan. Jika hal ini memengaruhi bisnis Anda, hapus database dan tabel yang terdampak dari objek sinkronisasi, lalu tambahkan kembali. Untuk informasi lebih lanjut, lihat Ubah objek yang akan disinkronkan.
Jika sumbernya adalah MySQL 8.0.23 atau lebih baru dan tabel mencakup kolom tak terlihat (invisible columns), DTS tidak dapat membaca kolom tersebut dan terjadi kehilangan data. Untuk memperbaikinya, buat kolom tersebut menjadi terlihat:
Jalankan
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;. Lihat Invisible Columns.Tabel tanpa primary key secara otomatis menghasilkan primary key tak terlihat. Buat juga primary key tersebut menjadi terlihat. Lihat Generated Invisible Primary Keys.
Operasi yang tidak didukung
Perilaku berikut tidak didukung atau menyebabkan kegagalan sinkronisasi:
Data yang didefinisikan parser: DTS tidak menyinkronkan data yang menggunakan parser yang didefinisikan melalui komentar.
pt-online-schema-change: Jangan gunakan pt-online-schema-change untuk operasi DDL Online pada objek sinkronisasi. Gunakan Data Management (DMS) sebagai gantinya. Untuk informasi lebih lanjut, lihat Lakukan operasi DDL tanpa lock.
RENAME TABLE pada objek sinkronisasi: Mengganti nama tabel yang dipilih sebagai objek sinkronisasi menghentikan sinkronisasi datanya. Untuk menghindarinya, tambahkan database yang berisi tabel tersebut — baik sebelum maupun setelah penggantian nama — ke daftar objek sinkronisasi.
Penulisan ke tujuan selama sinkronisasi: Menulis data dari sumber lain ke database tujuan selama sinkronisasi menyebabkan ketidakkonsistenan data.
Sumber EncDB: Jika sumbernya adalah instans ApsaraDB RDS untuk MySQL dengan fitur EncDB diaktifkan, sinkronisasi data penuh tidak dapat dilakukan.
Instans ApsaraDB RDS untuk MySQL dengan Enkripsi Data Transparan (TDE) diaktifkan mendukung sinkronisasi skema, sinkronisasi data penuh, dan sinkronisasi data inkremental.
Alih bencana primer/sekunder: Jika Anda melakukan alih bencana primer/sekunder pada sumber MySQL yang dikelola sendiri saat tugas sedang berjalan, tugas tersebut gagal.
RDS MySQL 5.6 read-only: Instans ApsaraDB RDS untuk MySQL 5.6 read-only (yang tidak mencatat log transaksi) tidak dapat digunakan sebagai sumber.
Pertimbangan lainnya
Versi database tujuan harus sama dengan atau lebih baru daripada versi database sumber.
Jika tujuannya adalah MySQL 8.0.23 atau lebih baru dengan kolom tak terlihat di tabel tujuan, DTS tidak dapat menemukan kolom target dan tugas gagal. Buat kolom tersebut menjadi terlihat menggunakan perintah
ALTER TABLEdi atas.Jika Anda tidak menggunakan sinkronisasi skema DTS, pastikan tipe field kompatibel antara sumber dan tujuan. Misalnya, field
textdi sumber yang dipetakan kevarchar(255)di tujuan dapat menyebabkan pemotongan data.Jika data mencakup karakter langka atau emoji (karakter 4-byte), database dan tabel tujuan harus menggunakan set karakter UTF8mb4. Jika Anda menggunakan sinkronisasi skema DTS, atur parameter
character_set_serverdi tujuan ke UTF8mb4.Jalankan sinkronisasi selama jam sepi. Sinkronisasi data penuh awal membaca dari sumber dan menulis ke tujuan secara bersamaan, yang meningkatkan beban pada kedua database.
Setelah sinkronisasi data penuh awal, ruang tabel tujuan biasanya lebih besar daripada sumber karena fragmentasi dari operasi INSERT bersamaan.
Nama kolom di MySQL tidak peka huruf besar/kecil. Jika sumber memiliki beberapa kolom yang namanya hanya berbeda dalam kapitalisasi, datanya ditulis ke kolom tujuan yang sama, menyebabkan hasil yang tidak diinginkan.
Selama sinkronisasi skema, DTS menyinkronkan kunci asing. Selama sinkronisasi penuh dan inkremental, DTS sementara menonaktifkan pemeriksaan kendala dan operasi kaskade pada kunci asing di tingkat sesi. Jika Anda menjalankan operasi cascade update atau delete di sumber selama periode ini, ketidakkonsistenan data dapat terjadi.
Jika pernyataan DDL gagal di tujuan, tugas DTS tetap berjalan. Lihat pernyataan DDL yang gagal di log tugas. Untuk informasi lebih lanjut, lihat Lihat log tugas.
Jika Anda ingin menyinkronkan informasi akun dari sumber, diperlukan izin tambahan. Untuk informasi lebih lanjut, lihat Migrasi akun database.
Jika tugas DTS gagal, dukungan teknis DTS berusaha memulihkannya dalam waktu 8 jam. Tugas mungkin dimulai ulang, dan parameter tingkat tugas (bukan parameter database) mungkin diubah.
Latensi sinkronisasi untuk sumber MySQL yang dikelola sendiri
DTS menghitung latensi sinkronisasi berdasarkan timestamp data terbaru yang telah disinkronkan di tujuan dan timestamp saat ini di sumber. Jika tidak ada operasi DML yang dilakukan di sumber dalam periode panjang, latensi yang ditampilkan mungkin tidak akurat. Untuk memperbarui latensi, jalankan operasi DML di sumber. Jika Anda menyinkronkan seluruh database, buat tabel heartbeat yang menerima data setiap detik.
DTS juga menjalankan CREATE DATABASE IF NOT EXISTS 'test' di sumber secara berkala untuk memajukan posisi file log biner. Ini berlaku baik untuk sumber MySQL yang dikelola sendiri maupun sumber ApsaraDB RDS untuk MySQL.
Penagihan
| Jenis sinkronisasi | Biaya |
|---|---|
| Sinkronisasi skema dan sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Lihat Ikhtisar penagihan. |
Topologi sinkronisasi yang didukung
Sinkronisasi satu arah satu-ke-satu
Sinkronisasi satu arah satu-ke-banyak
Sinkronisasi satu arah banyak-ke-satu
Sinkronisasi satu arah kaskade
Operasi SQL yang dapat disinkronkan
| Jenis | Operasi |
|---|---|
| DML | INSERT, UPDATE, DELETE |
| DDL | ALTER TABLE, ALTER VIEW, CREATE FUNCTION, CREATE INDEX, CREATE PROCEDURE, CREATE TABLE, CREATE VIEW, DROP INDEX, DROP TABLE, RENAME TABLE, TRUNCATE TABLE |
Izin yang diperlukan untuk akun database
| Database | Sinkronisasi skema | Sinkronisasi data penuh | Sinkronisasi data inkremental |
|---|---|---|---|
| MySQL yang dikelola sendiri | SELECT | SELECT | SELECT pada objek sinkronisasi; REPLICATION CLIENT, REPLICATION SLAVE, dan SHOW VIEW; izin untuk membuat database dan tabel (DTS membuat database bernama dts untuk menyimpan data heartbeat) |
| ApsaraDB RDS untuk MySQL (tujuan) | Baca dan tulis | Baca dan tulis | Baca dan tulis |
Untuk petunjuk membuat dan memberikan izin kepada akun database, lihat:
MySQL yang dikelola sendiri: Buat akun untuk database MySQL yang dikelola sendiri dan konfigurasi binary logging
ApsaraDB RDS untuk MySQL: Buat akun dan Ubah izin akun
Buat tugas sinkronisasi data
Setelah mengonfigurasi database sumber dan tujuan, baca dengan cermat Limits yang ditampilkan di halaman. Melewatkan langkah ini dapat menyebabkan tugas gagal atau mengakibatkan ketidakkonsistenan data.
Langkah 1: Buka halaman sinkronisasi data
Gunakan salah satu metode berikut:
Konsol DTS
Masuk ke Konsol DTS
Di panel navigasi kiri, klik Data Synchronization.
Di pojok kiri atas, pilih wilayah tempat instans sinkronisasi data berada.
Konsol DMS
Operasi aktual dapat berbeda tergantung mode dan tata letak Konsol DMS. Untuk informasi lebih lanjut, lihat Mode simple dan Sesuaikan tata letak dan gaya Konsol DMS.
Masuk ke Konsol DMS
Di bilah navigasi atas, arahkan kursor ke Data + AI lalu pilih DTS (DTS) > Data Synchronization.
Dari daftar drop-down di sebelah kanan Data Synchronization Tasks, pilih wilayah tempat instans sinkronisasi data berada.
Langkah 2: Konfigurasi database sumber dan tujuan
Klik Create Task.
Konfigurasi parameter database sumber:
Parameter Deskripsi Task Name Nama untuk tugas DTS. DTS menghasilkan nama secara otomatis. Gunakan nama deskriptif agar mudah diidentifikasi. Nama tidak perlu unik. Select Existing Connection Jika sumber telah terdaftar di DTS, pilih dari daftar drop-down — DTS akan mengisi parameter lainnya secara otomatis. Jika tidak, isi parameter di bawah ini. Untuk informasi lebih lanjut, lihat Kelola koneksi database. Database Type Pilih MySQL. Access Method Pilih Self-managed Database on ECS. Untuk persiapan lingkungan, lihat Ikhtisar persiapan. Instance Region Wilayah tempat database MySQL sumber berada. Replicate Data Across Alibaba Cloud Accounts Pilih No untuk contoh ini. ECS Instance ID ID instans ECS yang menjalankan database MySQL sumber. Port Number Port layanan database MySQL sumber. Port harus dapat diakses melalui Internet. Default: 3306. Database Account Akun untuk database MySQL sumber. Lihat bagian Izin yang diperlukan untuk akun database. Database Password Kata sandi untuk akun database. Encryption Pilih Non-encrypted atau SSL-encrypted sesuai kebutuhan Anda. Jika Anda memilih SSL-encrypted, unggah CA Certificate dan konfigurasi parameter CA Key. Konfigurasi parameter database tujuan:
Parameter Deskripsi Select Existing Connection Jika tujuan telah terdaftar di DTS, pilih dari daftar drop-down. Jika tidak, isi parameter di bawah ini. Untuk informasi lebih lanjut, lihat Kelola koneksi database. Database Type Pilih MySQL. Access Method Pilih Alibaba Cloud Instance. Instance Region Wilayah tempat instans ApsaraDB RDS untuk MySQL tujuan berada. Replicate Data Across Alibaba Cloud Accounts Pilih No untuk contoh ini. RDS Instance ID ID instans ApsaraDB RDS untuk MySQL tujuan. Database Account Akun untuk database tujuan. Lihat bagian Izin yang diperlukan untuk akun database. Database Password Kata sandi untuk akun database. Encryption Pilih Non-encrypted atau SSL-encrypted. Untuk menggunakan enkripsi SSL, aktifkan terlebih dahulu di instans RDS. Untuk informasi lebih lanjut, lihat Gunakan sertifikat cloud untuk mengaktifkan enkripsi SSL. Klik Test Connectivity and Proceed. Di kotak dialog CIDR Blocks of DTS Servers, klik Test Connectivity.
Pastikan blok CIDR server DTS dapat ditambahkan — secara otomatis atau manual — ke pengaturan keamanan database sumber dan tujuan. Untuk informasi lebih lanjut, lihat Tambahkan blok CIDR server DTS.
Langkah 3: Konfigurasi objek sinkronisasi
Pada langkah Configure Objects, konfigurasi parameter berikut:
Mengganti nama objek dengan fitur pemetaan nama objek dapat menyebabkan objek dependen gagal disinkronkan.
Parameter Deskripsi Synchronization Types Incremental Data Synchronization dipilih secara default. Pilih juga Schema Synchronization dan Full Data Synchronization untuk memigrasikan data historis sebelum memulai sinkronisasi inkremental. Method to Migrate Triggers in Source Database Tersedia hanya jika Schema Synchronization dipilih. Untuk informasi lebih lanjut, lihat Sinkronisasi atau migrasi trigger dari database sumber. Enable Migration Assessment Tersedia hanya jika Schema Synchronization dipilih. Jika diatur ke Yespengaturan pemberitahuan peringatan, pemeriksaan awal memakan waktu lebih lama, dan hasil penilaian muncul sebagai Assessment Result selama pemeriksaan awal. Hasil penilaian tidak memengaruhi kelulusan pemeriksaan awal. Synchronization Topology Pilih One-way Synchronization. Processing Mode of Conflicting Tables Precheck and Report Errors: pemeriksaan awal gagal jika tujuan memiliki tabel dengan nama yang sama dengan sumber. Untuk menyelesaikan konflik penamaan, gunakan fitur pemetaan nama objek. Untuk informasi lebih lanjut, lihat Pemetaan nama database, tabel, dan kolom. Ignore Errors and Proceed: melewati pemeriksaan konflik nama. Selama sinkronisasi penuh, catatan tujuan yang ada dengan primary key yang cocok dipertahankan; selama sinkronisasi inkremental, catatan tersebut ditimpa. Jika skema berbeda, tugas mungkin gagal. Whether to migrate Event Tentukan apakah akan menyinkronkan event dari sumber. Untuk informasi lebih lanjut, lihat Sinkronisasi atau migrasi event. Capitalization of Object Names in Destination Instance Mengontrol kapitalisasi nama database, tabel, dan kolom di tujuan. Default: DTS default policy. Untuk informasi lebih lanjut, lihat Tentukan kapitalisasi nama objek di instans tujuan. Source Objects Pilih objek dari bagian Source Objects dan klik ikon panah kanan untuk menambahkannya ke Selected Objects. Granularitas yang didukung: kolom, tabel, atau database. Jika Anda memilih tabel atau kolom, DTS tidak menyinkronkan view, trigger, atau prosedur tersimpan. Selected Objects Klik kanan objek untuk mengganti namanya secara individual. Klik Batch Edit untuk mengganti nama beberapa objek sekaligus. Untuk informasi lebih lanjut, lihat Pemetaan nama objek. Klik kanan objek untuk memilih operasi SQL tertentu atau mengatur kondisi filter WHERE. Untuk informasi lebih lanjut, lihat Atur kondisi filter. Klik Next: Advanced Settings dan konfigurasi hal berikut:
Parameter Deskripsi Dedicated Cluster for Task Scheduling DTS menggunakan kluster bersama secara default. Beli kluster khusus untuk meningkatkan stabilitas tugas. Untuk informasi lebih lanjut, lihat Apa itu kluster khusus DTS. Copy the temporary table of the Online DDL tool that is generated in the source table to the destination database. Berlaku saat Anda menggunakan DMS atau gh-ost untuk operasi DDL Online. Yes: menyinkronkan data tabel sementara (dapat memperpanjang waktu sinkronisasi). No, Adapt to DMS Online DDL: hanya menyinkronkan DDL akhir dari DMS; tabel tujuan mungkin dikunci. No, Adapt to gh-ost: hanya menyinkronkan DDL akhir dari gh-ost; tabel tujuan mungkin dikunci. Jangan gunakan pt-online-schema-change — hal ini akan menyebabkan tugas gagal. Whether to Migrate Accounts Tentukan apakah akan menyinkronkan informasi akun dari sumber. Jika diatur ke Yes, pilih akun dan verifikasi izinnya. Untuk informasi lebih lanjut, lihat Migrasi akun database. Retry Time for Failed Connections Berapa lama DTS mencoba koneksi yang gagal setelah tugas dimulai. Rentang: 10–1.440 menit. Default: 720. Atur minimal 30 menit. Jika beberapa tugas berbagi sumber atau tujuan yang sama, waktu retry terpendek berlaku untuk semuanya. DTS menagih instans selama periode retry. Retry Time for Other Issues Berapa lama DTS mencoba operasi DML atau DDL yang gagal. Rentang: 1–1.440 menit. Default: 10. Atur minimal 10 menit. Nilai ini harus lebih kecil dari Retry Time for Failed Connections. Enable Throttling for Full Data Synchronization Tersedia hanya jika Full Data Synchronization dipilih. Konfigurasi QPS ke sumber, RPS, dan kecepatan data (MB/s) untuk mengurangi beban di tujuan. Enable Throttling for Incremental Data Synchronization Konfigurasi RPS dan kecepatan data (MB/s) untuk mengurangi beban di tujuan. Environment Tag Tag opsional untuk mengidentifikasi instans DTS. Whether to delete SQL operations on heartbeat tables of forward and reverse tasks Yes: DTS tidak menulis operasi tabel heartbeat ke sumber; latensi sinkronisasi mungkin tampak meningkat. No: DTS menulis operasi tabel heartbeat; backup fisik dan kloning sumber mungkin terpengaruh. Configure ETL Yes: mengaktifkan fitur ekstrak, transformasi, muat (ETL); masukkan pernyataan pemrosesan data di editor kode. Lihat Konfigurasi ETL dalam tugas migrasi data atau sinkronisasi data. No: menonaktifkan ETL. Monitoring and Alerting Yes: mengonfigurasi peringatan untuk kegagalan tugas atau pelanggaran ambang batas latensi; konfigurasi ambang batas peringatan dan kontak. Lihat Konfigurasi pemantauan dan peringatan. No: menonaktifkan peringatan. Klik Next Step: Data Verification untuk mengonfigurasi verifikasi data. Untuk informasi lebih lanjut, lihat Konfigurasi tugas verifikasi data.
Langkah 4: Jalankan pemeriksaan awal
Klik Next: Save Task Settings and Precheck.
Untuk melihat pratinjau parameter API untuk konfigurasi tugas saat ini, arahkan kursor ke tombol tersebut lalu klik Preview OpenAPI parameters sebelum melanjutkan.
DTS menjalankan pemeriksaan awal sebelum tugas dapat dimulai. Jika pemeriksaan awal gagal:
Klik View Details di sebelah setiap item yang gagal, selesaikan masalahnya, lalu jalankan pemeriksaan awal lagi.
Jika item peringatan dapat diabaikan, klik Confirm Alert Details > Ignore > OK, lalu klik Precheck Again. Mengabaikan peringatan dapat menyebabkan ketidakkonsistenan data.
Langkah 5: Beli instans
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Di halaman buy, konfigurasi parameter berikut:
Parameter Deskripsi Billing Method Subscription: bayar di muka untuk jangka waktu tetap; lebih hemat biaya untuk penggunaan jangka panjang. Pay-as-you-go: ditagih per jam; cocok untuk penggunaan jangka pendek. Lepaskan instans saat tidak lagi diperlukan untuk menghentikan tagihan. Resource Group Settings Kelompok sumber daya untuk instans sinkronisasi data. Default: default resource group. Untuk informasi lebih lanjut, lihat Apa itu Resource Management? Instance Class Kecepatan sinkronisasi bervariasi tergantung kelas instans. Untuk informasi lebih lanjut, lihat Kelas instans untuk instans sinkronisasi data. Subscription Duration Tersedia hanya untuk metode penagihan Subscription. Opsi: 1–9 bulan, 1 tahun, 2 tahun, 3 tahun, atau 5 tahun. Baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms.
Klik Buy and Start, lalu klik OK di kotak dialog.
Tugas muncul di daftar tugas. Pantau perkembangannya di sana.
Verifikasi sinkronisasi
Setelah status tugas berubah menjadi Completed, jalankan perintah berikut di database tujuan untuk memeriksa apakah data telah ditulis dengan benar:
ANALYZE TABLE <table_name>;Dalam kasus seperti alih bencana high-availability (HA) di database MySQL sumber, data mungkin hanya ditulis ke memori dan tidak dipertahankan, menyebabkan kehilangan data. Menjalankan ANALYZE TABLE mengonfirmasi kondisi data aktual di tujuan.Langkah selanjutnya
Untuk mengubah objek yang sedang disinkronkan, lihat Ubah objek yang akan disinkronkan.
Untuk menyinkronkan informasi akun, lihat Migrasi akun database.
Untuk mengubah parameter instans DTS, lihat Ubah parameter instans DTS.