Gunakan Data Transmission Service (DTS) untuk memigrasikan data dari instans PolarDB-X 2.0 ke instans ApsaraDB for SelectDB.
Fitur ini berada dalam fase pengujian grayscale dan hanya tersedia untuk sebagian pengguna.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Instans PolarDB-X 2.0 (sumber) dengan bandwidth outbound minimal 100 Mbit/s
-
Instans ApsaraDB for SelectDB (tujuan)
-
Parameter
binlog_row_imagediatur kefullpada instans sumber (diperlukan untuk migrasi data inkremental). Untuk detailnya, lihat Pengaturan parameter. -
Akun database dengan izin yang diperlukan pada kedua instans (lihat Izin yang diperlukan)
-
Blok CIDR server DTS ditambahkan ke pengaturan keamanan kedua instans. Untuk detailnya, lihat Menambahkan blok CIDR server DTS.
Objek yang tidak didukung
Jenis objek berikut tidak dapat dimigrasikan:
-
Tabel yang namanya mengandung huruf kapital
-
INDEX, PARTITION, VIEW, PROCEDURE, FUNCTION, TRIGGER, dan kunci asing (FK)
-
Objek TABLEGROUP
-
Database atau tabel yang mengandung atribut Locality
-
Instans read-only Edisi Perusahaan PolarDB-X 2.0
Tabel yang akan dimigrasikan harus memiliki PRIMARY KEY atau kendala UNIQUE, dengan semua field bersifat unik. Tanpa kendala tersebut, database tujuan mungkin berisi catatan duplikat.
Jika Anda memilih tabel sebagai objek migrasi dan perlu mengganti nama tabel atau kolomnya di tujuan, satu tugas mendukung hingga 1.000 tabel. Untuk lebih dari 1.000 tabel, konfigurasikan beberapa tugas atau migrasikan seluruh database sekaligus.
Pembatasan selama migrasi
Jangan lakukan operasi berikut saat tugas migrasi sedang berjalan:
-
Pada instans sumber: Jalankan pernyataan DDL yang mengubah skema database atau tabel selama migrasi skema atau migrasi data penuh. Melakukan hal ini menyebabkan tugas gagal.
-
Pada instans tujuan:
-
Buat kluster dalam instans ApsaraDB for SelectDB. Jika hal ini menyebabkan kegagalan tugas, restart instans migrasi untuk melanjutkan.
-
Tambahkan node backend ke database ApsaraDB for SelectDB. Jika hal ini menyebabkan kegagalan tugas, restart instans migrasi untuk melanjutkan.
-
Izinkan sumber data lain menulis ke tujuan saat DTS sedang berjalan. Hal ini dapat menyebabkan ketidakkonsistenan data atau kegagalan tugas.
-
-
Pembatasan DDL: Jangan jalankan pernyataan DDL yang memodifikasi beberapa kolom sekaligus atau memodifikasi tabel yang sama secara berturut-turut.
Persyaratan khusus SelectDB
-
Nama database dan tabel: Harus diawali dengan huruf. Gunakan fitur pemetaan nama objek untuk mengganti nama objek apa pun yang tidak memenuhi persyaratan ini.
-
Nama karakter Tionghoa: Objek dengan nama berisi karakter Tionghoa harus diganti namanya menggunakan pemetaan nama objek (misalnya, dari Tionghoa ke Inggris). Jika tidak, tugas mungkin gagal.
-
Panjang VARCHAR: Di PolarDB-X 2.0,
VARCHAR(M)menentukan panjang karakter. Di SelectDB,VARCHAR(N)menentukan panjang byte. Jika Anda melewatkan migrasi skema, atur panjang field VARCHAR SelectDB menjadi empat kali panjang field PolarDB-X 2.0 yang sesuai. -
Mesin tabel tujuan: Data hanya dapat dimigrasikan ke tabel mesin Unique atau tabel mesin Duplicate. Lihat Tabel mesin Unique dan Tabel mesin Duplicate di bawah.
Tabel mesin Unique
Semua kunci unik dalam tabel mesin Unique tujuan harus ada di tabel sumber dan termasuk dalam objek yang akan dimigrasikan. Jika tidak, ketidakkonsistenan data mungkin terjadi.
Tabel mesin Duplicate
Ketika tabel tujuan adalah tabel mesin Duplicate, DTS mengonversi pernyataan UPDATE dan DELETE menjadi pernyataan INSERT. Catatan duplikat mungkin muncul dalam skenario berikut:
-
Instans migrasi diulang atau dimulai ulang.
-
Data yang sama dimodifikasi oleh operasi DML dua kali atau lebih setelah instans migrasi dimulai.
Untuk menghapus duplikat catatan, gunakan kolom tambahan yang dibuat secara otomatis oleh DTS: _is_deleted, _version, dan _record_id. Lihat Kolom tambahan.
Catatan lainnya
-
Kinerja migrasi data penuh: Migrasi data penuh menggunakan resource baca dan tulis pada kedua instans, yang meningkatkan beban database. Jalankan migrasi selama jam sepi, ketika beban CPU pada kedua instans di bawah 30%.
-
Fragmentasi storage: Karena migrasi data penuh menggunakan operasi INSERT konkuren, tabel tujuan menjadi terfragmentasi. Setelah migrasi data penuh, tabel tujuan menempati ruang penyimpanan lebih besar daripada tabel sumber.
-
Penulisan heartbeat: DTS secara berkala menjalankan
CREATE DATABASE IF NOT EXISTS \`test\`pada instans sumber untuk menulis data heartbeat dan memajukan posisi log biner. Jika Anda mengatur Whether to delete SQL operations on heartbeat tables of forward and reverse tasks ke Yes, atau jika akun sumber tidak memiliki izin untuk membuat database, dan tidak ada operasi DML yang dilakukan pada sumber dalam periode yang lama, informasi latensi mungkin tidak akurat. Untuk memperbarui data latensi, lakukan operasi DML pada instans sumber. -
Pemulihan tugas: Jika tugas DTS gagal, tim dukungan DTS mencoba memulihkannya dalam waktu 8 jam. Selama pemulihan, tugas mungkin dimulai ulang dan parameter tugas tertentu mungkin disesuaikan. Parameter database tidak dimodifikasi.
Penagihan
| Jenis migrasi | Biaya konfigurasi tugas | Biaya transfer data |
|---|---|---|
| Migrasi skema dan migrasi data penuh | Gratis | Gratis ketika Metode Akses adalah Instans Alibaba Cloud. Biaya berlaku ketika Metode Akses adalah Alamat IP Publik. Lihat Ikhtisar penagihan. |
| Migrasi data inkremental | Dikenai biaya. Lihat Ikhtisar penagihan. | — |
Operasi SQL yang didukung dalam migrasi inkremental
| Jenis operasi | Pernyataan SQL |
|---|---|
| DML | INSERT, UPDATE, DELETE |
| DDL | ADD COLUMN; DROP COLUMN; DROP TABLE; TRUNCATE TABLE; RENAME TABLE |
Operasi RENAME TABLE dapat menyebabkan ketidakkonsistenan data. Misalnya, jika Anda memilih sebuah tabel sebagai objek migrasi dan mengganti namanya selama migrasi, data tabel tersebut tidak dimigrasikan. Untuk menghindari hal ini, pilih database yang berisi tabel tersebut sebagai objek migrasi, dan pastikan nama database sebelum dan sesudah penggantian nama termasuk dalam objek yang akan dimigrasikan.
Izin yang diperlukan
| Database | Migrasi skema | Migrasi penuh | Migrasi inkremental |
|---|---|---|---|
| PolarDB-X 2.0 sumber | SELECT | SELECT | REPLICATION SLAVE, REPLICATION CLIENT, dan SELECT pada objek yang akan dimigrasikan |
| ApsaraDB for SelectDB tujuan | Usage_priv (akses kluster), Select_priv, Load_priv, Alter_priv, Create_priv, Drop_priv | ||
Untuk petunjuk membuat akun dan memberikan izin:
PolarDB-X 2.0: Kelola akun database dan Izin akun selama sinkronisasi data
ApsaraDB for SelectDB: Pengelolaan izin kluster dan Pengelolaan izin dasar
Buat tugas migrasi
Langkah 1: Buka halaman Migrasi Data
Gunakan salah satu metode berikut:
Konsol DTS
Masuk ke Konsol DTS.
Di panel navigasi kiri, klik Data Migration.
Di pojok kiri atas, pilih wilayah tempat instans migrasi berada.
Konsol DMS
Langkah aktual dapat berbeda tergantung pada mode dan tata letak konsol DMS. Lihat Mode simple dan Sesuaikan tata letak dan gaya konsol DMS.
Masuk ke Konsol DMS.
Di bilah navigasi atas, arahkan kursor ke Data + AI > DTS (DTS) > Data Migration.
Dari daftar drop-down di sebelah kanan Data Migration Tasks, pilih wilayah tempat instans migrasi berada.
Langkah 2: Konfigurasi database sumber dan tujuan
Klik Create Task.
Konfigurasikan parameter yang dijelaskan dalam tabel berikut.
Kategori Parameter Deskripsi N/A Task Name Nama untuk tugas DTS. DTS menghasilkan nama default. Tentukan nama informatif agar tugas mudah diidentifikasi. Nama tidak perlu unik. Source Database Select Existing Connection Jika instans sumber terdaftar di DTS, pilih dari daftar drop-down. DTS akan mengisi otomatis parameter lainnya. Jika tidak, konfigurasikan parameter secara manual. Di konsol DMS, pilih instans dari Select a DMS database instance. Database Type Pilih PolarDB-X 2.0. Access Method Pilih Alibaba Cloud Instance. Instance Region Pilih wilayah tempat instans PolarDB-X 2.0 sumber berada. Replicate Data Across Alibaba Cloud Accounts Pilih No jika instans sumber dan tujuan berada dalam Akun Alibaba Cloud yang sama. Instance ID Pilih ID instans PolarDB-X 2.0 sumber. Database Account Masukkan akun database. Lihat Izin yang diperlukan untuk izin minimum yang dibutuhkan. Database Password Masukkan password untuk akun database. Destination Database Select Existing Connection Jika instans tujuan terdaftar di DTS, pilih dari daftar drop-down. DTS akan mengisi otomatis parameter lainnya. Jika tidak, konfigurasikan parameter secara manual. Di konsol DMS, pilih instans dari Select a DMS database instance. Database Type Pilih SelectDB. Access Method Pilih Alibaba Cloud Instance. Instance Region Pilih wilayah tempat instans SelectDB tujuan berada. Replicate Data Across Alibaba Cloud Accounts Pilih No jika instans sumber dan tujuan berada dalam Akun Alibaba Cloud yang sama. Instance ID Pilih ID instans SelectDB tujuan. Database Account Masukkan akun database. Lihat Izin yang diperlukan untuk izin minimum yang dibutuhkan. Database Password Masukkan password untuk akun database. Klik Test Connectivity and Proceed.
Langkah 3: Konfigurasi objek migrasi
Di halaman Configure Objects, atur parameter berikut.
Parameter Deskripsi Migration Types Pilih jenis migrasi sesuai kebutuhan Anda: <br>- Schema Migration + Full Data Migration: Hanya memigrasikan data yang sudah ada. Jangan menulis data baru ke sumber selama migrasi. <br>- Schema Migration + Full Data Migration + Incremental Data Migration: Memigrasikan data yang sudah ada dan menjaga sinkronisasi tujuan dengan perubahan yang sedang berlangsung. Gunakan kombinasi ini untuk meminimalkan gangguan layanan. <br><br>Jika Anda melewatkan Schema Migration, buat tabel mesin Unique atau Duplicate dengan struktur yang benar di SelectDB sebelum memulai tugas. Untuk detailnya, lihat Pemetaan tipe data, Kolom tambahan, dan Model data. Processing Mode of Conflicting Tables - Precheck and Report Errors: Pemeriksaan awal gagal jika tujuan berisi tabel dengan nama yang sama seperti sumber. Untuk menyelesaikan konflik, gunakan pemetaan nama objek untuk mengganti nama tabel yang dimigrasikan. Lihat Pemetaan nama objek. <br>- Ignore Errors and Proceed: Melewatkan pemeriksaan awal untuk nama tabel yang identik. PeringatanHal ini dapat menyebabkan ketidakkonsistenan data. Selama migrasi penuh, DTS melewatkan catatan yang bentrok dan mempertahankan data tujuan yang sudah ada. Selama migrasi inkremental, DTS menimpa catatan yang bentrok. Jika skema sumber dan tujuan berbeda, hanya kolom parsial yang dimigrasikan atau tugas mungkin gagal.
Capitalization of Object Names in Destination Instance Kebijakan kapitalisasi untuk nama database, tabel, dan kolom di tujuan. Default ke Kebijakan default DTS. Lihat Tentukan kapitalisasi nama objek di instans tujuan. Source Objects Pilih database atau tabel yang akan dimigrasikan, lalu klik
untuk memindahkannya ke Selected Objects.Selected Objects - Untuk mengganti nama tabel di tujuan, klik kanan tabel tersebut dan pilih opsi pemetaan nama objek. Lihat Pemetaan nama objek. <br>- Untuk memfilter baris, klik kanan tabel dan tentukan kondisi WHERE. Lihat Tentukan kondisi filter. <br>- Untuk memilih operasi SQL tertentu untuk database atau tabel, klik kanan objek dan pilih operasi yang akan disertakan. <br>- Jika Schema Migration dipilih, Anda hanya dapat memilih tabel (bukan database) sebagai objek migrasi, dan harus mengatur parameter bucket_count: klik kanan tabel, aktifkan Enable Parameter Settings, atur Value ke bilangan bulat positif (default: auto), lalu klik OK. <br><br>CatatanMengganti nama objek dengan pemetaan nama objek dapat menyebabkan migrasi objek dependen gagal.
Klik Next: Advanced Settings dan konfigurasikan parameter berikut.
Parameter Deskripsi Dedicated Cluster for Task Scheduling Secara default, DTS menjadwalkan tugas ke kluster bersama. Untuk meningkatkan stabilitas tugas, beli kluster khusus. Lihat Apa itu kluster khusus DTS. Retry Time for Failed Connections Berapa lama DTS mencoba koneksi yang gagal setelah tugas dimulai. Rentang valid: 10–1.440 menit. Default: 720 menit. Atur lebih dari 30 menit. Jika DTS terhubung kembali dalam periode ini, tugas dilanjutkan. Jika tidak, tugas gagal. CatatanSaat beberapa tugas berbagi sumber atau tujuan yang sama, waktu coba ulang yang paling baru diatur akan berlaku. DTS menagih instans selama masa percobaan ulang.
Retry Time for Other Issues Berapa lama DTS mencoba ulang operasi DDL atau DML yang gagal. Rentang valid: 1–1.440 menit. Default: 10 menit. Atur lebih dari 10 menit. Harus kurang dari Retry Time for Failed Connections. Enable Throttling for Full Data Migration Membatasi throughput baca dan tulis selama migrasi penuh untuk mengurangi beban pada kedua instans. Konfigurasikan 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 Migration dipilih. Enable Throttling for Incremental Data Migration Membatasi throughput selama migrasi inkremental. Konfigurasikan RPS of Incremental Data Migration dan Data migration speed for incremental migration (MB/s). Tersedia hanya jika Incremental Data Migration dipilih. Whether to delete SQL operations on heartbeat tables of forward and reverse tasks Mengontrol apakah DTS menulis operasi SQL heartbeat ke instans sumber. <br>- Yes: DTS tidak menulis operasi heartbeat. Informasi latensi mungkin tidak akurat. <br>- No: DTS menulis operasi heartbeat. Backup fisik dan kloning sumber mungkin terpengaruh. Environment Tag Tag opsional untuk mengidentifikasi instans. Configure ETL Apakah akan mengaktifkan fitur ekstrak, transformasi, dan muat (ETL). Lihat Apa itu ETL? dan Konfigurasi ETL dalam tugas migrasi data atau sinkronisasi data. Monitoring and Alerting Apakah akan menerima notifikasi saat tugas gagal atau latensi migrasi melebihi ambang batas. Jika Yes, konfigurasikan ambang batas peringatan dan pengaturan notifikasi. Lihat Konfigurasi pemantauan dan peringatan saat membuat tugas DTS. (Opsional) Klik Next: Configure Database and Table Fields. Untuk setiap tabel yang akan dimigrasikan, tentukan Primary Key Column, Distribution Key, dan Engine.
- Langkah ini tersedia hanya jika Schema Migration dipilih. Atur Definition Status ke All untuk melihat semua tabel. - Primary Key Column mendukung beberapa kolom. Satu atau beberapa kolom kunci primer juga dapat dipilih sebagai Distribution Key. - Jika tabel tidak memiliki kunci primer atau kendala UNIQUE, pilih duplicate untuk Engine. Jika tidak, tugas mungkin gagal atau terjadi kehilangan data.
Langkah 4: Jalankan pemeriksaan awal
Klik Next: Save Task Settings and Precheck.
Untuk melihat pratinjau parameter API untuk konfigurasi ini sebelum melanjutkan, arahkan kursor ke Next: Save Task Settings and Precheck lalu klik Preview OpenAPI parameters.
Tugas harus lulus pemeriksaan awal sebelum dapat dimulai.
Jika item pemeriksaan awal gagal, klik View Details di sebelah item yang gagal, selesaikan masalahnya, lalu klik Precheck Again.
Jika peringatan dipicu: jika tidak dapat diabaikan, selesaikan dan periksa ulang. Jika dapat diabaikan dengan aman, klik Confirm Alert Details, klik Ignore di kotak dialog, konfirmasi, lalu klik Precheck Again. Mengabaikan peringatan dapat menyebabkan ketidakkonsistenan data.
Langkah 5: Beli dan mulai instans
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Di halaman Purchase Instance, konfigurasikan instans.
Bagian Parameter Deskripsi New Instance Class Resource Group Kelompok sumber daya untuk instans migrasi. Default ke kelompok sumber daya default. Lihat Apa itu Pengelolaan Sumber Daya? Instance Class Kelas instans menentukan kecepatan migrasi. Pilih kelas sesuai kebutuhan Anda. Lihat Kelas instans migrasi data. Pilih kotak centang Data Transmission Service (Pay-as-you-go) Service Terms.
Klik Buy and Start, lalu klik OK di kotak dialog konfirmasi.
Tugas muncul di halaman Data Migration. Lacak perkembangannya di sana.
Jika tugas tidak mencakup migrasi data inkremental, tugas akan berhenti secara otomatis saat selesai. Status menampilkan Completed.
Jika tugas mencakup migrasi data inkremental, tugas berjalan terus-menerus. Status menampilkan Running. Tugas migrasi data inkremental tidak pernah berhenti atau selesai secara otomatis.
Pemetaan tipe data
| Kategori | Tipe PolarDB-X 2.0 | Tipe SelectDB |
|---|---|---|
| Numerik | TINYINT | TINYINT |
| TINYINT UNSIGNED | SMALLINT | |
| SMALLINT | SMALLINT | |
| SMALLINT UNSIGNED | INT | |
| MEDIUMINT | INT | |
| MEDIUMINT UNSIGNED | BIGINT | |
| INT | INT | |
| INT UNSIGNED | BIGINT | |
| BIGINT | BIGINT | |
| BIGINT UNSIGNED | LARGEINT | |
| BIT(M) | INT | |
| Decimal | Decimal ( Catatan 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 | |
| YEAR[(4)] | INT | |
| String | CHAR / VARCHAR | VARCHAR |
| BINARY / VARBINARY | STRING | |
| TINYTEXT / TEXT / MEDIUMTEXT / LONGTEXT | STRING | |
| TINYBLOB / BLOB / MEDIUMBOLB / LONGBLOB | STRING | |
| ENUM | STRING | |
| SET | STRING | |
| JSON | STRING |
Untuk menghindari kehilangan data, CHAR dan VARCHAR(n) dikonversi menjadi VARCHAR(4*n) di SelectDB.
Jika panjang tidak ditentukan, default SelectDB VARCHAR(65533) digunakan.
Jika panjang melebihi 65533, data dikonversi menjadi STRING.
Kolom tambahan
DTS secara otomatis membuat kolom berikut dalam tabel mesin Duplicate (atau Anda dapat menambahkannya secara manual):
| Kolom | Tipe | Nilai default | Deskripsi |
|---|---|---|---|
_is_deleted | Int | 0 | Menunjukkan apakah catatan tersebut dihapus. Diatur ke 0 untuk operasi INSERT dan UPDATE, 1 untuk operasi DELETE. |
_version | Bigint | 0 | Diatur ke 0 selama migrasi data penuh. Selama migrasi inkremental, berisi timestamp (dalam detik) dari file log biner sumber. |
_record_id | Bigint | 0 | Diatur ke 0 selama migrasi data penuh. Selama migrasi inkremental, berisi ID unik entri log inkremental. ID ini bertambah otomatis untuk setiap entri log baru. |