Topik ini menjelaskan sinkronisasi dua arah antara database MySQL dan database OceanBase dalam mode yang kompatibel dengan MySQL.
Tugas migrasi data yang tetap dalam keadaan tidak aktif dalam waktu lama mungkin gagal dilanjutkan tergantung pada periode retensi log inkremental. Keadaan tidak aktif meliputi Failed, Stopped, dan Completed. Layanan transmisi data akan melepaskan tugas migrasi data yang tetap dalam keadaan tidak aktif selama lebih dari 3 hari untuk mereklaim resource terkait. Kami menyarankan Anda mengonfigurasi alert untuk tugas migrasi data dan menangani pengecualian tugas secara tepat waktu.
Latar Belakang
Apa itu sinkronisasi dua arah?
Selama sinkronisasi data inkremental, Anda dapat mengonfigurasi tugas migrasi maju dan balik untuk sumber data yang sama guna menyinkronkan data antara sumber dan target. Mekanisme pencegahan replikasi siklik digunakan untuk mencegah data yang telah disinkronkan dalam satu arah agar tidak disinkronkan berulang kali oleh tugas dalam arah sebaliknya.
Sinkronisasi dua arah tidak mendukung penulisan simultan ke sumber dan target. Jika suatu aplikasi menulis data yang sama—yang diidentifikasi oleh primary key atau unique key yang sama—secara bersamaan ke sumber dan target, Anda harus menentukan strategi penyelesaian konflik (overwrite atau ignore) untuk tugas sinkronisasi dua arah tersebut. Kami menyarankan agar Anda melarang aplikasi menulis data yang sama secara bersamaan ke sumber dan target.
Jenis migrasi yang mendukung sinkronisasi dua arah
Layanan transmisi data mendukung sinkronisasi data dua arah antara database MySQL dan database OceanBase dalam mode yang kompatibel dengan MySQL, antara database Oracle dan database OceanBase dalam mode yang kompatibel dengan Oracle, serta antara database OceanBase. Untuk informasi lebih lanjut mengenai batasan dan pertimbangan, lihat topik tentang jenis migrasi data yang sesuai.
Migrasikan data dari database MySQL ke database OceanBase dalam mode yang kompatibel dengan MySQL
Migrasikan data dari database OceanBase dalam mode yang kompatibel dengan MySQL ke database MySQL
Migrasikan data dari database Oracle ke database OceanBase dalam mode yang kompatibel dengan Oracle
Migrasikan data dari database OceanBase dalam mode yang kompatibel dengan Oracle ke database Oracle
Pernyataan untuk memberikan hak istimewa pada sumber data MySQL
Untuk melakukan sinkronisasi dua arah antara database MySQL dan database OceanBase, Anda harus memberikan hak istimewa CREATE DATABASE dan CREATE TABLE kepada akun database pada sumber data MySQL untuk tugas saat ini. Anda juga harus membuat database transaksi dan tabel transaksi untuk mencegah replikasi siklik antara kedua pihak yang terlibat dalam sinkronisasi dua arah. Jika tidak, tugas sinkronisasi dua arah mungkin menjadi abnormal.
Berikan hak istimewa pembuatan database global
GRANT CREATE ON *.* TO '<user_name>' ;Berikan hak istimewa untuk membuat tabel di database oms
GRANT CREATE ON oms.* TO '<user_name>'
Pernyataan untuk membuat skema dan memberikan hak istimewa pada sumber data Oracle
Untuk melakukan sinkronisasi dua arah antara database Oracle dan database OceanBase, Anda harus membuat skema bernama OMS pada sumber data Oracle untuk tugas saat ini, serta memberikan hak istimewa CREATE TABLE pada skema OMS kepada akun database di sumber data ini. Jika tidak, tugas sinkronisasi dua arah mungkin menjadi abnormal.
Buat pengguna OMS
CREATE USER OMS IDENTIFIED BY <YOUR_PASSWORD> DEFAULT TABLESPACE <tablespace>; // Ganti YOUR_PASSWORD dengan password pengguna yang sebenarnya. ALTER USER OMS QUOTA unlimited ON <tablespace yang ditentukan pada langkah sebelumnya>; ALTER USER <data source user> QUOTA unlimited ON <tablespace yang ditentukan pada langkah sebelumnya>;Berikan hak istimewa
GRANT CREATE ANY TABLE TO <YOUR_USERNAME>; GRANT INSERT ANY TABLE TO <YOUR_USERNAME>; GRANT UPDATE ANY TABLE TO <YOUR_USERNAME>; GRANT DELETE ANY TABLE TO <YOUR_USERNAME>; GRANT SELECT ANY TABLE TO <YOUR_USERNAME>;
Pertimbangan
Tugas sinkronisasi dua arah terdiri atas tugas maju dan tugas balik.
Jenis | Deskripsi |
Forward task |
|
Reverse task |
|
Pertimbangan lainnya |
|
Skenario konflik data
Untuk memastikan konsistensi data dalam sinkronisasi dua arah, pastikan bahwa operasi data pada primary key atau unique key non-null yang sama hanya dilakukan di sumber atau target. Jika data diperbarui secara bersamaan di sumber dan target, konflik data dapat terjadi, termasuk skenario berikut.
Konflik unique key dalam operasi INSERT
Jika suatu aplikasi mengeksekusi operasi INSERT pada unique key yang sama di sumber dan target hampir bersamaan, operasi INSERT di target gagal karena Kendala UNIK selama sinkronisasi ke target. Anda dapat mengonfigurasi tugas untuk mengabaikan data yang bertentangan atau menimpa data di target.
Konflik unique key dalam operasi UPDATE
Jika data yang akan diperbarui oleh operasi UPDATE sudah ada di target, data di target akan ditimpa oleh data dari sumber.
Jika data yang akan diperbarui oleh operasi UPDATE tidak ada di target, operasi UPDATE gagal.
Jika operasi UPDATE menyebabkan konflik primary key atau unique key di target, operasi UPDATE gagal.
Konflik unique key dalam operasi DELETE
Jika data yang akan dihapus oleh operasi DELETE tidak ada, operasi DELETE gagal.
Prosedur
Konfigurasikan forward task
Konfigurasikan tugas migrasi data seperti yang diminta hingga mencapai langkah Select Migration Type dan atur Synchronous Topology menjadi Bidirectional Synchronization.
Untuk informasi lebih lanjut, lihat topik tentang jenis migrasi data yang sesuai.

