Layanan Transmisi Data (DTS) memungkinkan migrasi data dari database MySQL yang dikelola sendiri ke kluster PolarDB for MySQL dengan downtime minimal. Panduan ini memandu Anda melalui konfigurasi dan pelaksanaan tugas migrasi, mencakup migrasi skema, migrasi data penuh, dan migrasi data inkremental.
Dalam panduan ini, Anda akan:
Meninjau prasyarat, izin, dan batasan
Mengonfigurasi database sumber dan tujuan
Memilih jenis dan objek migrasi
Menjalankan pemeriksaan awal dan membeli instans migrasi
Verifikasi migrasi dan peralihan
Prasyarat
Sebelum memulai, pastikan bahwa:
Database MySQL yang dikelola sendiri terhubung ke Alibaba Cloud, dan blok CIDR server DTS telah ditambahkan ke pengaturan keamanannya (aturan grup keamanan, firewall, daftar putih). Untuk detailnya, lihat Persiapan.
(Untuk migrasi inkremental) Binary logging diaktifkan pada database MySQL sumber. Untuk detailnya, lihat Buat akun untuk database MySQL yang dikelola sendiri dan konfigurasi binary logging.
Kluster PolarDB for MySQL tujuan sudah tersedia dengan kapasitas penyimpanan lebih besar daripada database sumber. Lihat Beli kluster pay-as-you-go atau Beli kluster langganan.
Untuk versi database yang didukung, lihat Ikhtisar skenario migrasi data.
Jenis migrasi
DTS mendukung tiga jenis migrasi, yang dapat dikombinasikan:
| Jenis migrasi | Fungsinya |
|---|---|
| Schema migration | Migrasi skema objek yang dipilih (tabel, view, trigger, prosedur tersimpan, fungsi tersimpan) dari sumber ke tujuan. |
| Full data migration | Migrasi semua data yang ada dari database sumber. |
| Incremental data migration | Setelah migrasi data penuh selesai, secara terus-menerus mencerminkan perubahan dari sumber ke tujuan, menjaga layanan tetap berjalan selama migrasi. |
Perilaku migrasi skema:
DTS mengubah atribut SECURITY dari DEFINER menjadi INVOKER untuk view, prosedur tersimpan, dan fungsi, serta menetapkan DEFINER ke akun database tujuan yang digunakan dalam migrasi.
DTS tidak memigrasikan informasi pengguna. Berikan izin baca dan tulis kepada INVOKER pada database tujuan untuk memanggil view, prosedur tersimpan, atau fungsi tersimpan.
DTS memigrasikan kunci asing dari sumber ke tujuan. Selama migrasi data penuh dan inkremental, DTS sementara menonaktifkan pemeriksaan kendala dan operasi kaskade pada kunci asing di tingkat session.
Operasi SQL yang didukung dalam migrasi data inkremental:
| Jenis operasi | Pernyataan yang didukung |
|---|---|
| DML | INSERT, UPDATE, DELETE |
| DDL | ALTER TABLE, ALTER VIEW, CREATE FUNCTION, CREATE INDEX, CREATE PROCEDURE, CREATE TABLE, CREATE VIEW, DROP INDEX, DROP TABLE, RENAME TABLE, TRUNCATE TABLE |
Operasi RENAME TABLE dapat menyebabkan ketidakkonsistenan data. Jika Anda memilih sebuah tabel sebagai objek migrasi dan mengganti namanya selama migrasi, data mungkin tidak sampai ke tujuan. Untuk mencegah hal ini, pilih seluruh database sebagai objek migrasi dan pastikan database yang berisi tabel tersebut sebelum dan sesudah penggantian nama termasuk dalam migrasi.
Penagihan
| Jenis migrasi | Biaya konfigurasi instans | Biaya lalu lintas internet |
|---|---|---|
| Migrasi skema + migrasi data penuh | Gratis | Dikenakan biaya hanya jika Access Method diatur ke Public IP Address. Lihat Ikhtisar penagihan. |
| Migrasi data inkremental | Dikenakan biaya. Lihat Ikhtisar penagihan. | — |
Izin yang diperlukan
Berikan izin berikut kepada akun database yang digunakan oleh DTS:
| Database | Migrasi skema | Migrasi penuh | Migrasi inkremental |
|---|---|---|---|
| MySQL yang dikelola sendiri | SELECT | SELECT | SELECT pada objek yang akan dimigrasikan; REPLICATION CLIENT; REPLICATION SLAVE; SHOW VIEW; izin untuk membuat database dan tabel (agar DTS dapat membuat database test untuk memajukan posisi log biner) |
| Kluster PolarDB for MySQL | Baca dan tulis | Baca dan tulis | Baca dan tulis |
Untuk instruksi, lihat:
MySQL yang dikelola sendiri: Buat akun untuk database MySQL yang dikelola sendiri dan konfigurasi binary logging
PolarDB for MySQL: Buat dan kelola akun database
Batasan
Database sumber
Server harus memiliki bandwidth outbound yang cukup; jika tidak, kecepatan migrasi menurun.
Tabel harus memiliki PRIMARY KEY atau kendala UNIQUE dengan semua field unik; jika tidak, catatan duplikat mungkin muncul di tujuan.
Saat mengganti nama tabel atau kolom di tujuan, satu tugas mendukung hingga 1.000 tabel. Untuk lebih dari 1.000 tabel, konfigurasikan beberapa tugas atau migrasikan seluruh database.
Selama migrasi skema dan migrasi data penuh, jangan menjalankan pernyataan DDL yang mengubah skema database atau tabel; tugas akan gagal.
Selama migrasi hanya penuh (tanpa inkremental), jangan menulis ke database sumber; hal ini menyebabkan ketidakkonsistenan data. Untuk menjaga konsistensi, pilih migrasi skema, migrasi data penuh, dan migrasi data inkremental secara bersamaan.
Data yang dihasilkan oleh operasi kaskade atau dipulihkan dari backup fisik tidak dicatat dalam log biner dan tidak akan dimigrasikan.
Jika sumber adalah MySQL 8.0.23 atau lebih baru dan datanya mencakup kolom tak terlihat (invisible columns), kolom tersebut tidak dapat dibaca dan terjadi kehilangan data. Untuk membuat kolom terlihat, jalankan:
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;
Tabel tanpa primary key secara otomatis menghasilkan primary key tak terlihat. Jadikan primary key tak terlihat tersebut terlihat sebelum migrasi. Lihat Generated Invisible Primary Keys.
Persyaratan log biner untuk migrasi inkremental:
| Parameter | Nilai yang diperlukan | Catatan |
|---|---|---|
binlog_format | ROW | Jika tidak diatur ke ROW, pemeriksaan awal gagal dan tugas tidak dapat dimulai. |
binlog_row_image | FULL | Jika tidak diatur ke FULL, pemeriksaan awal gagal dan tugas tidak dapat dimulai. |
log_slave_updates | ON | Diperlukan hanya jika sumber adalah MySQL yang dikelola sendiri dalam kluster dual-primary, agar DTS dapat membaca semua log biner. |
| Retensi log biner | Minimal 7 hari (MySQL yang dikelola sendiri) | Log biner instans ApsaraDB RDS for MySQL harus dipertahankan minimal 3 hari; disarankan 7 hari. Jika log biner dihapus terlalu dini, tugas mungkin gagal atau terjadi ketidakkonsistenan data. |
Sumber MySQL yang dikelola sendiri: kasus khusus
Jika terjadi alih bencana primary/secondary pada sumber saat tugas sedang berjalan, tugas gagal.
Latensi migrasi dihitung berdasarkan timestamp data terbaru yang dimigrasikan di tujuan dibandingkan waktu saat ini di sumber. Jika tidak ada operasi DML yang dilakukan pada sumber dalam periode panjang, latensi yang dilaporkan mungkin tidak akurat. Jalankan operasi DML pada sumber untuk memperbarui nilai latensi. Jika Anda memigrasikan seluruh database, buat tabel heartbeat yang diperbarui setiap detik.
DTS secara berkala menjalankan
CREATE DATABASE IF NOT EXISTS \test\`` pada sumber untuk memajukan posisi log biner.
Sumber ApsaraDB RDS for MySQL: kasus khusus
Dalam migrasi data inkremental, instans ApsaraDB RDS for MySQL yang tidak mencatat log transaksi, seperti instans ApsaraDB RDS for MySQL V5.6 read-only, tidak dapat digunakan sebagai database sumber.
DTS secara berkala menjalankan
CREATE DATABASE IF NOT EXISTS \test\`` pada sumber untuk memajukan posisi log biner.
Database tujuan (PolarDB for MySQL)
DTS secara otomatis membuat database di kluster tujuan. Jika nama database sumber tidak sesuai dengan konvensi penamaan PolarDB for MySQL, buat database secara manual sebelum mengonfigurasi tugas. Lihat Kelola database.
Pembatasan kecepatan tidak tersedia untuk migrasi data penuh ke PolarDB for MySQL.
Batasan lainnya
Versi MySQL sumber dan tujuan harus sama.
DTS tidak memigrasikan data yang menggunakan definisi parser yang ditentukan melalui komentar.
Jadwalkan migrasi selama jam sepi. Migrasi data penuh menggunakan resource baca dan tulis kedua database dan meningkatkan beban server.
Setelah migrasi data penuh, operasi INSERT konkuren membuat fragmentasi tabel di tujuan, sehingga ruang tabelnya lebih besar daripada sumber.
Jika data berisi karakter empat byte (karakter langka, emoji), database dan tabel tujuan harus menggunakan set karakter UTF8mb4. Jika Anda menggunakan migrasi skema DTS, atur
character_set_serverke UTF8mb4 di database tujuan.DTS menggunakan
ROUND(COLUMN, PRECISION)untuk membaca kolom FLOAT dan DOUBLE. Presisi default: 38 digit untuk FLOAT, 308 digit untuk DOUBLE. Verifikasi bahwa pengaturan presisi memenuhi kebutuhan Anda.DTS mencoba mengulang tugas yang gagal hingga 7 hari. Sebelum mengalihkan beban kerja ke tujuan, hentikan atau lepas tugas yang gagal, atau cabut izin tulis dari akun DTS. Jika tidak, database sumber mungkin menimpa data tujuan saat tugas yang gagal dilanjutkan.
Nilai DATETIME tidak dapat dikonversi ke VARCHAR.
Jika pernyataan DDL gagal di tujuan, tugas DTS tetap berjalan. Lihat pernyataan DDL yang gagal di log tugas.
Jika sumber adalah instans ApsaraDB RDS for MySQL dengan EncDB diaktifkan, migrasi data penuh tidak didukung. Enkripsi Data Transparan (TDE) didukung untuk ketiga jenis migrasi.
Untuk memigrasikan akun, lihat Migrasi akun database.
Jika tugas DTS gagal, dukungan teknis DTS berusaha memulihkannya dalam waktu 8 jam. Tugas mungkin dimulai ulang dan parameter tugas tertentu mungkin dimodifikasi selama pemulihan. Parameter database tidak dimodifikasi.
Konfigurasi dan jalankan tugas migrasi
Langkah 1: Buka halaman Data Migration
Gunakan salah satu konsol berikut untuk memulai:
Konsol DTS
Login ke Konsol DTS.
Di panel navigasi kiri, klik Data Migration.
Di pojok kiri atas, pilih wilayah tempat instans migrasi berada.
Konsol DMS
Operasi aktual mungkin berbeda tergantung pada mode dan tata letak konsol DMS. Untuk informasi lebih lanjut, lihat Simple mode dan Sesuaikan tata letak dan gaya konsol DMS.
Login ke Konsol DMS
Di bilah navigasi atas, buka .
Di daftar drop-down di sebelah kanan Data Migration Tasks, pilih wilayah.
Langkah 2: Konfigurasi database sumber dan tujuan
Klik Create Task untuk membuka halaman konfigurasi tugas.
Setelah mengonfigurasi database sumber dan tujuan, baca Limits yang ditampilkan di bagian atas halaman sebelum melanjutkan; jika tidak, tugas mungkin gagal atau terjadi ketidakkonsistenan data.
Task Name
| Parameter | Deskripsi |
|---|---|
| Task Name | DTS menghasilkan nama secara otomatis. Tentukan nama deskriptif agar mudah mengidentifikasi tugas. Nama tidak perlu unik. |
Source Database
| Parameter | Deskripsi |
|---|---|
| Select Existing Connection | Pilih instans terdaftar untuk mengisi parameter secara otomatis, atau konfigurasi koneksi secara manual. |
| Database Type | Pilih MySQL. |
| Access Method | Pilih jenis koneksi berdasarkan lokasi database sumber. Panduan ini menggunakan Public IP. Untuk jenis instans lainnya, lihat Ikhtisar persiapan. |
| Instance Region | Wilayah tempat database MySQL yang dikelola sendiri berada. |
| Hostname or IP address | Alamat IP publik atau hostname database sumber. |
| Port | Port layanan database sumber, yang harus terbuka ke internet. Default: 3306. |
| Database Account | Akun untuk database sumber. Lihat Izin yang diperlukan. |
| Database Password | Kata sandi untuk akun tersebut. |
| Encryption | Non-encrypted (jika SSL tidak diaktifkan) atau SSL-encrypted (jika SSL diaktifkan; unggah Sertifikat CA dan konfigurasi Kunci CA). |
Destination Database
| Parameter | Deskripsi |
|---|---|
| Select Existing Connection | Pilih instans terdaftar untuk mengisi parameter secara otomatis, atau konfigurasi koneksi secara manual. |
| Database Type | Pilih PolarDB for MySQL. |
| Access Method | Pilih Cloud Instance. |
| Instance Region | Wilayah tempat kluster PolarDB for MySQL tujuan berada. |
| PolarDB Instance ID | ID kluster PolarDB for MySQL tujuan. |
| Database Account | Akun untuk kluster tujuan. Lihat Izin yang diperlukan. |
| Database Password | Kata sandi untuk akun tersebut. |
| Encryption | Konfigurasi sesuai kebutuhan Anda. Lihat Konfigurasi enkripsi SSL. |
Langkah 3: Uji konektivitas
Di bagian bawah halaman, klik Test Connectivity and Proceed, lalu klik Test Connectivity di dialog CIDR Blocks of DTS Servers.
Pastikan blok CIDR server DTS dapat ditambahkan (secara otomatis atau manual) ke pengaturan keamanan kedua database. Lihat Tambahkan blok CIDR server DTS.
Langkah 4: Pilih objek dan jenis migrasi
Di halaman Configure Objects, konfigurasikan hal berikut:
| Parameter | Deskripsi |
|---|---|
| Migration Types | Pilih Schema Migration dan Full Data Migration untuk migrasi satu kali. Untuk menjaga kontinuitas layanan, pilih juga Incremental data migration. Jika Anda melewatkan Schema Migration, buat database dan tabel tujuan secara manual, dan aktifkan pemetaan nama objek di Selected Objects. |
| Method to migrate triggers in source database | Pilih metode migrasi trigger sesuai kebutuhan Anda. Tersedia hanya jika Migration Types mencakup Schema Migration. Lihat Konfigurasi metode sinkronisasi atau migrasi trigger. |
| Processing mode of conflicting tables | Precheck and Report Errors: gagal dalam pemeriksaan awal jika terdapat nama tabel identik di sumber dan tujuan (gunakan pemetaan nama objek untuk mengganti nama tabel yang bertentangan). Ignore Errors and Proceed: lewati pemeriksaan awal untuk nama tabel identik. Perhatikan bahwa hal ini dapat menyebabkan ketidakkonsistenan data: selama migrasi data penuh, DTS tidak memigrasikan catatan yang bertentangan dan catatan tujuan yang ada dipertahankan; selama migrasi data inkremental, DTS memigrasikan catatan tersebut dan catatan tujuan yang ada ditimpa. |
| Whether to migrate event | Pilih Yes pengaturan pemberitahuan peringatan untuk memigrasikan event, lalu lengkapi langkah-langkah berikutnya. Lihat Sinkronisasi atau migrasi event. |
| Capitalization of object names in destination instance | Mengontrol kapitalisasi nama database, tabel, dan kolom di tujuan. Default: DTS default policy. Lihat Tentukan kapitalisasi nama objek. |
| Source Objects | Pilih objek dan klik |
| Selected Objects | Klik kanan objek untuk mengganti namanya secara individual, atau klik Batch Edit untuk mengganti nama massal. Untuk memfilter baris, klik kanan tabel dan atur kondisi WHERE. Untuk membatasi operasi SQL di tingkat database atau tabel, klik kanan dan pilih operasi yang ingin disertakan. |
Langkah 5: Konfigurasi pengaturan lanjutan
Klik Next: Advanced Settings dan konfigurasikan:
| Parameter | Deskripsi |
|---|---|
| Dedicated cluster for task scheduling | Secara default, DTS menggunakan kluster bersama. Untuk stabilitas lebih tinggi, beli kluster khusus. Lihat Apa itu kluster khusus DTS. |
| Select the engine type of the destination database | InnoDB (default) atau X-Engine (mesin penyimpanan Online Transaction Processing (OLTP)). |
| Copy the temporary table of the online DDL tool | Mengontrol penanganan tabel sementara yang dibuat oleh alat DDL online. Yes: memigrasikan data tabel sementara (dapat meningkatkan latensi). No, Adapt to DMS Online DDL: hanya memigrasikan DDL asli dari DMS (tabel tujuan mungkin terkunci). No, Adapt to gh-ost: hanya memigrasikan DDL asli dari gh-ost (tabel tujuan mungkin terkunci). Jangan gunakan pt-online-schema-change; hal ini menyebabkan kegagalan tugas. |
| Whether to migrate accounts | Pilih Yes untuk memigrasikan akun; lalu pilih akun dan konfirmasi izin. Lihat Migrasi akun database. |
| Retry time for failed connections | Durasi DTS mencoba menghubungkan kembali setelah kegagalan koneksi. Rentang: 10–1.440 menit. Default: 720 menit. Disarankan mengatur parameter ini lebih dari 30 menit. |
| Retry time for other issues | Durasi DTS mencoba mengulang setelah kegagalan DDL atau DML. Rentang: 1–1.440 menit. Default: 10 menit. Disarankan mengatur parameter ini lebih dari 10 menit. Harus lebih kecil dari Retry time for failed connections. |
| Enable throttling for full data migration | Membatasi QPS, RPS, dan kecepatan migrasi untuk mengurangi beban pada tujuan. Konfigurasi 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 RPS dan kecepatan migrasi untuk migrasi inkremental. Konfigurasi 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 | Yes: DTS tidak menulis operasi tabel heartbeat ke sumber (latensi migrasi mungkin ditampilkan). No: DTS menulis operasi tabel heartbeat ke sumber (dapat memengaruhi backup fisik dan kloning database sumber). |
| Configure ETL | Yes: mengaktifkan ekstrak, transformasi, dan muat (ETL); masukkan pernyataan pemrosesan di editor kode. No: ETL dinonaktifkan. Lihat Apa itu ETL? |
| Monitoring and alerting | Yes: mengonfigurasi peringatan untuk kegagalan tugas atau latensi yang melebihi ambang batas. Lihat Konfigurasi pemantauan dan peringatan. |
Langkah 6: Konfigurasi verifikasi data (opsional)
Klik Next Step: Data Verification untuk menyiapkan tugas verifikasi data. Untuk informasi selengkapnya, lihat Mengonfigurasi tugas verifikasi data.
Langkah 7: Jalankan pemeriksaan awal dan beli instans
Klik Next: Save Task Settings and Precheck.
Untuk melihat pratinjau parameter API untuk konfigurasi tugas ini, arahkan kursor ke Next: Save Task Settings and Precheck dan klik Preview OpenAPI parameters.
Tunggu hingga pemeriksaan awal selesai.
Jika suatu item gagal, klik View Details, perbaiki masalahnya, lalu klik Precheck Again.
Jika peringatan dipicu untuk item yang dapat diabaikan, klik Confirm Alert Details > Ignore > OK, lalu klik Precheck Again.
Saat Success Rate mencapai 100%, klik Next: Purchase Instance.
Di halaman Purchase Instance, atur Instance Class:
Parameter Deskripsi Resource Group Kelompok sumber daya untuk instans migrasi. Default: default resource group. Instance Class Kelas instans menentukan kecepatan migrasi. Pilih sesuai kebutuhan Anda. Lihat Kelas instans untuk instans migrasi data. Pilih kotak centang Data Transmission Service (Pay-as-you-go) Service Terms, lalu klik Buy and Start > OK.
Lihat progres tugas di halaman Data Migration:
Migrasi skema atau migrasi hanya penuh: tugas berhenti secara otomatis. Status menunjukkan Completed.
Incremental data migration: tugas berjalan terus-menerus dan tidak berhenti otomatis. Status menunjukkan Running.