All Products
Search
Document Center

Data Transmission Service:Sinkronisasi data dua arah antara kluster PolarDB for MySQL

Last Updated:Mar 29, 2026

Sinkronisasi data dua arah menjaga dua kluster PolarDB for MySQL tetap selaras dalam kedua arah menggunakan Data Transmission Service (DTS). Setiap kluster dapat melayani operasi baca dan tulis secara bersamaan, sehingga konfigurasi ini umum digunakan dalam arsitektur aktif-aktif dan skenario redundansi lintas wilayah.

Penting

Sinkronisasi dua arah bekerja paling baik ketika data di setiap kluster dipisahkan secara operasional—artinya, catatan yang diperbarui oleh aplikasi di Kluster A tidak pernah diperbarui secara bersamaan oleh aplikasi di Kluster B. Jika catatan yang sama ditulis di kedua kluster secara konkuren, terjadi konflik. DTS menyediakan kebijakan resolusi konflik untuk menangani kasus tersebut, tetapi tidak dapat menjamin konsistensi penuh saat konflik terjadi akibat perbedaan jam sistem dan latensi sinkronisasi. Rancang aplikasi Anda agar menghindari penulisan konkuren ke catatan yang sama di berbagai kluster.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Kluster sumber dan tujuan harus memiliki kapasitas penyimpanan yang sama.

Batasan

Persyaratan database sumber

  • Kunci primary atau unik wajib ada: Tabel harus memiliki kendala PRIMARY KEY atau UNIQUE dengan semua bidang unik. Tanpa ini, database tujuan mungkin berisi catatan duplikat. Jika tabel Anda tidak memiliki primary key atau kendala UNIQUE, aktifkan Enable Exactly-Once Write saat mengonfigurasi instansi sinkronisasi. Untuk detailnya, lihat Sinkronkan tabel tanpa primary key atau kendala UNIQUE.

  • Batas jumlah tabel: Jika Anda melakukan sinkronisasi tingkat tabel dan perlu mengganti nama tabel atau kolom di database tujuan, satu tugas sinkronisasi mendukung maksimal 1.000 tabel. Untuk lebih dari 1.000 tabel, konfigurasikan beberapa tugas atau lakukan sinkronisasi tingkat database.

  • Persyaratan log biner:

    • Parameter loose_polar_log_bin harus diatur ke ON.

    • Log biner harus dipertahankan minimal selama 3 hari. Pertahankan selama 7 hari untuk mengurangi risiko inkonsistensi atau kehilangan data. Pastikan Anda mengonfigurasi periode retensi sesuai persyaratan ini. Jika tidak, keandalan atau kinerja layanan dalam Service Level Agreement (SLA) DTS tidak dapat dijamin. Atur periode retensi di pengaturan binary logging kluster. Untuk detailnya, lihat bagian Ubah periode retensi dalam "Aktifkan binary logging".

    Mengaktifkan binary logging menimbulkan biaya penyimpanan untuk ruang yang digunakan oleh log biner.
  • Tidak ada DDL selama sinkronisasi awal: Jangan jalankan pernyataan DDL untuk mengubah skema database atau tabel selama sinkronisasi skema atau sinkronisasi data penuh. Melakukannya menyebabkan tugas sinkronisasi gagal.

Arah sinkronisasi DDL

Operasi DDL hanya dapat disinkronkan dalam arah maju (dari sumber ke tujuan). Operasi DDL dalam arah sebaliknya diabaikan.

Artinya, semua perubahan skema—seperti menambah kolom, membuat indeks, atau mengganti nama tabel—harus diterapkan di kluster sumber. Jika Anda menerapkan DDL di kluster tujuan selama sinkronisasi, perubahan tersebut tidak akan dikirim balik, dan dapat menyebabkan inkonsistensi data.

Penting