Pada halaman Select Migration Type, tentukan jenis migrasi untuk tugas migrasi data.
Sinkronisasi dua arah mendukung jenis migrasi berikut: Schema Migration, Full Migration, Incremental synchronization, dan Full Verification.

Jenis migrasi
Deskripsi
Schema migration
Setelah tugas migrasi skema dimulai, layanan transmisi data akan memigrasikan definisi objek basis data—seperti tabel, indeks, kendala, komentar, dan tampilan—dari database sumber ke database target dan secara otomatis memfilter tabel temporary.
Full migration
Setelah tugas migrasi penuh dimulai, layanan transmisi data akan memigrasikan data yang ada dari tabel di database sumber ke tabel yang sesuai di database target.
Incremental synchronization
Setelah tugas sinkronisasi inkremental dimulai, layanan transmisi data akan menyinkronkan data yang berubah (data yang ditambahkan, dimodifikasi, atau dihapus) dari database sumber ke tabel yang sesuai di database target.
Opsi untuk Incremental Synchronization adalah DML Synchronization dan DDL Synchronization. Anda dapat memilih opsi sesuai kebutuhan. Untuk informasi lebih lanjut, lihat Configure DDL/DML synchronization.
CatatanDalam sinkronisasi dua arah, opsi DML Synchronization harus dipilih.
Dalam sinkronisasi dua arah, sinkronisasi DDL hanya didukung untuk forward task.
Full verification
Setelah tugas migrasi penuh dan sinkronisasi inkremental selesai, layanan transmisi data secara otomatis memulai tugas verifikasi penuh untuk memverifikasi tabel di database sumber dan target.
Klik Next. Pada halaman Select Migration Objects, tentukan objek migrasi untuk tugas migrasi data.
Anda dapat memilih Specify Objects atau Match Rules untuk menentukan objek migrasi. Topik ini menjelaskan cara menggunakan Specify Objects untuk menentukan objek migrasi. Untuk informasi tentang aturan pencocokan, lihat "Pola wildcard untuk migrasi/sinkronisasi data antar database" dalam Configure and modify matching rules.
PentingNama tabel yang akan dimigrasikan, serta nama kolom di dalam tabel, tidak boleh mengandung karakter Tionghoa.
Jika nama database atau tabel mengandung tanda dolar ganda ($$), Anda tidak dapat membuat tugas migrasi.
Jika Anda telah memilih DDL Synchronization pada halaman Select Migration Type, kami menyarankan Anda memilih objek migrasi menggunakan opsi Match Rules. Dengan demikian, semua objek baru yang memenuhi aturan migrasi akan disinkronkan. Jika Anda memilih objek migrasi menggunakan opsi Specify Objects, objek baru atau yang berganti nama tidak akan disinkronkan.

