Data Transmission Service (DTS) mendukung sinkronisasi data dua arah secara real-time antara dua database MySQL, seperti ApsaraDB RDS for MySQL dan MySQL yang dikelola sendiri. Fitur ini cocok untuk berbagai skenario, termasuk redundansi geo-aktif dan pemulihan bencana geo. Topik ini menggunakan instans ApsaraDB RDS for MySQL sebagai contoh untuk menjelaskan prosedur konfigurasi. Prosedur untuk sumber data lainnya serupa.
Prasyarat
Diperlukan instans RDS MySQL sumber dan target. Buat instans RDS jika belum tersedia.
Catatan
Saat DTS melakukan sinkronisasi data penuh awal, sumber daya baca dan tulis dari database sumber dan tujuan akan dikonsumsi, sehingga dapat meningkatkan beban database. Jika database Anda memiliki performa buruk, spesifikasi rendah, atau lalu lintas layanan tinggi, beban tersebut dapat meningkat secara signifikan. Contoh kondisi tersebut meliputi database sumber dengan banyak pernyataan SQL lambat atau tabel tanpa primary key, serta database tujuan yang mengalami deadlock. Hal ini bahkan dapat menyebabkan layanan database tidak tersedia. Oleh karena itu, evaluasi performa database sumber dan tujuan sebelum melakukan sinkronisasi data. Kami merekomendasikan agar sinkronisasi dilakukan pada jam sepi, misalnya ketika beban CPU kedua database berada di bawah 30%.
Selama sinkronisasi data, jangan gunakan alat seperti gh-ost atau pt-online-schema-change untuk melakukan operasi DDL Online pada objek sinkronisasi di database sumber. Jika tidak, tugas sinkronisasi akan gagal.
Jika tidak ada data selain data dari DTS yang ditulis ke database tujuan, Anda dapat menggunakan Data Management (DMS) untuk melakukan operasi DDL Online. Untuk informasi lebih lanjut, lihat Ubah skema tabel tanpa mengunci tabel.
Jika database tujuan adalah instans ApsaraDB RDS for MySQL (tidak termasuk versi 5.7 dan 8.0), DTS membuat akun sinkronisasi data bernama dtssyncwriter di database tujuan. Akun ini memiliki izin tulis dan hanya digunakan oleh DTS.
Instans sinkronisasi dua arah mencakup tugas forward dan tugas reverse. Saat Anda mengonfigurasi atau mengatur ulang instans sinkronisasi dua arah, jika objek tujuan dari satu tugas merupakan objek yang akan disinkronisasi oleh tugas lainnya:
Hanya satu tugas yang dapat menyinkronisasi data penuh dan inkremental. Tugas lainnya hanya dapat menyinkronisasi data inkremental.
Data sumber dari tugas saat ini hanya dapat disinkronisasi ke tujuan tugas saat ini. Data yang telah disinkronisasi tidak akan digunakan sebagai data sumber untuk tugas lainnya.
Penagihan
| Tipe sinkronisasi | Biaya konfigurasi tugas |
| Sinkronisasi skema dan sinkronisasi data penuh | Gratis. |
| Sinkronisasi data inkremental | Dikenai biaya. Untuk informasi lebih lanjut, lihat Ikhtisar penagihan. |
Topologi sinkronisasi yang didukung
DTS hanya mendukung sinkronisasi dua arah antara dua database MySQL. Sinkronisasi dua arah di antara beberapa database MySQL tidak didukung.

