Gunakan Data Transmission Service (DTS) untuk mereplikasi data dari instans PolarDB-X 2.0 ke instans ApsaraDB for SelectDB. DTS menangani sinkronisasi skema, pemuatan data penuh, dan replikasi inkremental berkelanjutan melalui binlog.
Fitur ini berada dalam fase pengujian grayscale dan hanya tersedia untuk sebagian pengguna.
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
Instans PolarDB-X 2.0 sebagai sumber
Instans SelectDB sebagai tujuan
Izin yang diperlukan pada kedua instans (lihat Izin yang diperlukan untuk akun database)
Penagihan
| Jenis sinkronisasi | Biaya |
|---|---|
| Sinkronisasi skema dan sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Lihat Ikhtisar penagihan. |
Batasan
Persyaratan database sumber
Bandwidth: Server yang menghosting database sumber harus memiliki bandwidth outbound minimal 100 Mbit/s. Bandwidth yang lebih rendah mengurangi kecepatan sinkronisasi.
Jenis instans: Instans hanya baca Edisi Perusahaan PolarDB-X 2.0 tidak didukung.
Objek yang tidak didukung: INDEX, PARTITION, VIEW, PROCEDURE, FUNCTION, TRIGGER, dan FK tidak dapat disinkronkan. Objek TABLEGROUP serta database atau skema dengan atribut Locality juga tidak didukung.
Nama tabel: Tabel yang namanya mengandung huruf kapital tidak dapat disinkronkan.
Persyaratan kunci primer: Tabel harus memiliki PRIMARY KEY atau kendala UNIQUE dengan semua bidang unik. Tanpa ini, catatan duplikat mungkin muncul di tujuan.
Batas tabel per tugas: Jika Anda memilih tabel individual sebagai objek untuk disinkronkan dan perlu mengganti nama tabel atau kolom di tujuan, satu tugas mendukung hingga 5.000 tabel. Untuk lebih dari 5.000 tabel, bagi menjadi beberapa tugas atau sinkronkan pada tingkat database.
Pencatatan biner: Pencatatan biner diaktifkan secara default pada PolarDB-X 2.0. Verifikasi bahwa parameter
binlog_row_imagediatur kefull. Jika tidak, pemeriksaan awal gagal dan tugas tidak dapat dimulai. Lihat Pengaturan parameter.DDL selama sinkronisasi: Jangan menjalankan pernyataan DDL yang mengubah skema database atau tabel selama sinkronisasi skema atau sinkronisasi data penuh. Melakukannya menyebabkan tugas gagal.
Perubahan jaringan: Jika konfigurasi jaringan instans PolarDB-X 2.0 berubah, instans sinkronisasi mungkin mengalami latensi selama periode tertentu.
Persyaratan database tujuan
Jenis tabel yang didukung: Data hanya dapat disinkronkan ke tabel dengan mesin Unique atau Duplicate di SelectDB.
Tabel mesin Unique: Semua kunci unik di tabel tujuan harus ada di tabel sumber dan termasuk dalam objek yang akan disinkronkan. Kunci yang hilang menyebabkan ketidakkonsistenan data.
Tabel mesin Duplicate: Catatan duplikat mungkin muncul ketika instans sinkronisasi dicoba ulang atau dimulai ulang, atau ketika catatan yang sama dimodifikasi oleh operasi DML lebih dari sekali setelah tugas dimulai. DTS mengonversi pernyataan UPDATE dan DELETE menjadi pernyataan INSERT untuk tabel mesin Duplicate. Gunakan kolom tambahan (
_is_deleted,_version,_record_id) untuk menghapus duplikat. Lihat Kolom tambahan untuk tabel mesin Duplicate.Jangan membuat kluster selama sinkronisasi: Membuat kluster di instans SelectDB tujuan saat tugas sedang berjalan menyebabkan tugas gagal. Jika tugas gagal, mulai ulang instans sinkronisasi untuk melanjutkan.
Jangan menambahkan node backend selama sinkronisasi: Menambahkan node backend ke database SelectDB selama sinkronisasi menyebabkan tugas gagal. Mulai ulang instans sinkronisasi untuk melanjutkan.
Persyaratan penamaan: SelectDB hanya mendukung nama database dan tabel yang dimulai dengan huruf. Gunakan fitur pemetaan nama objek untuk mengganti nama database atau tabel apa pun yang namanya dimulai dengan karakter non-huruf.
Nama karakter Tionghoa: Jika nama database, tabel, atau kolom mengandung karakter Tionghoa, gunakan fitur pemetaan nama objek untuk mengganti namanya sebelum disinkronkan. Jika tidak, tugas mungkin gagal.
Perbedaan panjang VARCHAR: Di PolarDB-X 2.0,
VARCHAR(M)mendefinisikan panjang karakter. Di SelectDB,VARCHAR(N)mendefinisikan panjang byte. Jika Anda tidak menggunakan sinkronisasi skema DTS, atur panjang bidang VARCHAR di SelectDB menjadi 4 kali panjang yang sesuai di PolarDB-X 2.0 untuk menghindari kehilangan data.Batasan DDL: Anda tidak dapat memodifikasi operasi DDL pada beberapa kolom sekaligus, atau menjalankan operasi DDL berturut-turut pada tabel yang sama.
Pertimbangan operasional
Penulisan heartbeat: DTS secara berkala menjalankan
CREATE DATABASE IF NOT EXISTS `test`di database sumber untuk menulis data heartbeat yang memajukan posisi binlog. Jika Anda mengatur Whether to delete SQL operations on heartbeat tables of forward and reverse tasks ke Yes (atau akun sumber tidak memiliki izin CREATE DATABASE), dan tidak ada operasi DML yang dijalankan di sumber untuk periode yang lama, latensi sinkronisasi yang ditampilkan mungkin tidak akurat. Untuk memperbarui tampilan latensi, jalankan operasi DML di database sumber.Parameter `bucket_count`: Di bagian Selected Objects, Anda dapat menentukan parameter
bucket_count. Nilainya harus bilangan bulat positif. Nilai default adalahauto.Beban sinkronisasi data penuh: Selama sinkronisasi data penuh, DTS menggunakan resource baca dan tulis di kedua database sumber dan tujuan, yang meningkatkan beban server. Jalankan tugas selama jam sepi, ketika penggunaan CPU di kedua database di bawah 30%.
Fragmentasi storage: Operasi INSERT konkuren selama inisialisasi penuh mungkin meninggalkan fragmen di tabel tujuan. Setelah inisialisasi penuh, tabel tujuan mungkin menempati ruang penyimpanan lebih besar daripada padanannya di sumber.
Penulisan eksternal selama sinkronisasi: Jika sumber selain DTS menulis ke database tujuan selama sinkronisasi, ketidakkonsistenan data mungkin terjadi dan tugas mungkin gagal.
Pemulihan kegagalan tugas: Jika tugas DTS gagal, dukungan DTS mencoba memulihkannya dalam waktu 8 jam. Selama pemulihan, tugas mungkin dimulai ulang dan parameter tugas mungkin dimodifikasi. Parameter database tidak dimodifikasi. Parameter yang mungkin dimodifikasi mencakup tetapi tidak terbatas pada parameter dalam bagian "Modify instance parameters" pada topik Modify the parameters of a DTS instance.
Operasi SQL yang didukung untuk sinkronisasi inkremental
| Jenis operasi | Pernyataan SQL |
|---|---|
| DML | INSERT, UPDATE, DELETE |
| DDL | ADD COLUMN; DROP COLUMN; DROP TABLE; TRUNCATE TABLE; RENAME TABLE |
RENAME TABLE dapat menyebabkan ketidakkonsistenan data jika Anda memilih tabel (bukan database induknya) sebagai objek sinkronisasi. Jika sebuah tabel diganti namanya dan database induk barunya tidak termasuk dalam objek yang disinkronkan, data untuk tabel tersebut berhenti disinkronkan. Untuk menghindarinya, pilih database sebagai objek sinkronisasi, bukan tabel individual.
Izin yang diperlukan untuk akun database
| Database | Izin yang diperlukan | Referensi |
|---|---|---|
| PolarDB-X 2.0 sumber | REPLICATION SLAVE, REPLICATION CLIENT, SELECT (pada objek yang akan disinkronkan) | Mengelola akun database dan Masalah izin akun saat sinkronisasi data |
| SelectDB tujuan | Usage_priv (akses kluster), Select_priv, Load_priv, Alter_priv, Create_priv, Drop_priv | Cluster permission management dan Basic permission management |
Buat tugas sinkronisasi data
Prosedur ini terdiri dari tujuh langkah:
Buka halaman Sinkronisasi Data.
Konfigurasikan database sumber dan tujuan.
Pilih objek untuk disinkronkan.
Konfigurasikan pengaturan lanjutan.
(Opsional) Konfigurasikan bidang database dan tabel.
Jalankan pemeriksaan awal.
Beli instans.
Langkah 1: Buka halaman Sinkronisasi Data
Gunakan Konsol DTS atau Konsol DMS.
Konsol DTS:
Masuk ke Konsol DTS.
Di panel navigasi kiri, klik Data Synchronization.
Di pojok kiri atas, pilih wilayah tempat tugas sinkronisasi data berada.
Konsol DMS:
Langkah-langkah tepatnya mungkin berbeda tergantung pada mode dan tata letak Konsol DMS Anda. Lihat Simple mode dan Customize the layout and style of the DMS console.
Masuk ke Konsol DMS.
Di bilah navigasi atas, arahkan kursor ke Data + AI lalu pilih DTS (DTS) > Data Synchronization.
Dari daftar drop-down di sebelah kanan Data Synchronization Tasks, pilih wilayah tempat instans sinkronisasi data berada.
Langkah 2: Konfigurasikan database sumber dan tujuan
Klik Create Task.
Konfigurasikan parameter yang dijelaskan dalam tabel berikut.
Bagian Parameter Deskripsi N/A Task Name Nama deskriptif untuk tugas DTS ini. DTS menghasilkan nama default. Nama tidak perlu unik. Source Database Select Existing Connection Pilih instans database terdaftar untuk mengisi otomatis parameter koneksi, atau konfigurasikan koneksi secara manual. Database Type Pilih PolarDB-X 2.0. Access Method Pilih Alibaba Cloud Instance. Instance Region Pilih wilayah instans PolarDB-X 2.0 sumber. Replicate Data Across Alibaba Cloud Accounts Pilih No untuk menggunakan instans di Akun Alibaba Cloud saat ini. Instance ID Pilih ID instans PolarDB-X 2.0 sumber. Database Account Masukkan akun untuk database sumber. Untuk izin yang diperlukan, lihat Izin yang diperlukan untuk akun database. Database Password Masukkan password untuk akun database sumber. Destination Database Select Existing Connection Pilih instans database terdaftar untuk mengisi otomatis parameter koneksi, atau konfigurasikan koneksi secara manual. Database Type Pilih SelectDB. Access Method Pilih Alibaba Cloud Instance. Instance Region Pilih wilayah instans SelectDB tujuan. Replicate Data Across Alibaba Cloud Accounts Pilih No untuk menggunakan instans di Akun Alibaba Cloud saat ini. Instance ID Pilih ID instans SelectDB tujuan. Database Account Masukkan akun untuk database tujuan. Untuk izin yang diperlukan, lihat Izin yang diperlukan untuk akun database. Database Password Masukkan password untuk akun database tujuan. Klik Test Connectivity and Proceed.
Blok CIDR server DTS harus ditambahkan ke pengaturan keamanan database sumber dan tujuan. Ini mungkin terjadi secara otomatis, atau Anda mungkin perlu menambahkannya secara manual. Lihat Add the CIDR blocks of DTS servers.
Langkah 3: Pilih objek untuk disinkronkan
Pada langkah Configure Objects, konfigurasikan parameter berikut:
| Parameter | Deskripsi |
|---|---|
| Synchronization Types | Pilih Schema Synchronization, Full Data Synchronization, dan Incremental Data Synchronization. Incremental Data Synchronization dipilih secara default. Sinkronisasi data penuh memuat data yang ada di sumber ke tujuan sebelum sinkronisasi inkremental dimulai. Penting Jika Anda tidak memilih Schema Synchronization, buat tabel model Unique atau Duplicate di instans SelectDB tujuan secara manual sebelum memulai tugas. Lihat Data type mapping, Additional columns for Duplicate engine tables, dan Data model. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors: Pemeriksaan awal gagal jika tujuan berisi tabel dengan nama yang sama seperti tabel sumber. Ini adalah opsi default yang aman. Jika nama tabel identik ada dan tidak dapat dihapus atau diganti namanya di tujuan, gunakan fitur pemetaan nama objek untuk mengganti namanya. Lihat Map object names. Ignore Errors and Proceed: Melewati pemeriksaan nama tabel identik. Peringatan Ini dapat menyebabkan ketidakkonsistenan data. Selama sinkronisasi penuh, catatan dengan nilai kunci primer atau unik yang cocok dilewati; catatan tujuan yang ada dipertahankan. Selama sinkronisasi inkremental, catatan yang cocok menimpa tujuan. Jika skema berbeda, inisialisasi mungkin gagal atau hanya beberapa kolom yang disinkronkan. |
| Capitalization of Object Names in Destination Instance | Mengontrol kapitalisasi nama database, tabel, dan kolom di tujuan. Default adalah DTS default policy. Lihat Specify the capitalization of object names in the destination instance. |
| Source Objects | Pilih database atau tabel dari bagian Source Objects lalu klik ikon |
| Selected Objects | Klik kanan objek untuk mengganti namanya, memfilter baris dengan kondisi WHERE, atau memilih operasi SQL tertentu untuk disinkronkan. Jika Anda memilih Schema Synchronization, klik kanan tabel, aktifkan Parameter Settings, atur bucket_count ke bilangan bulat positif, lalu klik OK. Catatan Mengganti nama objek dengan fitur pemetaan nama objek dapat menyebabkan objek dependen gagal disinkronkan. Lihat Specify filter conditions. |
Langkah 4: Konfigurasikan pengaturan lanjutan
Klik Next: Advanced Settings dan konfigurasikan parameter berikut:
| Parameter | Deskripsi |
|---|---|
| Dedicated Cluster for Task Scheduling | Secara default, DTS menggunakan kluster bersama. Untuk stabilitas lebih tinggi, beli dan pilih kluster khusus. Lihat What is a DTS dedicated cluster. |
| Retry Time for Failed Connections | Berapa lama DTS mencoba ulang koneksi yang gagal sebelum tugas gagal. Nilai valid: 10–1.440 menit. Default: 720. Kami menyarankan Anda mengatur parameter ini ke nilai lebih dari 30. Jika beberapa tugas berbagi sumber atau tujuan yang sama, waktu coba ulang terpendek yang berlaku. DTS menagih instans selama percobaan ulang. |
| Retry Time for Other Issues | Berapa lama DTS mencoba ulang operasi DDL atau DML yang gagal sebelum tugas gagal. Nilai valid: 1–1.440 menit. Default: 10. Kami menyarankan Anda mengatur parameter ini ke nilai lebih dari 10. Harus kurang dari Retry Time for Failed Connections. |
| Enable Throttling for Full Data Synchronization | Batasi beban baca/tulis di sumber dan tujuan selama sinkronisasi data penuh dengan mengatur Queries per second (QPS) to the source database, RPS of Full Data Migration, dan Data migration speed for full migration (MB/s). Tersedia hanya jika Full Data Synchronization dipilih. |
| Enable Throttling for Incremental Data Synchronization | Batasi beban selama sinkronisasi inkremental dengan mengatur RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s). |
| Whether to delete SQL operations on heartbeat tables of forward and reverse tasks | Yes: DTS tidak menulis operasi heartbeat ke database sumber. Latensi sinkronisasi yang ditampilkan mungkin tidak akurat jika tidak ada aktivitas DML di sumber untuk periode yang lama. No: DTS menulis operasi heartbeat, yang mungkin memengaruhi pencadangan fisik dan kloning database sumber. |
| Environment Tag | Tag opsional untuk mengidentifikasi instans DTS. |
| Configure ETL | Yes: Konfigurasikan pemrosesan ekstrak, transformasi, dan muat (ETL) dengan pernyataan pemrosesan data. Lihat Configure ETL in a data migration or data synchronization task. No: Lewati konfigurasi ETL. |
| Monitoring and Alerting | Yes: Konfigurasikan ambang batas peringatan dan penerima notifikasi untuk kegagalan tugas atau lonjakan latensi. Lihat Configure monitoring and alerting when you create a DTS task. No: Tidak ada peringatan. |
Langkah 5: (Opsional) Konfigurasikan bidang database dan tabel
Klik Next: Configure Database and Table Fields untuk menentukan cara DTS memetakan struktur tabel sumber ke tujuan.
Langkah ini hanya tersedia jika Schema Synchronization dipilih. Atur Definition Status ke All untuk melihat dan mengedit semua tabel.
| Parameter | Deskripsi |
|---|---|
| Primary Key Column | Pilih satu atau beberapa kolom sebagai kunci primer di tujuan. |
| Distribution Key | Pilih satu atau beberapa kolom dari kolom kunci primer sebagai kunci distribusi. |
| Engine | Pilih mesin tabel tujuan: Unique atau Duplicate. Jika tabel sumber tidak memiliki kunci primer atau kendala UNIQUE, pilih duplicate. Menggunakan mesin yang salah dapat menyebabkan tugas gagal atau kehilangan data. |
Langkah 6: Jalankan pemeriksaan awal
Klik Next: Save Task Settings and Precheck.
Untuk melihat pratinjau parameter API untuk konfigurasi ini, arahkan kursor ke tombol lalu klik Preview OpenAPI parameters sebelum melanjutkan.
DTS menjalankan pemeriksaan awal sebelum tugas dimulai. Jika pemeriksaan awal gagal:
Klik View Details di sebelah item yang gagal, perbaiki masalah yang dilaporkan, lalu klik Precheck Again.
Jika suatu item menghasilkan peringatan yang dapat diabaikan, klik Confirm Alert Details, lalu Ignore, lalu OK, kemudian Precheck Again. Mengabaikan peringatan dapat menyebabkan ketidakkonsistenan data.
Langkah 7: Beli instans
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Di halaman buy, konfigurasikan parameter berikut:
Bagian Parameter Deskripsi New Instance Class Billing Method Subscription: Bayar di muka untuk jangka waktu tetap. Lebih hemat biaya untuk penggunaan jangka panjang. Pay-as-you-go: Ditagih per jam. Lepaskan instans saat tidak lagi diperlukan untuk menghentikan tagihan. Resource Group Settings Kelompok sumber daya untuk instans ini. Default: default resource group. Lihat What is Resource Management? Instance Class Kecepatan sinkronisasi bervariasi berdasarkan kelas instans. Lihat Instance classes of data synchronization instances. Subscription Duration Tersedia hanya untuk metode penagihan Subscription. Nilai valid: 1–9 bulan, 1 tahun, 2 tahun, 3 tahun, atau 5 tahun. Baca dan terima Data Transmission Service (Pay-as-you-go) Service Terms.
Klik Buy and Start, lalu klik OK di dialog konfirmasi.
Tugas muncul di daftar tugas. Pantau perkembangannya di sana.
Pemetaan tipe data
DTS secara otomatis mengonversi tipe data PolarDB-X 2.0 ke tipe SelectDB yang kompatibel selama sinkronisasi skema. Tinjau pemetaan sebelum sinkronisasi untuk mengidentifikasi kolom yang memerlukan penyesuaian skema.
| Kategori | Tipe PolarDB-X 2.0 | Tipe SelectDB | Catatan |
|---|---|---|---|
| Numerik | TINYINT | TINYINT | |
| TINYINT UNSIGNED | SMALLINT | Rentang unsigned melebihi TINYINT; dinaikkan ke SMALLINT. | |
| SMALLINT | SMALLINT | ||
| SMALLINT UNSIGNED | INT | ||
| MEDIUMINT | INT | ||
| MEDIUMINT UNSIGNED | BIGINT | ||
| INT | INT | ||
| INT UNSIGNED | BIGINT | ||
| BIGINT | BIGINT | ||
| BIGINT UNSIGNED | LARGEINT | ||
| BIT(M) | INT | ||
| Desimal | DECIMAL | DECIMAL | zerofill tidak didukung. |
| NUMERIC | DECIMAL | ||
| FLOAT | FLOAT | ||
| DOUBLE | DOUBLE | ||
| BOOL / BOOLEAN | BOOLEAN | ||
| Tanggal dan waktu | DATE | DATEV2 | |
| DATETIME[(fsp)] | DATETIMEV2 | ||
| TIMESTAMP[(fsp)] | DATETIMEV2 | ||
| TIME[(fsp)] | VARCHAR | SelectDB tidak memiliki tipe TIME; disimpan sebagai string. | |
| YEAR[(4)] | INT | ||
| String | CHAR, VARCHAR | VARCHAR | Dikonversi ke VARCHAR(4xn) untuk mencegah kehilangan data, karena PolarDB-X 2.0 menghitung karakter sedangkan SelectDB menghitung byte. Jika panjang tidak ditentukan, default menjadi VARCHAR(65533). Jika panjang yang dikonversi melebihi 65533, tipe menjadi STRING. |
| BINARY, VARBINARY | STRING | ||
| TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT | STRING | ||
| TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB | STRING | ||
| ENUM | STRING | ||
| SET | STRING | ||
| JSON | STRING |
Kolom tambahan untuk tabel mesin Duplicate
DTS secara otomatis menambahkan kolom berikut ke tabel mesin Duplicate di tujuan. Jika Anda membuat tabel tujuan secara manual (tanpa menggunakan sinkronisasi skema DTS), tambahkan kolom ini sebelum memulai tugas.
| Kolom | Tipe data | Default | Deskripsi |
|---|---|---|---|
_is_deleted | INT | 0 | Menunjukkan apakah catatan dihapus. 0 untuk INSERT dan UPDATE; 1 untuk DELETE. |
_version | BIGINT | 0 | Timestamp versi. 0 untuk catatan yang dimuat selama sinkronisasi penuh. Untuk catatan inkremental, timestamp (dalam detik) dari binlog sumber. |
_record_id | BIGINT | 0 | Pengidentifikasi catatan unik. 0 untuk catatan sinkronisasi penuh. Untuk catatan inkremental, ID catatan unik yang bertambah dari log inkremental. |
Gunakan kolom ini untuk mengidentifikasi dan menghapus catatan duplikat saat deduplikasi diperlukan.