Operasi RENAME TABLE dapat menyebabkan inkonsistensi data. Jika Anda memilih tabel sebagai objek sinkronisasi dan mengganti namanya selama sinkronisasi, DTS berhenti menyinkronkan data untuk tabel tersebut. Untuk mencegah hal ini, pilih database (bukan hanya tabel) sebagai objek sinkronisasi, dan pastikan nama database sebelum dan sesudah penggantian nama termasuk dalam cakupan sinkronisasi.

Batasan lainnya

  • DTS tidak menyinkronkan node read-only dari kluster PolarDB for MySQL sumber.

  • DTS tidak menyinkronkan tabel eksternal Object Storage Service (OSS).

  • DTS tidak menyinkronkan data yang menggunakan parser yang didefinisikan melalui komentar.

  • Jika data yang akan disinkronkan berisi karakter langka atau emoji yang memakan 4 byte, tabel tujuan harus menggunakan set karakter UTF8mb4. Jika Anda menggunakan sinkronisasi skema DTS, atur juga parameter character_set_server ke UTF8mb4 di database tujuan.

  • Jangan gunakan pt-online-schema-change untuk operasi DDL pada tabel sumber selama sinkronisasi. Hal ini menyebabkan tugas sinkronisasi gagal. Gunakan Data Management (DMS) atau gh-ost sebagai gantinya (hanya jika tidak ada sumber lain yang menulis ke database tujuan selama sinkronisasi).

  • Jika data dari sumber lain ditulis ke database tujuan selama sinkronisasi, inkonsistensi data dapat terjadi. Jika Anda menjalankan Online DDL dengan DMS sementara sumber lain menulis ke database tujuan, kehilangan data mungkin terjadi.

  • Jika pernyataan DDL gagal dieksekusi di database tujuan, tugas sinkronisasi tetap berjalan. Periksa log tugas untuk pernyataan DDL yang gagal. Untuk detailnya, lihat Lihat log tugas.

  • Jadwalkan sinkronisasi selama jam sepi bila memungkinkan. Selama sinkronisasi data penuh, DTS menggunakan sumber daya baca dan tulis di kedua kluster, yang meningkatkan beban. Setelah sinkronisasi data penuh, ruang tabel database tujuan akan lebih besar daripada database sumber akibat fragmentasi dari operasi INSERT konkuren.

  • Jika Anda ingin menyinkronkan akun dari database sumber ke database tujuan, Anda perlu meninjau prasyarat dan tindakan pencegahan. Untuk informasi lebih lanjut, lihat Migrasi akun database.

  • Jika tugas DTS gagal, dukungan teknis DTS berusaha memulihkannya dalam waktu 8 jam. Selama pemulihan, tugas mungkin dimulai ulang dan parameter tugas (bukan parameter database) mungkin dimodifikasi.

Spesifikasi sinkronisasi dua arah

  • Sinkronisasi dua arah hanya didukung antara dua kluster PolarDB for MySQL. Tidak didukung di antara lebih dari dua kluster.

  • DTS membuat database bernama dts di kluster tujuan untuk mencegah sinkronisasi melingkar. Jangan modifikasi database ini selama tugas berjalan.

  • Instansi sinkronisasi dua arah berisi tugas maju dan tugas balik. Saat suatu objek muncul di kedua tugas:

    • Hanya satu tugas yang menyinkronkan data penuh dan data inkremental untuk objek tersebut. Tugas lainnya hanya menyinkronkan data inkremental.

    • Data yang disinkronkan ke tujuan oleh satu tugas tidak digunakan sebagai data sumber untuk tugas lainnya (tidak ada loopback).

  • DTS secara berkala menjalankan CREATE DATABASE IF NOT EXISTS \test\`` di database sumber untuk memajukan posisi file log biner.

Penagihan

Jenis sinkronisasiBiaya
Sinkronisasi skema dan sinkronisasi data penuhGratis
Sinkronisasi data inkrementalDikenai biaya. Untuk detailnya, lihat Ikhtisar penagihan.

Operasi SQL yang didukung