Pada bagian Select Migration Objects, pilih Specify Objects.
Pada daftar Source Object(s) di bagian Specify Migration Scope, pilih objek yang akan dimigrasikan. Anda dapat memilih tabel dan tampilan dari satu atau beberapa database.
Klik > untuk menambahkannya ke daftar Target Object(s) .
Layanan transmisi data memungkinkan Anda mengimpor objek dari file teks, mengganti nama objek target, mengatur filter baris, melihat informasi kolom, serta menghapus satu atau semua objek migrasi.
CatatanSaat Anda memilih Match Rules untuk menentukan objek migrasi, penggantian nama objek diimplementasikan berdasarkan sintaks aturan pencocokan yang ditentukan. Di area operasi, Anda hanya dapat mengatur kondisi filter. Untuk informasi lebih lanjut, lihat Configure and modify matching rules.
Operasi
Deskripsi
Import objects
Pada daftar di sebelah kanan, klik Import Objects di pojok kanan atas.
Pada kotak dialog yang muncul, klik OK.
PentingOperasi ini akan menimpa pilihan sebelumnya. Lakukan dengan hati-hati.
Pada dialog Import Objects, impor objek yang akan dimigrasikan.
Anda dapat mengimpor file CSV untuk mengganti nama database atau tabel serta mengatur kondisi filter baris. Untuk informasi lebih lanjut, lihat Download and import the settings of migration objects.
Klik Validate.
Setelah Anda mengimpor objek migrasi, periksa validitasnya. Pemetaan bidang kolom belum didukung saat ini.
Setelah validasi berhasil, klik OK.
Rename objects
Layanan transmisi data memungkinkan Anda mengganti nama objek migrasi. Untuk informasi lebih lanjut, lihat Rename a database table.
Configure settings
Layanan transmisi data memungkinkan Anda memfilter baris menggunakan kondisi
WHERE. Untuk informasi lebih lanjut, lihat Use SQL conditions to filter data.Anda juga dapat melihat informasi kolom objek migrasi di bagian View Columns.
Remove one or all objects
Layanan transmisi data memungkinkan Anda menghapus satu atau semua objek sinkronisasi yang telah ditambahkan ke daftar sisi kanan selama pemetaan data.
Remove a single migration object
Pada daftar di sebelah kanan, arahkan pointer ke objek yang ingin dihapus, lalu klik Remove untuk menghapus objek migrasi tersebut.
Remove all migration objects
Pada daftar di sebelah kanan, klik Remove All di pojok kanan atas. Pada kotak dialog yang muncul, klik OK untuk menghapus semua objek migrasi.
Klik Next. Pada halaman Migration Options, konfigurasikan parameter.
Full migration
Tabel berikut menjelaskan parameter untuk migrasi penuh, yang hanya ditampilkan jika Anda telah memilih Bidirectional Synchronization dan Full Migration pada halaman Select Migration Type.