Sumber data yang didukung
Sinkronisasi data dua arah antara database MySQL mendukung sumber data berikut. Topik ini menggunakan instans ApsaraDB RDS for MySQL sebagai contoh untuk menjelaskan prosedur konfigurasi, yang serupa untuk sumber data lainnya.
Database Sumber | Database Tujuan |
|
|
Operasi SQL yang didukung untuk sinkronisasi
Tipe operasi | Pernyataan SQL |
DML | INSERT, UPDATE, DELETE, dan REPLACE |
DDL |
|
Operasi DDL hanya dapat disinkronisasi dalam tugas forward dari database sumber ke database tujuan. Operasi DDL tidak didukung dalam tugas reverse dari database tujuan ke database sumber dan secara otomatis difilter.
Deteksi konflik yang didukung
Untuk memastikan konsistensi data, pastikan catatan dengan primary key, business primary key, atau unique key yang sama hanya diperbarui pada satu node. Jika catatan diperbarui secara bersamaan pada kedua node, DTS menangani konflik berdasarkan kebijakan resolusi yang Anda konfigurasikan untuk tugas sinkronisasi data.
DTS menggunakan deteksi dan resolusi konflik untuk memaksimalkan stabilitas instans sinkronisasi dua arah. DTS dapat mendeteksi jenis konflik berikut:
Konflik keunikan yang disebabkan oleh pernyataan INSERT
Batasan keunikan dilanggar saat pernyataan INSERT disinkronisasi. Misalnya, jika catatan dengan nilai primary key yang sama dimasukkan ke kedua node secara bersamaan, pernyataan INSERT gagal pada peer node karena catatan dengan nilai primary key yang sama sudah ada.
Catatan tidak cocok untuk pernyataan UPDATE
Jika catatan yang akan diperbarui oleh pernyataan UPDATE tidak ada di instans tujuan, DTS secara otomatis mengubah pernyataan tersebut menjadi pernyataan INSERT. Hal ini dapat menyebabkan konflik keunikan untuk unique key.
Catatan yang akan diperbarui oleh pernyataan UPDATE memiliki konflik primary key atau unique key.
Catatan yang akan dihapus tidak ada
Catatan yang akan dihapus oleh pernyataan DELETE tidak ada di instans tujuan. Jika konflik jenis ini terjadi, DTS secara otomatis mengabaikan operasi DELETE, terlepas dari kebijakan resolusi konflik yang dikonfigurasi.
Karena faktor seperti perbedaan waktu sistem antara kedua database dan latensi sinkronisasi, mekanisme deteksi konflik DTS tidak dapat menjamin pencegahan konflik data secara lengkap. Saat menggunakan sinkronisasi dua arah, Anda harus memodifikasi logika aplikasi untuk memastikan bahwa catatan dengan primary key, business primary key, atau unique key yang sama hanya diperbarui pada satu node.
DTS menyediakan kebijakan resolusi untuk konflik sinkronisasi data tersebut. Anda dapat memilih kebijakan saat mengonfigurasi sinkronisasi dua arah.
Batasan fitur
Tidak kompatibel dengan trigger
Jika objek sinkronisasi adalah seluruh database yang berisi trigger yang memperbarui konten tabel yang disinkronisasi, ketidakkonsistenan data dapat terjadi. Misalnya, sebuah database berisi dua tabel: Tabel A dan Tabel B. Tabel A memiliki trigger yang memasukkan satu baris data ke Tabel B setelah satu baris data dimasukkan ke Tabel A. Dalam kasus ini, jika operasi INSERT dilakukan pada Tabel A di instans sumber selama sinkronisasi, data di Tabel B menjadi tidak konsisten antara instans sumber dan tujuan.
Dalam kasus seperti ini, Anda harus menghapus trigger yang sesuai di instans tujuan. Data Tabel B disinkronisasi dari instans sumber. Untuk informasi lebih lanjut, lihat Bagaimana cara mengonfigurasi tugas sinkronisasi atau migrasi ketika database sumber berisi trigger?.
Batasan operasi RENAME TABLE
Operasi RENAME TABLE dapat menyebabkan ketidakkonsistenan data. Misalnya, jika objek sinkronisasi adalah satu tabel dan Anda mengganti nama tabel tersebut di instans sumber selama sinkronisasi, data tabel tersebut tidak disinkronisasi ke database tujuan. Untuk mencegah masalah ini, Anda dapat memilih seluruh database tempat tabel tersebut berada sebagai objek sinkronisasi.
Batasan arah sinkronisasi DDL
Untuk memastikan stabilitas tautan sinkronisasi dua arah, pembaruan DDL hanya dapat disinkronisasi dalam satu arah. Artinya, jika sinkronisasi DDL dikonfigurasi untuk satu arah, sinkronisasi DDL tidak didukung dalam arah sebaliknya. Hanya sinkronisasi DML yang dilakukan dalam arah sebaliknya.
Prosedur
Beli instans sinkronisasi data dua arah. Untuk informasi lebih lanjut, lihat Beli tugas sinkronisasi data.
PentingSaat membeli instans, atur tipe instans sumber dan tujuan ke MySQL dan topologi sinkronisasi ke Two-way Synchronization.
Masuk ke Konsol Data Transmission Service.
CatatanJika Anda dialihkan ke Konsol Data Management (DMS), Anda dapat mengklik ikon
di pojok kanan bawah lalu klik ikon
untuk kembali ke versi sebelumnya dari Konsol DTS.Di panel navigasi sebelah kiri, klik Data Synchronization.
Di bagian atas halaman Synchronization Tasks, pilih wilayah tempat instans tujuan berada.
Temukan instans sinkronisasi data yang telah dibeli dan klik Configure Synchronization Channel untuk tugas sinkronisasi pertama.
PentingInstans sinkronisasi data dua arah terdiri dari dua tugas sinkronisasi yang harus dikonfigurasi secara terpisah.