Jenis operasiPernyataan SQL
DMLINSERT, UPDATE, DELETE
DDL (hanya arah maju)ALTER TABLE, ALTER VIEW; CREATE FUNCTION, CREATE INDEX, CREATE PROCEDURE, CREATE TABLE, CREATE VIEW; DROP INDEX, DROP TABLE; RENAME TABLE; TRUNCATE TABLE

Deteksi konflik

DTS memeriksa jenis konflik berikut selama sinkronisasi dua arah:

  • Konflik INSERT: Jika kunci primary yang sama dimasukkan di kedua kluster hampir bersamaan, salah satu operasi insert gagal disinkronkan karena catatan dengan kunci tersebut sudah ada di kluster lain.

  • Konflik UPDATE:

    • Jika catatan yang akan diperbarui tidak ada di kluster tujuan, DTS mengubah UPDATE menjadi INSERT. Hal ini dapat memicu konflik keunikan jika kunci primary atau unik bertabrakan dengan catatan yang sudah ada.

    • Jika kunci primary atau unik dari catatan yang akan dimasukkan bertabrakan dengan catatan yang sudah ada di kluster tujuan, terjadi konflik.

  • Konflik DELETE: Jika catatan yang akan dihapus tidak ada di kluster tujuan, DTS mengabaikan operasi DELETE terlepas dari kebijakan resolusi konflik.

Penting

DTS tidak menjamin bahwa deteksi konflik mencegah semua konflik data. Perbedaan waktu sistem antar kluster dan latensi sinkronisasi dapat menyebabkan penulisan yang bertentangan tidak terdeteksi. Rancang aplikasi Anda agar memastikan catatan dengan kunci primary, kunci primary bisnis, atau kunci unik yang sama hanya diperbarui di satu kluster dalam satu waktu.

Kebijakan resolusi konflik

Pilih kebijakan resolusi konflik global saat mengonfigurasi instansi sinkronisasi dua arah. Anda juga dapat mengonfigurasi kebijakan independen per database atau tabel.

KebijakanPerilaku
TaskFailedTugas melaporkan error dan berhenti. Selesaikan konflik secara manual dan mulai ulang tugas.
IgnorePernyataan yang bertentangan dilewati. Catatan yang ada di database tujuan dipertahankan.
OverwriteCatatan yang bertentangan di database tujuan ditimpa oleh catatan masuk.
UseMaxMembandingkan nilai kolom yang bertentangan dan menulis nilai yang lebih besar ke tujuan. Menggunakan fallback ke Overwrite jika catatan tidak ada atau tipe bidang tidak kompatibel.
UseMinMembandingkan nilai kolom yang bertentangan dan menulis nilai yang lebih kecil ke tujuan. Menggunakan fallback ke Ignore jika catatan tidak ada atau tipe bidang tidak kompatibel.
Jika Anda menjeda dan memulai ulang tugas sinkronisasi serta terjadi latensi, kebijakan resolusi konflik tidak berlaku selama jendela latensi tersebut. Data di database tujuan ditimpa secara default selama periode ini.

Konfigurasi sinkronisasi data dua arah

Langkah 1: Buka halaman Sinkronisasi Data

Konsol DTS

  1. Masuk ke Konsol DTS.Konsol DTS

  2. Di panel navigasi kiri, klik Data Synchronization.

  3. Di pojok kiri atas, pilih wilayah tempat instansi sinkronisasi akan berada.

Konsol DMS

Langkah-langkah aktual dapat berbeda tergantung mode dan tata letak konsol DMS. Untuk detailnya, lihat Mode simple dan Sesuaikan tata letak dan gaya konsol DMS.

  1. Masuk ke Konsol DMS.Konsol DMS

  2. Di bilah navigasi atas, arahkan penunjuk ke Data + AI, lalu pilih DTS (DTS) > Data Synchronization.

  3. Dari daftar drop-down di samping Data Synchronization Tasks, pilih wilayah tempat instansi sinkronisasi akan berada.

