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.
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:
Dua kluster PolarDB for MySQL (sumber dan tujuan). Untuk detailnya, lihat Beli kluster Edisi Perusahaan dan Beli kluster subscription.
Binary logging diaktifkan di kedua kluster. Untuk detailnya, lihat Aktifkan binary logging.
Akun istimewa di kedua kluster sumber dan tujuan. Untuk detailnya, lihat Buat dan kelola akun database.
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_binharus diatur keON.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.
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_serverke 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
dtsdi 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 sinkronisasi | Biaya |
|---|---|
| Sinkronisasi skema dan sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Untuk detailnya, lihat Ikhtisar penagihan. |
Operasi SQL yang didukung
| Jenis operasi | Pernyataan SQL |
|---|---|
| DML | INSERT, 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.
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.
| Kebijakan | Perilaku |
|---|---|
| TaskFailed | Tugas melaporkan error dan berhenti. Selesaikan konflik secara manual dan mulai ulang tugas. |
| Ignore | Pernyataan yang bertentangan dilewati. Catatan yang ada di database tujuan dipertahankan. |
| Overwrite | Catatan yang bertentangan di database tujuan ditimpa oleh catatan masuk. |
| UseMax | Membandingkan 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. |
| UseMin | Membandingkan 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
Masuk ke Konsol DTS.Konsol DTS
Di panel navigasi kiri, klik Data Synchronization.
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.
Masuk ke Konsol DMS.Konsol DMS
Di bilah navigasi atas, arahkan penunjuk ke Data + AI, lalu pilih DTS (DTS) > Data Synchronization.
Dari daftar drop-down di samping Data Synchronization Tasks, pilih wilayah tempat instansi sinkronisasi akan berada.
Langkah 2: Buat tugas sinkronisasi maju
Klik Create Task.
Opsional: Klik New Configuration Page di pojok kanan atas.
Lewati langkah ini jika Back to Previous Version ditampilkan sebagai gantinya. Halaman konfigurasi baru direkomendasikan.
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.
Bagian Parameter Deskripsi N/A Task Name Nama untuk tugas DTS. DTS menghasilkan nama secara otomatis. Gunakan nama deskriptif agar mudah diidentifikasi. Source Database Select a DMS database instance. Pilih instans database DMS yang sudah ada atau konfigurasi koneksi secara manual. Database Type Pilih PolarDB for MySQL. Access Method Pilih Alibaba Cloud Instance. Instance Region Wilayah kluster PolarDB for MySQL sumber. Replicate Data Across Alibaba Cloud Accounts Pilih No jika sumber dan tujuan berada di bawah akun yang sama. PolarDB Cluster ID ID kluster sumber. Database Account Akun istimewa untuk kluster sumber. Database Password Kata sandi untuk akun database. Encryption Konfigurasikan enkripsi SSL jika diperlukan. Untuk detailnya, lihat Konfigurasikan enkripsi SSL. Destination Database Select a DMS database instance. Pilih instans database DMS yang sudah ada atau konfigurasi koneksi secara manual. Database Type Pilih PolarDB for MySQL. Access Method Pilih Alibaba Cloud Instance. Instance Region Wilayah kluster PolarDB for MySQL tujuan. Replicate Data Across Alibaba Cloud Accounts Pilih No jika sumber dan tujuan berada di bawah akun yang sama. PolarDB Cluster ID ID kluster tujuan. Database Account Akun istimewa untuk kluster tujuan. Database Password Kata sandi untuk akun database. Encryption Konfigurasikan enkripsi SSL jika diperlukan. 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.
PeringatanMenambahkan 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.
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.
Parameter Deskripsi Synchronization Types Pilih 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 Database Pilih cara menangani trigger. Hanya tersedia saat Schema Synchronization dipilih. Untuk detailnya, lihat Sinkronkan atau migrasikan trigger dari database sumber. Synchronization Topology Pilih Two-way Synchronization. Enable Exactly-Once Write Pilih Yespengaturan pemberitahuan peringatan jika ada tabel yang akan disinkronkan tidak memiliki primary key atau kendala UNIQUE. Exclude DDL Operations Pilih 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 Policy Pilih kebijakan. Lihat Kebijakan resolusi konflik untuk detailnya. Processing Mode of Conflicting Tables Precheck 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 Objects Pilih satu atau beberapa objek dari bagian Source Objects dan klik ikon
untuk menambahkannya ke bagian Selected Objects.Selected Objects Klik kanan objek untuk mengganti namanya, mengatur kondisi filter, menambah kolom, atau mengonfigurasi kebijakan resolusi konflik independen. Klik Next: Advanced Settings dan konfigurasikan parameter lanjutan:
Parameter Deskripsi Dedicated Cluster for Task Scheduling Biarkan kosong untuk menggunakan kluster bersama. Beli kluster khusus untuk stabilitas tugas yang lebih tinggi. Select the engine type of the destination database Pilih 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 Accounts Pilih Yes untuk menyinkronkan akun database sumber. Tentukan host dan tinjau izin untuk setiap akun. Retry Time for Failed Connections Berapa 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 Issues Berapa 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 Synchronization Atur 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 Synchronization Atur batas RPS dan bandwidth untuk sinkronisasi inkremental. Whether to delete SQL operations on heartbeat tables of forward and reverse tasks Yes: 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 Tag Opsional. Tetapkan tag lingkungan untuk mengidentifikasi instans DTS. Configure ETL Pilih 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 Alerting Pilih Yes untuk menerima notifikasi saat tugas gagal atau latensi sinkronisasi melebihi ambang batas. Konfigurasikan ambang batas peringatan dan pengaturan notifikasi. Klik Next Step: Data Verification untuk mengonfigurasi verifikasi data. Untuk detailnya, lihat Konfigurasikan tugas verifikasi data.
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.
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Di halaman pembelian, konfigurasikan penagihan dan pengaturan instans:
Bagian Parameter Deskripsi New Instance Class Billing Method Subscription: 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 Settings Kelompok sumber daya untuk instans sinkronisasi. Default: default resource group. Instance Class Pilih kelas instans berdasarkan kebutuhan kecepatan sinkronisasi Anda. Untuk detailnya, lihat Kelas instans instansi sinkronisasi data. Subscription Duration Hanya tersedia untuk penagihan Subscription. Pilih durasi dan jumlah instans. 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
Tunggu hingga status tugas sinkronisasi maju berubah menjadi Running.
Temukan tugas sinkronisasi balik di daftar tugas dan klik Configure Task.
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.
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:
Memantau latensi sinkronisasi untuk mendeteksi keterlambatan antar kluster.
Melihat log tugas untuk mengidentifikasi pernyataan DDL yang gagal.
Migrasi akun database jika Anda ingin mereplikasi informasi akun dari kluster sumber ke kluster tujuan.