Data Transmission Service (DTS) memungkinkan Anda menyinkronkan data antar database secara real time. Topik ini memandu Anda melalui langkah-langkah konfigurasi tugas sinkronisasi data di klaster khusus DTS — dalam contoh ini, dari satu instans ApsaraDB RDS for MySQL ke instans lainnya.
Kasus penggunaan umum mencakup redundansi geo-aktif, pemulihan bencana geo, pemulihan bencana zona, sinkronisasi data lintas batas, sistem Intelijen Bisnis (BI) cloud, dan data warehousing real time.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Membuat klaster khusus DTS. Untuk informasi lebih lanjut, lihat Buat klaster khusus DTS.
Membuat instans sumber dan tujuan ApsaraDB RDS for MySQL. Untuk informasi lebih lanjut, lihat Buat instans ApsaraDB RDS for MySQL.
Memiliki ruang penyimpanan yang cukup pada instans tujuan — harus lebih besar daripada ukuran total data pada instans sumber.
Instans sumber, instans tujuan, dan klaster khusus DTS berada dalam Wilayah yang sama.
Batasan
Persyaratan database sumber
Tabel yang akan disinkronkan harus memiliki kendala PRIMARY KEY atau UNIQUE, dan semua bidang harus unik. Jika tidak, database tujuan mungkin berisi catatan duplikat.
Jika Anda memilih tabel (bukan seluruh database) dan perlu mengganti nama tabel atau kolom, batasnya adalah 1.000 tabel per tugas sinkronisasi. Untuk lebih dari 1.000 tabel, bagi menjadi beberapa tugas atau sinkronkan seluruh database saja.
Persyaratan binary logging:
Binary logging harus diaktifkan, dan
binlog_row_imageharus diatur kefull. Untuk detailnya, lihat Ubah parameter instans ApsaraDB RDS for MySQL.PentingUntuk Database MySQL yang dikelola sendiri: - Atur
binlog_formatkerowdanbinlog_row_imagekefull. - Untuk penerapan kluster dual-primary, aturlog_slave_updateskeONagar DTS dapat memperoleh semua log biner. Untuk informasi lebih lanjut, lihat Buat akun untuk Database MySQL yang dikelola sendiri dan konfigurasikan binary logging.Hanya untuk sinkronisasi inkremental: pertahankan log biner minimal selama 24 jam.
Untuk sinkronisasi penuh dan inkremental: pertahankan log biner minimal selama tujuh hari. Setelah sinkronisasi data penuh awal selesai, Anda dapat mengatur periode retensi lebih dari 24 jam.
Jika persyaratan retensi log biner tidak terpenuhi, DTS mungkin gagal memperoleh log yang diperlukan, sehingga menyebabkan kegagalan tugas, inkonsistensi data, atau kehilangan data. Dalam kasus tersebut, Service Level Agreement (SLA) DTS tidak menjamin keandalan atau kinerja layanan. Untuk informasi lebih lanjut tentang file log biner, lihat Lihat dan hapus file log biner instans ApsaraDB RDS for MySQL.
Perilaku sinkronisasi skema
DTS menyinkronkan kunci asing dari database sumber ke database tujuan selama sinkronisasi skema.
Selama sinkronisasi penuh dan inkremental, DTS sementara menonaktifkan pemeriksaan kendala kunci asing dan operasi kaskade pada tingkat session. Operasi update atau delete kaskade pada sumber selama sinkronisasi dapat menyebabkan inkonsistensi data.
Batasan lainnya
Versi database tujuan harus sama dengan atau lebih baru daripada versi database sumber. Versi tujuan yang lebih lama dapat menyebabkan masalah kompatibilitas.
Jalankan sinkronisasi selama jam sepi. Sinkronisasi data penuh awal menggunakan sumber daya baca dan tulis pada kedua instans dan meningkatkan beban server.
Setelah sinkronisasi data penuh awal, ruang tabel tujuan akan lebih besar daripada sumber karena fragmentasi akibat operasi INSERT konkuren.
Jika menyinkronkan tabel tertentu (bukan seluruh database), jangan gunakan tool seperti pt-online-schema-change untuk operasi DDL selama sinkronisasi — tugas akan gagal. Jika Anda memerlukan DDL Online pada tabel sumber, gunakan Data Management (DMS). Untuk informasi lebih lanjut, lihat Lakukan operasi DDL tanpa lock.
Lakukan penulisan ke database tujuan hanya melalui DTS selama sinkronisasi. Menulis melalui tool lain dapat menyebabkan inkonsistensi atau kehilangan data.
Catatan untuk Database MySQL yang dikelola sendiri
Alih bencana primary/secondary pada database sumber saat tugas sedang berjalan menyebabkan tugas gagal.
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 pada sumber dalam periode panjang, latensi yang ditampilkan mungkin tidak akurat. Untuk memperbarui pembacaan latensi, lakukan operasi DML pada sumber.
Jika Anda menyinkronkan seluruh database, buat tabel heartbeat yang diperbarui setiap detik agar pembacaan latensi tetap akurat.
DTS secara berkala mengeksekusi
CREATE DATABASE IF NOT EXISTS 'test'di database sumber untuk memajukan posisi file log biner.
Topologi sinkronisasi yang didukung
Sinkronisasi satu arah satu-ke-satu
Sinkronisasi satu arah satu-ke-banyak
Sinkronisasi satu arah kaskade
Sinkronisasi satu arah banyak-ke-satu
Sinkronisasi dua arah satu-ke-satu
Untuk informasi lebih lanjut, lihat Topologi sinkronisasi.
Operasi SQL yang dapat disinkronkan
| 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 |
Pernyataan DDL yang tidak tercantum di atas tidak disinkronkan.
Konfigurasikan tugas sinkronisasi data
Langkah 1: Buka halaman klaster khusus
Buka halaman Klaster Khusus.
Di bilah navigasi atas, pilih Wilayah tempat klaster khusus DTS Anda berada.
Pada kolom Actions klaster khusus DTS, pilih Configure Task > Configure Data Synchronization Task.
Langkah 2: Konfigurasikan database sumber dan tujuan
Setelah mengonfigurasi database sumber dan tujuan, baca batasan yang ditampilkan di bagian atas halaman sebelum melanjutkan. Melewatkan langkah ini dapat menyebabkan kegagalan tugas atau inkonsistensi data.
Umum
| Parameter | Deskripsi |
|---|---|
| Task Name | DTS menghasilkan nama secara otomatis. Tentukan nama deskriptif sesuai kebutuhan bisnis Anda. Nama tidak perlu unik. |
Source Database
| Parameter | Deskripsi |
|---|---|
| Select an existing database connection (Opsional) | Pilih koneksi yang sudah ada untuk menggunakan ulang pengaturannya. Jika tidak ada koneksi yang tersedia, konfigurasikan parameter di bawah secara manual. |
| Database Type | Pilih MySQL. |
| Connection Type | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah ditetapkan saat Anda membuat klaster khusus dan tidak dapat diubah. |
| Replicate Data Across Alibaba Cloud Accounts | Pilih No untuk contoh ini. |
| RDS Instance ID | ID instans sumber ApsaraDB RDS for MySQL. Instans sumber dan tujuan dapat sama atau berbeda — DTS mendukung sinkronisasi antara dua instans atau dalam satu instans. |
| Database Account | Akun database dengan izin baca pada objek yang akan disinkronkan. |
| Database Password | Password akun database. |
| Encryption | Pilih Non-encrypted atau SSL-encrypted. Jika Anda memilih SSL-encrypted, aktifkan enkripsi SSL pada instans sebelum mengonfigurasi tugas ini. Untuk informasi lebih lanjut, lihat Konfigurasikan enkripsi SSL untuk instans ApsaraDB RDS for MySQL. |
Destination Database
| Parameter | Deskripsi |
|---|---|
| Select an existing database connection (Opsional) | Pilih koneksi yang sudah ada untuk menggunakan ulang pengaturannya. Jika tidak ada koneksi yang tersedia, konfigurasikan parameter di bawah secara manual. |
| Database Type | Pilih MySQL. |
| Connection Type | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah instans tujuan ApsaraDB RDS for MySQL. |
| RDS Instance ID | ID instans tujuan ApsaraDB RDS for MySQL. |
| Database Account | Akun database dengan izin baca dan tulis pada database tujuan. |
| Database Password | Password akun database. |
| Encryption | Pilih Non-encrypted atau SSL-encrypted. Jika Anda memilih SSL-encrypted, aktifkan enkripsi SSL pada instans sebelum mengonfigurasi tugas ini. Untuk informasi lebih lanjut, lihat Konfigurasikan enkripsi SSL untuk instans ApsaraDB RDS for MySQL. |
Langkah 3: Uji konektivitas
Klik Test Connectivity and Proceed.
DTS secara otomatis menangani akses jaringan berdasarkan jenis database Anda:
Instans database Alibaba Cloud (seperti ApsaraDB RDS for MySQL atau ApsaraDB for MongoDB): DTS secara otomatis menambahkan Blok CIDR servernya ke daftar putih instans.
Database yang dikelola sendiri pada Elastic Compute Service (ECS): DTS menambahkan Blok CIDR servernya ke aturan security group ECS. Pastikan instans ECS dapat mengakses database.
Database on-premises atau cloud pihak ketiga: Tambahkan secara manual Blok CIDR server DTS ke daftar putih database. Untuk informasi lebih lanjut, lihat Tambahkan Blok CIDR server DTS ke pengaturan keamanan database on-premises.
Menambahkan Blok CIDR DTS ke daftar putih atau aturan security group membawa risiko keamanan potensial. Sebelum melanjutkan, ambil tindakan pencegahan seperti memperkuat keamanan username dan password, membatasi port yang terbuka, mengautentikasi panggilan API, serta melakukan audit rutin terhadap daftar putih atau aturan security group. Untuk kebutuhan keamanan yang lebih tinggi, hubungkan database Anda ke DTS melalui Express Connect, VPN Gateway, atau Smart Access Gateway.
Langkah 4: Pilih objek dan konfigurasikan pengaturan sinkronisasi
Pilih mode sinkronisasi
DTS mendukung tiga mode sinkronisasi. Pilih kombinasi yang sesuai dengan kasus penggunaan Anda:
Schema synchronization: Menyinkronkan skema tabel (struktur DDL) dari sumber ke tujuan.
Full data synchronization: Menyalin semua data yang ada dari sumber ke tujuan. Ini menjadi garis dasar untuk sinkronisasi inkremental berikutnya.
Incremental data synchronization (dipilih secara default): Secara berkelanjutan mereplikasi perubahan data setelah sinkronisasi penuh awal.
Untuk contoh ini, pilih ketiganya: Schema Synchronization, Full Data Synchronization, dan Incremental Data Synchronization.
Parameter sinkronisasi
| Parameter | Deskripsi |
|---|---|
| Processing Mode of Conflicting Tables | Precheck and Report Errors (default): Pemeriksaan Awal gagal jika tujuan berisi tabel dengan nama yang sama seperti tabel sumber. Gunakan pemetaan nama objek untuk mengganti nama tabel yang disinkronkan jika diperlukan. Ignore Errors and Proceed: Melewati pemeriksaan konflik nama. Selama sinkronisasi penuh, catatan tujuan yang sudah ada dengan kunci primer yang sama dipertahankan. Selama sinkronisasi inkremental, catatan tersebut ditimpa. Jika skema berbeda antara sumber dan tujuan, inisialisasi data mungkin gagal atau hanya beberapa kolom yang disinkronkan. Gunakan dengan hati-hati. |
| Method to Migrate Triggers in Source Database | Pilih cara menyinkronkan pemicu. Jika tidak ada pemicu dalam cakupan, lewati parameter ini. Hanya tersedia saat Schema Synchronization dipilih. Untuk informasi lebih lanjut, lihat Sinkronkan atau migrasikan pemicu dari database sumber. |
| Enable Migration Assessment | Pilih Yes untuk memeriksa apakah skema sumber dan tujuan (panjang indeks, prosedur tersimpan, tabel dependen) memenuhi persyaratan. Hasil penilaian terlihat selama Pemeriksaan Awal tetapi tidak memengaruhi kelulusan Pemeriksaan Awal. Hanya tersedia saat Schema Synchronization dipilih. |
| Synchronization Topology | Pilih One-way Synchronization untuk contoh ini. |
| Capitalization of Object Names in Destination Instance | Mengontrol kapitalisasi nama database, tabel, dan kolom di instans tujuan. DTS default policy dipilih secara default. Untuk informasi lebih lanjut, lihat Tentukan kapitalisasi nama objek di instans tujuan. |
Pilih objek yang akan disinkronkan
Di bagian Source Objects, pilih objek yang akan disinkronkan dan klik ikon panah ke kanan untuk memindahkannya ke bagian Selected Objects.
Anda dapat memilih kolom, tabel, atau seluruh database. Memilih tabel atau kolom berarti DTS tidak menyinkronkan view, pemicu, atau prosedur tersimpan ke tujuan.
Di bagian Selected Objects, Anda dapat:
Mengganti nama satu objek: klik kanan objek tersebut. Untuk informasi lebih lanjut, lihat Petakan nama satu objek.
Mengganti nama beberapa objek sekaligus: klik Batch Edit di pojok kanan atas. Untuk informasi lebih lanjut, lihat Petakan beberapa nama objek sekaligus.
Memfilter operasi SQL tertentu per objek: klik kanan objek dan pilih operasi SQL yang akan disinkronkan.
Memfilter data dengan kondisi WHERE: klik kanan objek dan tentukan kondisinya. Untuk informasi lebih lanjut, lihat Gunakan kondisi SQL untuk memfilter data.
Mengganti nama objek dengan pemetaan nama objek dapat menyebabkan objek lain yang bergantung padanya gagal disinkronkan.
Langkah 5: Konfigurasikan pengaturan lanjutan
Klik Next: Advanced Settings dan konfigurasikan parameter berikut.
Verifikasi data
Untuk informasi tentang mengaktifkan verifikasi data, lihat Aktifkan verifikasi data.
Pengaturan lanjutan
| Parameter | Deskripsi |
|---|---|
| Select the dedicated cluster used to schedule the task | Klaster khusus DTS Anda dipilih secara default. |
| Set Alerts | Konfigurasikan Peringatan untuk kegagalan tugas atau latensi yang melebihi ambang batas. Pilih No untuk melewati, atau Yes untuk mengonfigurasi ambang batas peringatan dan kontak. Untuk informasi lebih lanjut, lihat Konfigurasikan Pemantauan Peringatan saat membuat tugas DTS. |
| Copy the temporary table of the Online DDL tool that is generated in the source table to the destination database | Mengontrol cara DTS menangani tabel temporary yang dihasilkan oleh tool DDL Online (Data Management (DMS) atau gh-ost). Yes: menyinkronkan data tabel temporary. Perhatikan bahwa operasi DDL Online berskala besar dapat memperpanjang waktu sinkronisasi secara signifikan. No, Adapt to DMS Online DDL: tidak menyinkronkan tabel temporary; hanya DDL asli dari DMS yang disinkronkan. Tabel tujuan mungkin terkunci selama operasi. No, Adapt to gh-ost: tidak menyinkronkan tabel temporary; hanya DDL asli dari gh-ost yang disinkronkan. Tabel tujuan mungkin terkunci. Gunakan ekspresi reguler default atau kustom untuk memfilter tabel shadow. Penting pt-online-schema-change tidak didukung — menggunakannya menyebabkan tugas DTS gagal. |
| Whether to Migrate Accounts | Pilih Yes untuk menyinkronkan informasi akun database dari sumber. Jika dipilih, pilih akun yang akan disinkronkan. Izin yang diperlukan: akun sumber memerlukan SELECT pada mysql.user, mysql.db, mysql.columns_priv, dan mysql.tables_priv. Akun tujuan memerlukan CREATE USER dan GRANT OPTION. Akun sistem (root, mysql.infoschema, mysql.session, mysql.sys) dan akun yang sudah ada di database tujuan tidak dapat disinkronkan. |
| Method to Migrate Triggers in Source Database | Pilih mode untuk menyinkronkan pemicu. Jika tidak ada pemicu dalam cakupan, lewati parameter ini. Untuk informasi lebih lanjut, lihat Sinkronkan atau migrasikan pemicu dari database sumber. |
| Retry Time for Failed Connection | Berapa lama DTS mencoba ulang saat database sumber atau tujuan tidak dapat dijangkau setelah tugas dimulai. Nilai valid: 10–1.440 menit. Default: 720 menit. Tetapkan nilai lebih dari 30 menit. Jika beberapa tugas DTS berbagi database sumber atau tujuan yang sama, waktu retry terpendek di antara mereka yang berlaku. DTS mengenakan biaya untuk instans selama periode retry — segera rilis instans jika instans sumber atau tujuan tidak lagi diperlukan. |
| The wait time before a retry when other issues occur in the source and destination databases | Berapa lama DTS mencoba ulang saat operasi DDL atau DML gagal. Nilai valid: 1–1.440 menit. Default: 10 menit. Tetapkan nilai lebih dari 10 menit. Nilai ini harus lebih kecil daripada Retry Time for Failed Connection. |
Langkah 6: Jalankan Pemeriksaan Awal
Klik Next: Save Task Settings and Precheck.
DTS menjalankan Pemeriksaan Awal sebelum tugas dapat dimulai. Tugas hanya diluncurkan setelah semua item Pemeriksaan Awal lulus.
Jika item Pemeriksaan Awal gagal: klik View Details, atasi masalahnya, lalu klik Precheck Again.
Jika peringatan dipicu:
Jika peringatan tidak dapat diabaikan: klik View Details, selesaikan masalahnya, lalu jalankan Pemeriksaan Awal lagi.
Jika peringatan dapat diabaikan: klik Confirm Alert Details, lalu Ignore, kemudian OK, lalu Precheck Again.
Mengabaikan item peringatan dapat menyebabkan inkonsistensi data dan mengekspos bisnis Anda terhadap risiko potensial.
Langkah 7: Mulai tugas
Tunggu hingga tingkat keberhasilan Pemeriksaan Awal mencapai 100%, lalu klik Next: Select DTS Instance Type.
Di bagian New Instance Class, konfigurasikan kelas instans. Tetapkan minimal 1 unit DTS (DU) hingga jumlah DU tersisa yang tersedia.
Baca dan centang kotak untuk menyetujui Data Transmission Service (Pay-as-you-go) Service Terms.
Klik Start Task, lalu klik OK.
Untuk memantau progres tugas, buka halaman detail klaster dan klik Cluster Task List di panel navigasi kiri.