Langkah 2: Buat tugas sinkronisasi maju

  1. Klik Create Task.

  2. Opsional: Klik New Configuration Page di pojok kanan atas.

    Lewati langkah ini jika Back to Previous Version ditampilkan sebagai gantinya. Halaman konfigurasi baru direkomendasikan.
  3. Konfigurasikan database sumber dan tujuan:

    Untuk mendaftarkan database dengan DMS, klik Add DMS Database Instance di konsol DMS. Untuk detailnya, lihat Mendaftarkan instans database Alibaba Cloud. Untuk mendaftarkan database dengan DTS, gunakan halaman Database Connections. Untuk detailnya, lihat Mengelola koneksi database.
    BagianParameterDeskripsi
    N/ATask NameNama untuk tugas DTS. DTS menghasilkan nama secara otomatis. Gunakan nama deskriptif agar mudah diidentifikasi.
    Source DatabaseSelect a DMS database instance.Pilih instans database DMS yang sudah ada atau konfigurasi koneksi secara manual.
    Database TypePilih PolarDB for MySQL.
    Access MethodPilih Alibaba Cloud Instance.
    Instance RegionWilayah kluster PolarDB for MySQL sumber.
    Replicate Data Across Alibaba Cloud AccountsPilih No jika sumber dan tujuan berada di bawah akun yang sama.
    PolarDB Cluster IDID kluster sumber.
    Database AccountAkun istimewa untuk kluster sumber.
    Database PasswordKata sandi untuk akun database.
    EncryptionKonfigurasikan enkripsi SSL jika diperlukan. Untuk detailnya, lihat Konfigurasikan enkripsi SSL.
    Destination DatabaseSelect a DMS database instance.Pilih instans database DMS yang sudah ada atau konfigurasi koneksi secara manual.
    Database TypePilih PolarDB for MySQL.
    Access MethodPilih Alibaba Cloud Instance.
    Instance RegionWilayah kluster PolarDB for MySQL tujuan.
    Replicate Data Across Alibaba Cloud AccountsPilih No jika sumber dan tujuan berada di bawah akun yang sama.
    PolarDB Cluster IDID kluster tujuan.
    Database AccountAkun istimewa untuk kluster tujuan.
    Database PasswordKata sandi untuk akun database.
    EncryptionKonfigurasikan enkripsi SSL jika diperlukan.
  4. Klik Test Connectivity and Proceed. DTS secara otomatis menambahkan blok CIDR servernya ke daftar putih instans database Alibaba Cloud dan ke aturan grup keamanan instans Elastic Compute Service (ECS) yang menghosting database yang dikelola sendiri. Untuk database yang dihosting di pusat data atau cloud pihak ketiga, tambahkan secara manual blok CIDR server DTS ke daftar putih database. Untuk detailnya, lihat Tambahkan blok CIDR server DTS.

    Peringatan

    Menambahkan blok CIDR server DTS ke daftar putih atau aturan grup keamanan Anda menimbulkan risiko keamanan. Sebelum menggunakan DTS, ambil tindakan pencegahan: gunakan kredensial yang kuat, batasi port yang terbuka, autentikasi panggilan API, audit aturan daftar putih secara berkala, dan pertimbangkan untuk terhubung melalui Express Connect, VPN Gateway, atau Smart Access Gateway.

  5. Konfigurasikan objek yang akan disinkronkan. Di langkah Configure Objects:

    Jika Anda memilih tabel atau kolom sebagai objek sinkronisasi, DTS tidak menyinkronkan objek lain seperti view, trigger, atau prosedur tersimpan. Gunakan pemetaan nama objek dengan hati-hati—mengganti nama objek dapat mencegah objek dependen disinkronkan. Jangan gunakan pemetaan nama objek untuk tugas sinkronisasi balik karena dapat menyebabkan inkonsistensi data.
    ParameterDeskripsi
    Synchronization TypesPilih Schema Synchronization, Full Data Synchronization, dan Incremental Data Synchronization. Sinkronisasi data penuh menyalin data historis sebagai garis dasar untuk sinkronisasi inkremental.
    Method to Migrate Triggers in Source DatabasePilih cara menangani trigger. Hanya tersedia saat Schema Synchronization dipilih. Untuk detailnya, lihat Sinkronkan atau migrasikan trigger dari database sumber.
    Synchronization TopologyPilih Two-way Synchronization.
    Enable Exactly-Once WritePilih Yespengaturan pemberitahuan peringatan jika ada tabel yang akan disinkronkan tidak memiliki primary key atau kendala UNIQUE.
    Exclude DDL OperationsPilih Yes untuk melewati sinkronisasi DDL, atau No untuk menyertakannya. Sinkronisasi DDL hanya berjalan dalam arah maju. Parameter ini hanya muncul saat mengonfigurasi tugas arah maju.
    Global Conflict Resolution PolicyPilih kebijakan. Lihat Kebijakan resolusi konflik untuk detailnya.
    Processing Mode of Conflicting TablesPrecheck and Report Errors: Gagal dalam pemeriksaan awal jika tabel dengan nama identik ada di kedua database. Ignore Errors and Proceed: Melewati pemeriksaan ini. Jika skema cocok dan catatan dengan kunci primary atau unik yang sama ada di tujuan, DTS melewati catatan tersebut selama sinkronisasi penuh dan menimpanya selama sinkronisasi inkremental. Jika skema berbeda, data mungkin gagal diinisialisasi.
    Source ObjectsPilih satu atau beberapa objek dari bagian Source Objects dan klik ikon 向右 untuk menambahkannya ke bagian Selected Objects.
    Selected ObjectsKlik kanan objek untuk mengganti namanya, mengatur kondisi filter, menambah kolom, atau mengonfigurasi kebijakan resolusi konflik independen.
  6. Klik Next: Advanced Settings dan konfigurasikan parameter lanjutan:

    ParameterDeskripsi
    Dedicated Cluster for Task SchedulingBiarkan kosong untuk menggunakan kluster bersama. Beli kluster khusus untuk stabilitas tugas yang lebih tinggi.
    Select the engine type of the destination databasePilih InnoDB (default) atau X-Engine (mesin penyimpanan OLTP).
    Copy the temporary table of the Online DDL tool that is generated in the source table to the destination database.Jika Anda menggunakan DMS atau gh-ost untuk Online DDL di database sumber, pilih apakah akan menyinkronkan tabel sementara. Yes menyinkronkan data tabel sementara (dapat memperpanjang waktu sinkronisasi). No, Adapt to DMS Online DDL hanya menyinkronkan DDL akhir (tabel tujuan mungkin terkunci). No, Adapt to gh-ost hanya menyinkronkan DDL akhir dari gh-ost (tabel tujuan mungkin terkunci).
    Whether to Migrate AccountsPilih Yes untuk menyinkronkan akun database sumber. Tentukan host dan tinjau izin untuk setiap akun.
    Retry Time for Failed ConnectionsBerapa lama DTS mencoba ulang setelah kegagalan koneksi. Rentang: 10–1440 menit. Default: 720 menit. Atur minimal 30 menit. Jika beberapa tugas berbagi database sumber atau tujuan yang sama, waktu retry terpendek yang berlaku.
    Retry Time for Other IssuesBerapa lama DTS mencoba ulang setelah kegagalan DDL atau DML. Rentang: 1–1440 menit. Default: 10 menit. Atur minimal 10 menit. Harus kurang dari Retry Time for Failed Connections.
    Enable Throttling for Full Data SynchronizationAtur batas QPS dan bandwidth untuk sinkronisasi penuh guna mengurangi beban pada database sumber dan tujuan. Hanya tersedia saat sinkronisasi data penuh dipilih.
    Enable Throttling for Incremental Data SynchronizationAtur batas RPS dan bandwidth untuk sinkronisasi inkremental.
    Whether to delete SQL operations on heartbeat tables of forward and reverse tasksYes: DTS tidak menulis SQL heartbeat ke database sumber. Indikator latensi tugas mungkin menunjukkan nilai yang lebih tinggi. No: DTS menulis SQL heartbeat ke database sumber. Fitur backup fisik dan kloning di sumber mungkin terpengaruh.
    Environment TagOpsional. Tetapkan tag lingkungan untuk mengidentifikasi instans DTS.
    Configure ETLPilih Yes untuk mengaktifkan fitur ekstrak, transformasi, muat (ETL) dan masukkan pernyataan pemrosesan data. Untuk detailnya, lihat Konfigurasikan ETL dalam tugas migrasi data atau sinkronisasi data.
    Monitoring and AlertingPilih Yes untuk menerima notifikasi saat tugas gagal atau latensi sinkronisasi melebihi ambang batas. Konfigurasikan ambang batas peringatan dan pengaturan notifikasi.
  7. Klik Next Step: Data Verification untuk mengonfigurasi verifikasi data. Untuk detailnya, lihat Konfigurasikan tugas verifikasi data.

  8. Klik Next: Save Task Settings and Precheck. Untuk melihat pratinjau parameter API untuk konfigurasi ini, arahkan kursor ke Next: Save Task Settings and Precheck lalu klik Preview OpenAPI parameters.

    DTS menjalankan pemeriksaan awal sebelum memulai tugas sinkronisasi. Jika pemeriksaan awal gagal, klik View Details di samping setiap item yang gagal, selesaikan masalahnya, lalu jalankan pemeriksaan awal lagi. Jika item peringatan dapat diabaikan, klik Confirm Alert Details, lalu klik Ignore di kotak dialog, dan jalankan pemeriksaan awal lagi. Mengabaikan item peringatan dapat menyebabkan inkonsistensi data.
  9. Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.

  10. Di halaman pembelian, konfigurasikan penagihan dan pengaturan instans:

    BagianParameterDeskripsi
    New Instance ClassBilling MethodSubscription: Bayar di muka untuk jangka waktu tetap (1–9 bulan atau 1, 2, 3, atau 5 tahun). 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 biaya.
    Resource Group SettingsKelompok sumber daya untuk instans sinkronisasi. Default: default resource group.
    Instance ClassPilih kelas instans berdasarkan kebutuhan kecepatan sinkronisasi Anda. Untuk detailnya, lihat Kelas instans instansi sinkronisasi data.
    Subscription DurationHanya tersedia untuk penagihan Subscription. Pilih durasi dan jumlah instans.
  11. Terima Data Transmission Service (Pay-as-you-go) Service Terms dan klik Buy and Start. Di kotak dialog, klik OK. Tugas sinkronisasi maju muncul di daftar tugas.