Parameter
Deskripsi
Read Concurrency
Konkurensi untuk membaca data dari sumber selama migrasi penuh. Nilai maksimum adalah 512. Konkurensi baca yang tinggi dapat menyebabkan beban berlebih pada sumber, sehingga memengaruhi bisnis.
Write Concurrency
Konkurensi untuk menulis data ke target selama migrasi penuh. Nilai maksimum adalah 512. Konkurensi tulis yang tinggi dapat menyebabkan beban berlebih pada target, sehingga memengaruhi bisnis.
Full Migration Rate Limit
Anda dapat memilih apakah akan membatasi laju migrasi penuh sesuai kebutuhan. Jika Anda memilih untuk membatasi laju migrasi penuh, Anda harus menentukan catatan per detik (RPS) dan byte per detik (BPS). RPS menentukan jumlah maksimum baris data yang dimigrasikan ke target per detik selama migrasi penuh, sedangkan BPS menentukan jumlah maksimum data dalam byte yang dimigrasikan ke target per detik selama migrasi penuh.
CatatanNilai RPS dan BPS yang ditentukan di sini hanya untuk Pembatasan kecepatan. Kinerja migrasi penuh yang sebenarnya bergantung pada faktor-faktor seperti pengaturan sumber dan target serta spesifikasi instans.
Handle Non-empty Tables in Target Database
Nilai yang valid adalah Ignore dan Stop Migration.
Jika Anda memilih Ignore, ketika data yang akan dimasukkan bertentangan dengan data yang sudah ada di tabel target, layanan transmisi data akan mencatat data yang bertentangan sambil mempertahankan data yang sudah ada.
PentingJika Anda memilih Ignore, data ditarik dalam mode IN selama verifikasi penuh. Dalam kasus ini, verifikasi tidak berlaku jika target berisi data yang tidak ada di sumber, dan kinerja verifikasi menurun.
Jika Anda memilih Stop Migration dan tabel target berisi catatan, kesalahan yang menunjukkan migrasi tidak didukung akan dilaporkan selama migrasi penuh. Dalam kasus ini, Anda harus memproses data di tabel target sebelum melanjutkan migrasi.
PentingJika Anda mengklik Resume pada kotak dialog yang menampilkan kesalahan tersebut, layanan transmisi data akan mengabaikan kesalahan ini dan melanjutkan migrasi data. Lakukan dengan hati-hati.
Post-Indexing
Menentukan apakah indeks akan dibuat setelah migrasi penuh selesai. Post-indexing dapat mempersingkat waktu yang diperlukan untuk migrasi penuh. Untuk informasi lebih lanjut mengenai pertimbangan post-indexing, lihat deskripsi di bawah.
PentingParameter ini hanya ditampilkan jika Anda telah memilih Schema Migration dan Full Migration pada halaman Select Migration Type.
Hanya indeks non-unique key yang dapat dibuat setelah migrasi selesai.
Jika database OceanBase target mengembalikan kesalahan berikut selama pembuatan indeks, layanan transmisi data akan mengabaikan kesalahan tersebut dan menganggap indeks berhasil dibuat, tanpa membuatnya lagi.
Pesan kesalahan di database OceanBase dalam mode yang kompatibel dengan MySQL:
Duplicate key name.Pesan kesalahan di database OceanBase dalam mode yang kompatibel dengan Oracle:
name is already used by an existing object.
Jika Anda memilih Allow, atur parameter berikut:
DDL Concurrency for Single Index: jumlah maksimum operasi DDL konkuren yang diizinkan untuk satu indeks. Nilai yang lebih besar menunjukkan konsumsi resource yang lebih tinggi dan migrasi data yang lebih cepat.
Maximum DDL Concurrency for Indexes: jumlah maksimum operasi DDL post-indexing yang dapat dipanggil sistem sekaligus.
Jika post-indexing diizinkan, kami menyarankan Anda menggunakan client CLI untuk memodifikasi parameter berikut untuk tenant bisnis berdasarkan kondisi perangkat keras OceanBase Database dan trafik bisnis Anda saat ini:
// Tentukan batas ukuran buffer memori file. alter system set _temporary_file_io_area_size = '10' tenant = 'xxx'; // Nonaktifkan throttling di OceanBase Database V4.x. alter system set sys_bkgd_net_percentage = 100;Incremental synchronization
Tabel berikut menjelaskan parameter untuk sinkronisasi inkremental, yang hanya ditampilkan jika Anda telah memilih Bidirectional Synchronization dan Incremental Synchronization pada halaman Select Migration Type.

Parameter
Deskripsi
Write Concurrency
Konkurensi untuk menulis data ke target selama sinkronisasi inkremental. Nilai maksimum adalah 512. Konkurensi tulis yang tinggi dapat menyebabkan beban berlebih pada target, sehingga memengaruhi bisnis.
Incremental Synchronization Rate Limit
Anda dapat memilih apakah akan membatasi laju sinkronisasi inkremental sesuai kebutuhan. Jika Anda memilih untuk membatasi laju sinkronisasi inkremental, Anda harus menentukan catatan per detik (RPS) dan byte per detik (BPS). RPS menentukan jumlah maksimum baris data yang disinkronkan ke target per detik selama sinkronisasi inkremental, sedangkan BPS menentukan jumlah maksimum data dalam byte yang disinkronkan ke target per detik selama sinkronisasi inkremental.
CatatanNilai RPS dan BPS yang ditentukan di sini hanya untuk Pembatasan kecepatan. Kinerja sinkronisasi inkremental yang sebenarnya bergantung pada faktor-faktor seperti pengaturan sumber dan target serta spesifikasi instans.
Data Conflict Handling Strategy
Nilai yang valid adalah Ignore errors and keep the original data on the target dan Ignore conflicts, use source data to overwrite target data. Untuk informasi lebih lanjut, lihat bagian "Data conflict scenarios" dalam topik ini.
Klik Precheck untuk memulai pemeriksaan awal pada tugas migrasi data.
Selama pemeriksaan awal, layanan transmisi data memeriksa hak istimewa baca dan tulis pengguna database serta koneksi jaringan database. Tugas sinkronisasi data hanya dapat dimulai setelah lulus semua item pemeriksaan. Jika terjadi kesalahan selama pemeriksaan awal, Anda dapat melakukan operasi berikut:
Identifikasi dan atasi masalah, lalu lakukan pemeriksaan awal lagi.
Klik Skip di kolom Actions pada item pemeriksaan awal yang gagal. Pada kotak dialog yang menampilkan konsekuensi operasi tersebut, klik OK.
Setelah pemeriksaan awal berhasil, klik Start Task untuk memulai forward task.
Konfigurasikan reverse task
Buka halaman Migration Tasks. Tunggu hingga forward task berada dalam fase sinkronisasi inkremental dan dalam status Running. Kemudian, klik Configuration untuk reverse task.

Pada dialog Configure Reverse Tasks, konfigurasikan parameter.

Parameter
Deskripsi
Task Instance
Pilih instans tugas yang tersedia dari daftar drop-down untuk mengonfigurasi reverse task. Jika tidak ada instans tugas yang tersedia, beli instans tersebut. Untuk informasi lebih lanjut, lihat Purchase a data migration task.
Write Concurrency
Konkurensi untuk menulis data ke target selama migrasi penuh. Nilai maksimum adalah 512. Konkurensi tulis yang tinggi dapat menyebabkan beban berlebih pada target, sehingga memengaruhi bisnis.
Incremental Synchronization Rate Limit
Anda dapat memilih apakah akan membatasi laju sinkronisasi inkremental sesuai kebutuhan.
Data Conflict Handling Strategy
Nilai yang valid adalah Ignore errors and keep the original data on the target dan Ignore conflicts, use source data to overwrite target data.
Klik Precheck. Sistem akan melakukan pemeriksaan awal pada reverse task.
Setelah pemeriksaan awal berhasil, klik Start Task untuk memulai reverse task.