Konfigurasikan instans sumber dan tujuan untuk saluran sinkronisasi.

Kategori
Konfigurasi
Deskripsi
N/A
Synchronization Task Name
DTS secara otomatis menghasilkan nama untuk task sinkronisasi. Tentukan nama deskriptif agar mudah diidentifikasi. Nama tersebut tidak perlu unik.
Informasi Instans Sumber
Instance Type
Pilih RDS Instance.
Instance Region
Wilayah instans sumber yang Anda pilih saat membeli instansi sinkronisasi data. Parameter ini tidak dapat diubah.
Instance ID
Pilih ID instans RDS yang ingin Anda gunakan sebagai sumber sinkronisasi data.
Database Account
Masukkan akun database dari instans RDS sumber.
PentingJika tipe database instans RDS sumber adalah MySQL 5.5 atau MySQL 5.6, item konfigurasi Database Account dan Database Password tidak tersedia.
Database Password
Masukkan password yang sesuai dengan akun database tersebut.
Encryption
Pilih Non-encrypted atau SSL-encrypted sesuai kebutuhan. Jika Anda memilih SSL-encrypted, Anda harus mengaktifkan Enkripsi SSL untuk instans RDS terlebih dahulu. Untuk informasi selengkapnya, lihat Configure SSL encryption.
PentingSaat ini, pengaturan Encryption hanya tersedia di wilayah Daratan Tiongkok dan China (Hong Kong).
Informasi Instans Tujuan
Instance Type
Pilih RDS Instance.
Instance Region
Wilayah instans tujuan yang Anda pilih saat membeli instansi sinkronisasi data. Parameter ini tidak dapat diubah.
Instance ID
Pilih ID instans RDS yang ingin Anda gunakan sebagai tujuan sinkronisasi data.
Database Account
Masukkan akun database dari instans RDS tujuan.
PentingJika tipe database instans RDS tujuan adalah MySQL 5.5 atau MySQL 5.6, item konfigurasi Database Account dan Database Password tidak tersedia.
Database Password
Masukkan password yang sesuai dengan akun database tersebut.
Encryption
Pilih Non-encrypted atau SSL-encrypted sesuai kebutuhan. Jika Anda memilih SSL-encrypted, Anda harus mengaktifkan Enkripsi SSL untuk instans RDS terlebih dahulu. Untuk informasi selengkapnya, lihat Configure SSL encryption.
PentingSaat ini, pengaturan Encryption hanya tersedia di wilayah Daratan Tiongkok dan China (Hong Kong).
Di pojok kanan bawah halaman, 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 blok CIDR server DTS di wilayah yang sesuai ke daftar putih instans database Alibaba Cloud. Jika database sumber atau tujuan adalah database yang dikelola sendiri yang di-hosting pada instance ECS, DTS secara otomatis menambahkan blok CIDR server DTS di wilayah yang sesuai ke aturan keamanan instance ECS. Anda juga harus memastikan bahwa database yang dikelola sendiri mengizinkan akses dari instance ECS. Jika database ditempatkan dalam kluster pada beberapa instance ECS, Anda harus secara manual menambahkan blok CIDR server DTS di wilayah yang sesuai ke aturan keamanan setiap instance ECS. 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 blok CIDR server DTS di wilayah yang sesuai untuk mengizinkan akses dari server DTS. Untuk blok CIDR server DTS, lihat Blok CIDR server DTS.
PeringatanMenambahkan blok alamat IP publik layanan DTS, baik secara otomatis maupun manual, dapat menimbulkan risiko keamanan. Dengan menggunakan produk ini, Anda mengakui bahwa Anda memahami dan menerima risiko keamanan potensial tersebut dan bahwa Anda harus menerapkan langkah-langkah keamanan dasar. Langkah-langkah tersebut meliputi, namun tidak terbatas pada, memperkuat keamanan password, membatasi port yang terbuka untuk setiap blok CIDR, menggunakan otentikasi untuk panggilan API internal, serta secara berkala memeriksa dan membatasi blok CIDR yang tidak diperlukan. Sebagai alternatif, Anda dapat terhubung melalui jaringan pribadi menggunakan jalur sewa, VPN Gateway, atau Smart Access Gateway.
Konfigurasikan kebijakan dan objek sinkronisasi.