Langkah 3: Konfigurasi tugas sinkronisasi balik

  1. Tunggu hingga status tugas sinkronisasi maju berubah menjadi Running.

  2. Temukan tugas sinkronisasi balik di daftar tugas dan klik Configure Task.

  3. Ulangi Langkah 2 (langkah 3–8) untuk mengonfigurasi tugas balik, dengan perbedaan sebagai berikut:

    • Sumber tugas balik adalah tujuan tugas maju, dan sebaliknya.

    • Parameter Instance Region tidak dapat dimodifikasi untuk tugas balik.

    • Untuk Processing Mode of Conflicting Tables, pastikan tabel yang sudah disinkronkan ke tujuan oleh tugas maju diatur untuk diabaikan.

    • Jangan pilih objek yang sudah ada di daftar Selected Objects tugas maju.

    • Jangan gunakan pemetaan nama objek untuk tugas balik.

    • Tugas balik memiliki lebih sedikit parameter untuk dikonfigurasi dibandingkan tugas maju. Konfigurasikan hanya parameter yang ditampilkan di konsol.

  4. Tunggu hingga Success Rate mencapai 100%, lalu klik Back.

Langkah 4: Verifikasi konfigurasi

Tunggu hingga status kedua tugas sinkronisasi maju dan balik berubah menjadi Running. Sinkronisasi data dua arah kini aktif.

Langkah selanjutnya

Setelah sinkronisasi dua arah berjalan, pertimbangkan: