Layanan Transmisi Data (DTS) menyinkronkan data dari instans sumber ApsaraDB RDS untuk MySQL ke instans tujuan dalam tiga tahap berurutan: sinkronisasi skema, sinkronisasi data penuh, dan sinkronisasi data inkremental. Gunakan panduan ini untuk mengonfigurasi tugas secara end-to-end.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Instans sumber ApsaraDB RDS untuk MySQL dalam status normal
Instans tujuan ApsaraDB RDS untuk MySQL dengan penyimpanan tersedia yang lebih besar daripada ukuran total data instans sumber. Lihat Buat instans ApsaraDB RDS untuk MySQL
Penagihan
| Jenis sinkronisasi | Biaya |
|---|---|
| Sinkronisasi skema dan sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Lihat Ikhtisar penagihan |
Operasi SQL yang didukung
| Jenis operasi | Pernyataan SQL |
|---|---|
| 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 |
RENAME TABLE dapat menyebabkan ketidakkonsistenan data. Jika Anda mengganti nama tabel yang disinkronkan selama tugas berjalan, data dari tabel tersebut berhenti disinkronkan ke tujuan. Untuk menghindari hal ini, pilih database (bukan tabel individual) sebagai objek sinkronisasi, dan pastikan database sebelum dan sesudah penggantian nama termasuk dalam konfigurasi.
Izin akun database yang diperlukan
| Database | Izin yang diperlukan |
|---|---|
| Instans sumber ApsaraDB RDS untuk MySQL | Izin baca dan tulis. Lihat Buat akun dan Ubah izin akun |
| Instans tujuan ApsaraDB RDS untuk MySQL | Izin baca dan tulis. Lihat Buat akun dan Ubah izin akun |
Jika akun database sumber tidak dibuat melalui konsol ApsaraDB RDS untuk MySQL, berikan izin REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, dan SELECT secara manual. Untuk menyinkronkan informasi akun dari sumber, diperlukan izin tambahan. Lihat Migrasi akun database.
Batasan
Tinjau batasan berikut sebelum memulai. Sebagian besar kegagalan tugas dan ketidakkonsistenan data disebabkan oleh pengabaian batasan ini.
Struktur tabel
Tabel yang akan disinkronkan harus memiliki PRIMARY KEY atau kendala UNIK dengan semua bidang unik. Tanpa ini, instans tujuan mungkin berisi catatan duplikat.
Jika Anda memilih tabel (bukan database) sebagai objek sinkronisasi dan berencana mengganti nama tabel atau kolom, satu tugas mendukung hingga 1.000 tabel. Untuk lebih dari 1.000 tabel, konfigurasikan beberapa tugas atau lakukan sinkronisasi di tingkat database.
Log biner
Pengaturan log biner berikut harus diterapkan sebelum DTS dapat membaca perubahan dari sumber:
binlog_row_image harus diatur ke
full. Binary logging diaktifkan secara default pada instans ApsaraDB RDS untuk MySQL, tetapi verifikasi parameter ini. Lihat Ubah parameter instans.Jika sumber adalah database MySQL yang dikelola sendiri: Anda harus mengaktifkan binary logging dan mengatur
binlog_formatkerowdanbinlog_row_imagekefull.Jika sumber adalah database MySQL yang dikelola sendiri yang dideploy dalam kluster dual-primary: Anda juga harus mengatur
log_slave_updateskeONuntuk memastikan DTS dapat memperoleh semua log biner. Lihat Buat akun untuk database MySQL yang dikelola sendiri dan konfigurasi binary logging.
Retensi log biner harus minimal 7 hari. Jika DTS tidak dapat mengakses log biner yang diperlukan, tugas gagal dan kehilangan data mungkin terjadi. Lihat Kelola file log biner.
Jangan mengeksekusi pernyataan DDL pada database sumber selama sinkronisasi skema atau sinkronisasi data penuh. Hal ini menyebabkan tugas gagal.
Kompatibilitas versi dan set karakter
Versi database tujuan harus sama dengan atau lebih baru daripada sumber. Versi tujuan yang lebih lama dapat menyebabkan masalah kompatibilitas.
Jika database sumber adalah MySQL 8.0.23 atau lebih baru dan mencakup kolom tak terlihat, DTS tidak dapat memperoleh data kolom tersebut — terjadi kehilangan data.
Jika database tujuan adalah MySQL 8.0.23 atau lebih baru dan mencakup kolom tak terlihat, kolom tujuan untuk menerima data tidak dapat ditemukan, menyebabkan instans DTS gagal dan terjadi kehilangan data.
Dalam kedua kasus tersebut, jalankan
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;untuk membuat kolom tak terlihat menjadi terlihat sebelum memulai tugas. Tabel tanpa kunci utama secara otomatis menghasilkan kunci utama tak terlihat; buat juga kunci tersebut terlihat. Lihat Kolom Tak Terlihat dan Kunci Utama Tak Terlihat yang Dihasilkan.Jika Anda tidak menggunakan sinkronisasi skema, pastikan kompatibilitas tipe bidang dipertahankan. Misalnya, bidang
textdi sumber yang dipetakan ke bidangvarchar(255)di tujuan dapat menyebabkan pemotongan data.Jika data berisi karakter 4-byte (seperti karakter langka atau emoji), tabel tujuan harus menggunakan set karakter UTF8mb4. Jika menggunakan sinkronisasi skema, atur parameter
character_set_serverke UTF8mb4 di database tujuan.Nama kolom di MySQL tidak peka huruf besar/kecil. Jika sumber memiliki beberapa kolom yang namanya hanya berbeda dalam kapitalisasi, kolom tersebut ditulis ke kolom yang sama di tujuan, menyebabkan hasil yang tidak diinginkan.
DDL Online
Jangan gunakan pt-online-schema-change untuk DDL online pada tabel yang dipilih sebagai objek sinkronisasi. Gunakan Data Management (DMS) sebagai gantinya. Lihat Lakukan operasi DDL tanpa lock.
Jika operasi DDL gagal di tujuan, tugas DTS tetap berjalan. Periksa log tugas untuk pernyataan DDL yang gagal. Lihat Lihat log tugas.
DTS tidak menyinkronkan data yang menggunakan parser yang didefinisikan oleh komentar.
Konsistensi data
Jangan menulis data dari sumber lain ke tujuan selama sinkronisasi berlangsung. Hal ini menyebabkan ketidakkonsistenan data.
Data yang dihasilkan oleh operasi perubahan log biner (seperti data yang dipulihkan dari backup fisik atau operasi kaskade) tidak dicatat atau disinkronkan ke tujuan selama tugas berjalan.
Perilaku kunci asing
Selama sinkronisasi skema, DTS menyinkronkan kunci asing dari sumber ke tujuan.
Selama sinkronisasi data penuh dan inkremental, DTS sementara menonaktifkan pemeriksaan kendala kunci asing dan operasi kaskade di tingkat session. Operasi pembaruan atau penghapusan kaskade di sumber selama periode ini dapat menyebabkan ketidakkonsistenan data.
Dampak performa
Sinkronisasi data penuh membaca semua data dari database sumber sekali, yang meningkatkan beban pada kedua database. Untuk mengurangi risiko:
Jalankan tugas sinkronisasi selama jam sepi.
Perkirakan ruang tabel tujuan akan lebih besar daripada sumber setelah sinkronisasi penuh, karena fragmentasi INSERT konkuren.
Setelah status tugas berubah menjadi Completed, jalankan
analyze table <table_name>untuk memverifikasi bahwa data telah ditulis dengan benar ke tujuan. (Misalnya, alih bencana ketersediaan tinggi (HA) di sumber dapat menyebabkan beberapa data hanya ditulis ke memori.)
Kasus khusus
Untuk sumber MySQL yang dikelola sendiri:
Jika terjadi alih bencana primary/secondary pada database sumber saat tugas sedang berjalan, tugas gagal.
DTS menghitung latensi sinkronisasi berdasarkan timestamp data terbaru yang disinkronkan di tujuan dan timestamp saat ini di sumber. Jika tidak ada operasi DML yang dilakukan di sumber dalam waktu lama, latensi mungkin tidak akurat. Jika latensi terlalu tinggi, lakukan operasi DML di sumber untuk memperbaruinya. Jika Anda memilih seluruh database sebagai objek sinkronisasi, Anda dapat membuat tabel heartbeat yang diperbarui setiap detik untuk menjaga akurasi latensi.
DTS mengeksekusi
CREATE DATABASE IF NOT EXISTS 'test'di sumber secara berkala untuk memajukan posisi log biner.
Untuk sumber ApsaraDB RDS untuk MySQL:
Instans ApsaraDB RDS untuk MySQL 5.6 read-only (yang tidak mencatat log transaksi) tidak dapat digunakan sebagai sumber.
DTS mengeksekusi
CREATE DATABASE IF NOT EXISTS 'test'di sumber secara berkala untuk memajukan posisi log biner.Instans ApsaraDB RDS untuk MySQL dengan fitur EncDB yang diaktifkan tidak mendukung sinkronisasi data penuh. Instans dengan Enkripsi Data Transparan (TDE) yang diaktifkan mendukung sinkronisasi skema, sinkronisasi data penuh, dan sinkronisasi data inkremental.
Jika dukungan teknis DTS memulihkan tugas yang gagal:
Dukungan mencoba pemulihan dalam waktu 8 jam. Tugas mungkin dimulai ulang dan parameter tugas tertentu mungkin diubah. Parameter database tidak diubah.
Konfigurasi tugas sinkronisasi
Langkah 1: Buka halaman Tugas Sinkronisasi Data
Masuk ke Konsol Data Management (DMS).
Di bilah navigasi atas, klik Data + AI.
Di panel navigasi kiri, pilih DTS (DTS) > Data Synchronization.
Navigasi mungkin berbeda tergantung pada mode dan tata letak Konsol DMS Anda. Lihat Mode simple dan Sesuaikan tata letak dan gaya Konsol DMS. Atau, buka langsung halaman Tugas Sinkronisasi Data di Konsol DTS baru.
Langkah 2: Buat tugas
Pilih wilayah tempat instans sinkronisasi data Anda berada.
Di Konsol DTS baru, pilih wilayah di bilah navigasi atas.
Klik Create Task.
(Opsional) Klik New Configuration Page di pojok kanan atas halaman.
Lewati langkah ini jika tombol Back to Previous Version ditampilkan. Halaman konfigurasi baru direkomendasikan.
Langkah 3: Konfigurasi database sumber dan tujuan
Setelah mengonfigurasi database sumber dan tujuan, tinjau Batasan yang ditampilkan di halaman sebelum melanjutkan. Melewatkan langkah ini dapat menyebabkan tugas gagal atau mengakibatkan ketidakkonsistenan data.
Isi parameter berikut untuk sumber dan tujuan:
| Bagian | Parameter | Deskripsi |
|---|---|---|
| N/A | Task Name | Nama deskriptif untuk tugas DTS. DTS menghasilkan nama default; ganti dengan nama yang bermakna. Nama unik tidak diperlukan. |
| Source Database | Select a DMS database instance | Pada contoh ini, tidak ada instans database yang dipilih sebelumnya. Konfigurasi parameter di bawah secara manual. |
| Database Type | Pilih MySQL. | |
| Access Method | Pilih Alibaba Cloud Instance. | |
| Instance Region | Wilayah tempat instans sumber berada. | |
| Replicate Data Across Alibaba Cloud Accounts | Pilih No (contoh akun yang sama). | |
| RDS Instance ID | ID instans sumber ApsaraDB RDS untuk MySQL. | |
| Database Account | Akun database untuk instans sumber. Lihat Izin akun database yang diperlukan. | |
| Database Password | Kata sandi untuk akun database. | |
| Encryption | Pilih Non-encrypted atau SSL-encrypted. Untuk menggunakan enkripsi SSL, aktifkan terlebih dahulu di instans. Lihat Gunakan sertifikat cloud untuk mengaktifkan enkripsi SSL. | |
| Destination Database | Select a DMS database instance | Pada contoh ini, tidak ada instans database yang dipilih sebelumnya. Konfigurasi parameter di bawah secara manual. |
| Database Type | Pilih MySQL. | |
| Access Method | Pilih Alibaba Cloud Instance. | |
| Instance Region | Wilayah tempat instans tujuan berada. | |
| Replicate Data Across Alibaba Cloud Accounts | Pilih No (contoh akun yang sama). | |
| RDS Instance ID | ID instans tujuan ApsaraDB RDS untuk MySQL. | |
| Database Account | Akun database untuk instans tujuan. Lihat Izin akun database yang diperlukan. | |
| Database Password | Kata sandi untuk akun database. | |
| Encryption | Pilih Non-encrypted atau SSL-encrypted. Untuk menggunakan enkripsi SSL, aktifkan terlebih dahulu di instans. Lihat Gunakan sertifikat cloud untuk mengaktifkan enkripsi SSL. |
Langkah 4: Uji konektivitas
Klik Test Connectivity and Proceed.
DTS secara otomatis menambahkan blok CIDR servernya ke daftar putih instans database Alibaba Cloud. Untuk database yang di-host di ECS, DTS menambahkan blok CIDR ke aturan grup keamanan ECS dan Anda harus memastikan instans ECS dapat mengakses database — jika database tersebar di beberapa instans ECS, tambahkan blok CIDR ke grup keamanan setiap instans secara manual. Untuk database on-premises atau database yang di-host oleh penyedia cloud pihak ketiga, tambahkan blok CIDR server DTS ke daftar putih database secara manual. Lihat Blok CIDR server DTS.
Menambahkan blok CIDR server DTS ke daftar putih atau grup keamanan menimbulkan risiko keamanan. Sebelum melanjutkan, ambil tindakan pencegahan seperti memperkuat kredensial, membatasi port yang terbuka, mengautentikasi panggilan API, dan mengaudit aturan daftar putih secara berkala. Atau, hubungkan database ke DTS menggunakan Express Connect, VPN Gateway, atau Smart Access Gateway.
Langkah 5: Konfigurasi objek sinkronisasi
Pada langkah Configure Objects, isi parameter berikut:
| Parameter | Deskripsi |
|---|---|
| Synchronization Types | Incremental Data Synchronization dipilih secara default. Pilih juga Schema Synchronization dan Full Data Synchronization. DTS menggunakan sinkronisasi penuh sebagai garis dasar sebelum memulai sinkronisasi inkremental. |
| Method to Migrate Triggers in Source Database | Pilih cara menangani trigger dari sumber. Hanya tersedia saat Schema Synchronization dipilih. Lihat Sinkronkan atau migrasi trigger dari database sumber. |
| Enable Migration Assessment | Pilih Yes untuk memeriksa apakah skema sumber dan tujuan (termasuk panjang indeks, prosedur tersimpan, dan tabel dependen) memenuhi persyaratan. Hasil penilaian ditampilkan selama pemeriksaan awal tetapi tidak memengaruhi hasil pemeriksaan awal. Hanya tersedia saat Schema Synchronization dipilih. |
| Synchronization Topology | Pilih One-way Synchronization. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors (direkomendasikan): pemeriksaan awal gagal jika tujuan berisi tabel dengan nama yang sama seperti sumber. Gunakan pemetaan nama objek untuk menyelesaikan konflik penamaan. Ignore Errors and Proceed: melewati pemeriksaan awal untuk nama tabel yang identik. Selama sinkronisasi penuh, catatan tujuan yang ada dengan nilai kunci utama atau unik yang cocok dipertahankan. Selama sinkronisasi inkremental, catatan yang cocok ditimpa. Perbedaan skema dapat menyebabkan sinkronisasi parsial atau kegagalan tugas. |
| Capitalization of Object Names in Destination Instance | Mengontrol kapitalisasi nama database, tabel, dan kolom di tujuan. Default-nya adalah DTS default policy. Lihat Tentukan kapitalisasi nama objek di instans tujuan. |
| Source Objects | Pilih objek yang akan disinkronkan (kolom, tabel, atau database) dan klik ikon panah untuk menambahkannya ke Selected Objects. Memilih tabel atau kolom mengecualikan jenis objek lain (view, trigger, prosedur tersimpan) dari sinkronisasi. |
| Selected Objects | Untuk mengganti nama satu objek di tujuan, klik kanan objek tersebut dan pilih opsi ganti nama. Untuk mengganti nama beberapa objek sekaligus, klik Batch Edit. Lihat Pemetaan nama objek. Untuk memfilter baris menggunakan kondisi WHERE, klik kanan objek dan atur kondisinya. Lihat Atur kondisi filter. Untuk menyinkronkan operasi SQL tertentu untuk tabel atau database, klik kanan objek dan pilih operasinya. |
Mengganti nama objek dengan pemetaan nama objek dapat menyebabkan objek lain yang bergantung padanya gagal disinkronkan.
Langkah 6: Konfigurasi pengaturan lanjutan
Klik Next: Advanced Settings dan isi parameter berikut:
| Parameter | Deskripsi |
|---|---|
| Dedicated Cluster for Task Scheduling | Secara default, DTS menjadwalkan tugas di kluster bersama. Beli kluster khusus untuk stabilitas yang lebih baik. 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 | Mengontrol apakah akan menyinkronkan tabel sementara yang dihasilkan oleh alat DDL online. Jika menggunakan DMS atau gh-ost untuk DDL online, pilih Yes untuk menyinkronkan data tabel sementara (catatan: operasi besar memperpanjang waktu sinkronisasi), No, Adapt to DMS Online DDL untuk hanya menyinkronkan DDL akhir (tabel tujuan mungkin terkunci), atau No, Adapt to gh-ost untuk hanya menyinkronkan DDL akhir dari gh-ost (tabel tujuan mungkin terkunci). Jangan gunakan pt-online-schema-change saat tabel (bukan seluruh database) dipilih sebagai objek sinkronisasi — hal ini akan menyebabkan tugas gagal. |
| Whether to Migrate Accounts | Pilih Yes untuk menyinkronkan informasi akun dari sumber. Tentukan akun yang akan disinkronkan dan tinjau izinnya. |
| Retry Time for Failed Connections | Berapa lama DTS mencoba koneksi yang gagal setelah tugas dimulai. Nilai valid: 10–1440 menit. Default: 720 menit. Atur lebih dari 30 menit. Jika DTS terhubung kembali dalam jangka waktu ini, tugas dilanjutkan. Jika tidak, tugas gagal. Catatan: saat DTS mencoba koneksi ulang, Anda dikenai biaya untuk instans DTS. Jika Anda menentukan rentang waktu coba ulang yang berbeda untuk beberapa tugas yang berbagi database sumber atau tujuan yang sama, rentang waktu coba ulang terpendek yang berlaku. Kami merekomendasikan untuk segera melepas instans DTS setelah instans sumber dan tujuan dilepas. |
| Retry Time for Other Issues | Berapa lama DTS mencoba ulang operasi DDL atau DML yang gagal. Nilai valid: 1–1440 menit. Default: 10 menit. Atur lebih dari 10 menit. Nilai ini harus kurang dari Retry Time for Failed Connections. |
| Enable Throttling for Full Data Migration | Membatasi beban baca/tulis selama sinkronisasi data penuh. Konfigurasi Queries per second (QPS) to the source database, RPS of Full Data Migration, dan Data migration speed for full migration (MB/s). Hanya terlihat saat Full Data Synchronization dipilih. |
| Enable Throttling for Incremental Data Synchronization | Membatasi beban selama sinkronisasi inkremental. Konfigurasi RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s). |
| Environment Tag | Beri tag instans DTS untuk identifikasi. Opsional. |
| Whether to delete SQL operations on heartbeat tables of forward and reverse tasks | Mengontrol apakah DTS menulis operasi SQL heartbeat ke database sumber. Pilih Yes untuk melewati penulisan (latensi sinkronisasi mungkin muncul di halaman tugas). Pilih No untuk menulis operasi heartbeat (hal ini dapat memengaruhi backup fisik dan kloning database sumber). |
| Configure ETL | Pilih Yes untuk mengaktifkan fitur ekstrak, transformasi, muat (ETL) dan masukkan pernyataan pemrosesan. Lihat Apa itu ETL? dan Konfigurasi ETL dalam tugas migrasi data atau sinkronisasi data. |
| Monitoring and Alerting | Pilih Yes untuk menerima notifikasi saat tugas gagal atau latensi sinkronisasi melebihi ambang batas. Konfigurasi ambang batas peringatan dan pengaturan notifikasi. Lihat Konfigurasi pemantauan dan peringatan. |
Langkah 7: Konfigurasi verifikasi data (opsional)
Klik Next Step: Data Verification untuk mengatur verifikasi data untuk tugas. Lihat Konfigurasi tugas verifikasi data.
Langkah 8: Jalankan pemeriksaan awal
Klik Next: Save Task Settings and Precheck.
Untuk melihat pratinjau parameter API untuk konfigurasi ini, arahkan kursor ke Next: Save Task Settings and Precheck dan klik Preview OpenAPI parameters.
DTS menjalankan pemeriksaan awal sebelum tugas dapat dimulai. Tunggu hingga pemeriksaan awal selesai:
Jika suatu item gagal, klik View Details untuk melihat penyebabnya dan perbaiki masalah tersebut, lalu klik Precheck Again.
Jika suatu item menampilkan peringatan, perbaiki masalah tersebut atau klik Confirm Alert Details > Ignore > OK > Precheck Again untuk melanjutkan. Mengabaikan peringatan dapat menyebabkan ketidakkonsistenan data.
Langkah 9: Beli instans
Setelah Success Rate mencapai 100%, klik Next: Purchase Instance.
Di halaman buy, konfigurasi hal berikut:
| Bagian | Parameter | Deskripsi |
|---|---|---|
| New Instance Class | Billing Method | Subscription: bayar di muka untuk periode tetap. Lebih hemat biaya untuk penggunaan jangka panjang. Pay-as-you-go: ditagih per jam. Cocok untuk penggunaan jangka pendek; lepas instans saat tidak lagi diperlukan untuk menghentikan biaya. |
| Resource Group Settings | Kelompok sumber daya untuk instans. Default: default resource group. Lihat Apa itu Resource Management? | |
| Instance Class | Mengontrol throughput sinkronisasi. Lihat Kelas instans instansi sinkronisasi data. | |
| Subscription Duration | Tersedia saat Subscription dipilih. 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, lalu klik Buy and Start dan konfirmasi.
Tugas muncul di daftar tugas. Pantau perkembangannya di sana.
Langkah selanjutnya
Ubah objek yang akan disinkronkan — tambahkan atau hapus tabel dan database dari tugas yang sedang berjalan
Lihat log tugas — diagnosa pernyataan DDL yang gagal atau kesalahan sinkronisasi
Pemetaan nama objek — ganti nama objek di tujuan tanpa mengubah sumber
Konfigurasi pemantauan dan peringatan — dapatkan notifikasi saat tugas gagal atau latensi melonjak