Kategori
Konfigurasi
Deskripsi
Atur kebijakan sinkronisasi
Exclude DDL Statements
Pilih Yes untuk tidak menyinkronisasi operasi DDL.
Pilih No untuk menyinkronisasi operasi DDL.
PentingBatasan arah sinkronisasi sintaks DDL. Untuk memastikan stabilitas tautan sinkronisasi dua arah, sinkronisasi DDL hanya didukung dalam arah forward, tidak dalam arah reverse.
DML Statements for Synchronization
Pilih tipe DML yang akan disinkronisasi. Secara default, Insert, Update, dan Delete dipilih. Anda dapat menyesuaikan pilihan sesuai kebutuhan.
Conflict Resolution Policy
Pilih kebijakan resolusi untuk konflik sinkronisasi. Nilai default adalah TaskFailed. Anda dapat memilih kebijakan yang sesuai sesuai kebutuhan.
TaskFailed (Jika terjadi konflik, tugas melaporkan error dan keluar)
Ini adalah kebijakan resolusi konflik default. Ketika tugas sinkronisasi data mengalami salah satu jenis konflik di atas, tugas melaporkan error dan keluar. Tugas masuk ke status Failed dan memerlukan intervensi pengguna.
Ignore (Jika terjadi konflik, gunakan catatan yang bertentangan di instans tujuan)
Ketika tugas sinkronisasi data mengalami salah satu jenis konflik di atas, tugas melewati pernyataan sinkronisasi saat ini dan melanjutkan ke pernyataan berikutnya. Catatan yang bertentangan di database tujuan digunakan.
Overwrite (Jika terjadi konflik, timpa catatan yang bertentangan di instans tujuan)
Ketika tugas sinkronisasi data mengalami salah satu jenis konflik di atas, tugas menimpa catatan yang bertentangan di database tujuan.
Pilih objek yang akan disinkronisasi
N/A
Di kotak Available, klik objek yang ingin Anda sinkronisasi (pada level database atau tabel), lalu klik ikon
untuk memindahkannya ke kotak Selected.PentingJika Anda memilih seluruh database sebagai objek sinkronisasi, semua perubahan skema pada objek dalam database tersebut akan disinkronisasi ke database tujuan.
Secara default, nama objek sinkronisasi tetap tidak berubah. Untuk mengubah nama objek sinkronisasi di database tujuan, gunakan fitur pemetaan nama objek. Untuk informasi lebih lanjut, lihat Petakan nama objek sinkronisasi ke nama baru di instans tujuan.
Rename Databases and Tables
N/A
Anda dapat menggunakan fitur pemetaan nama objek untuk mengganti nama objek yang disinkronisasi ke instans tujuan. Untuk informasi lebih lanjut, lihat Pemetaan nama objek.
Source table DMS_ ONLINE_ Apakah Anda ingin menyalin tabel temporary ke database target selama DDL
N/A
Jika Anda menggunakan DMS untuk melakukan operasi DDL Online pada database sumber, Anda dapat menentukan apakah akan menyinkronisasi tabel temporary yang dihasilkan oleh operasi DDL Online.
Yes: DTS menyinkronisasi data tabel temporary yang dihasilkan oleh operasi DDL Online.
CatatanJika operasi DDL Online menghasilkan data dalam jumlah besar, tugas sinkronisasi data mungkin tertunda.
No: DTS tidak menyinkronisasi data tabel temporary yang dihasilkan oleh operasi DDL Online. Hanya data DDL asli dari database sumber yang disinkronisasi.
CatatanJika Anda memilih No, tabel di database tujuan mungkin terkunci.
Retry Time for Failed Connection
N/A
Secara default, jika DTS gagal terhubung ke database sumber atau tujuan, DTS mencoba koneksi ulang dalam 720 menit (12 jam) berikutnya. Anda dapat menentukan waktu percobaan ulang sesuai kebutuhan. Jika DTS berhasil terhubung kembali ke database sumber dan tujuan dalam waktu yang ditentukan, DTS melanjutkan tugas sinkronisasi data. Jika tidak, tugas sinkronisasi data gagal.
CatatanSaat DTS mencoba koneksi ulang, Anda dikenai biaya untuk instans DTS. Kami merekomendasikan agar Anda menentukan waktu percobaan ulang sesuai kebutuhan bisnis. Anda juga dapat melepaskan instans DTS sesegera mungkin setelah instans sumber dan tujuan dilepas.
Setelah menyelesaikan konfigurasi di atas, klik Next di pojok kanan bawah halaman.
Konfigurasikan pengaturan lanjutan untuk sinkronisasi awal.

Pada langkah ini, skema dan data objek sinkronisasi di instans sumber diinisialisasi di instans tujuan. Ini berfungsi sebagai data garis dasar untuk sinkronisasi data inkremental berikutnya. Sinkronisasi awal mencakup Initial Schema Synchronization dan Initial Full Data Synchronization. Secara default, Initial Schema Synchronization dan Initial Full Data Synchronization dipilih.
PentingTabel yang juga merupakan objek sinkronisasi dalam arah sebaliknya tidak diinisialisasi.
Setelah menyelesaikan konfigurasi di atas, klik Precheck di pojok kanan bawah halaman.
PentingSebelum tugas sinkronisasi data dimulai, pemeriksaan awal dilakukan. Tugas hanya dapat dimulai setelah semua item pemeriksaan lolos.
Jika pemeriksaan awal gagal, klik ikon
di sebelah item pemeriksaan yang gagal untuk melihat detailnya.Anda dapat memperbaiki masalah berdasarkan penyebabnya dan menjalankan pemeriksaan awal lagi.
Jika Anda ingin mengabaikan peringatan, klik Confirm shielding lalu klik Ignore the alarm and recheck untuk melewati item peringatan dan menjalankan pemeriksaan awal lagi.
Saat kotak dialog Precheck menampilkan The precheck is passed, tutup kotak dialog Precheck untuk memulai tugas sinkronisasi.
Tunggu hingga tugas sinkronisasi diinisialisasi. Saat status tugas berubah menjadi Synchronizing, inisialisasi selesai.
Anda dapat melihat status sinkronisasi data di halaman Synchronization Tasks.
Temukan tugas sinkronisasi kedua dan klik Configure Task. Ulangi Langkah 5 hingga Langkah 12 untuk mengonfigurasi tugas tersebut.

Setelah tugas sinkronisasi kedua dikonfigurasi, tunggu hingga status kedua tugas sinkronisasi berubah menjadi Synchronizing. Konfigurasi sinkronisasi data dua arah selesai.
