Migrasikan data dari database MySQL yang dikelola sendiri ke klaster PolarDB for MySQL menggunakan Data Transmission Service (DTS). DTS mendukung migrasi skema, migrasi data penuh, dan migrasi data inkremental sehingga Anda dapat menyelesaikan migrasi dengan downtime minimal atau nol.
Cara kerja
Ketiga fase migrasi berjalan secara berurutan:
Schema migration — DTS menyalin skema objek yang dipilih (tabel, view, trigger, prosedur tersimpan, dan fungsi tersimpan) dari database sumber ke klaster PolarDB for MySQL.
Full data migration — DTS menyalin seluruh data yang ada dari database sumber ke klaster.
Incremental data migration — Setelah migrasi data penuh selesai, DTS terus mereplikasi perubahan yang sedang berlangsung dari database sumber. Hal ini menjaga sinkronisasi klaster sehingga Anda dapat melakukan alih bencana tanpa menghentikan aplikasi Anda.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Database MySQL yang dikelola sendiri yang menjalankan versi 5.1, 5.5, 5.6, 5.7, atau 8.0. Jika database di-host di platform cloud pihak ketiga, database tersebut harus dapat diakses melalui Internet.
Instans ApsaraDB RDS for MySQL tujuan dengan penyimpanan tersedia yang lebih besar daripada ukuran total data sumber. Lihat Buat instans ApsaraDB RDS for MySQL.
Klaster PolarDB for MySQL dengan penyimpanan tersedia yang lebih besar daripada ukuran total data sumber. Lihat Beli klaster Edisi Perusahaan atau Beli klaster subscription.
Akun database untuk database MySQL sumber dan akun untuk klaster PolarDB for MySQL tujuan dengan izin yang tercantum di Izin yang diperlukan.
Binary logging dikonfigurasi pada database sumber jika Anda berencana menggunakan migrasi data inkremental. Lihat Persyaratan binary logging.
Izin yang diperlukan
Tabel berikut mencantumkan izin minimum yang diperlukan untuk setiap jenis migrasi.
| Database | Schema migration | Full data migration | Incremental data migration |
|---|---|---|---|
| Database MySQL yang dikelola sendiri | SELECT | SELECT | SELECT pada objek yang akan dimigrasikan; REPLICATION CLIENT; REPLICATION SLAVE; SHOW VIEW; CREATE (untuk database dan tabel, memungkinkan DTS membuat database dts untuk menyimpan data heartbeat) |
| Klaster PolarDB for MySQL | Baca dan tulis | Baca dan tulis | Baca dan tulis |
Untuk petunjuk membuat akun dan memberikan izin:
Database MySQL yang dikelola sendiri: Buat akun untuk database MySQL yang dikelola sendiri dan konfigurasi binary logging
Klaster PolarDB for MySQL: Buat dan kelola akun database
Persyaratan binary logging
Migrasi data inkremental membaca dari log biner database sumber. Sebelum memulai tugas migrasi, verifikasi pengaturan berikut pada database sumber:
| Parameter | Nilai yang diperlukan | Catatan |
|---|---|---|
| Binary logging | Diaktifkan | DTS membaca perubahan inkremental dari log biner. Jika dinonaktifkan, Pemeriksaan Awal gagal dan tugas tidak dapat dimulai. |
binlog_format | row | Diperlukan untuk replikasi tingkat baris. Format lain dapat menyebabkan ketidakkonsistenan data. |
binlog_row_image | full | Memastikan gambar baris lengkap ditangkap. |
| Retensi log biner | Minimal 7 hari | Jika log di-purge sebelum DTS membacanya, tugas gagal. Dalam kasus luar biasa, kehilangan data dapat terjadi. |
log_slave_updates | ON (hanya untuk klaster dual-primary) | Diperlukan ketika sumber adalah database MySQL yang dikelola sendiri dalam klaster dual-primary, sehingga DTS dapat memperoleh semua log biner. |
DTS menjalankan CREATE DATABASE IF NOT EXISTS \test\`` pada database sumber secara berkala untuk memajukan posisi file log biner.
Penagihan
| Jenis migrasi | Biaya instans | Biaya lalu lintas Internet |
|---|---|---|
| Migrasi skema dan migrasi data penuh | Gratis | Dikenakan hanya ketika data dimigrasikan dari Alibaba Cloud melalui Internet. Lihat Ikhtisar penagihan. |
| Migrasi data inkremental | Dikenakan biaya. Lihat Ikhtisar penagihan. | — |
Operasi SQL yang didukung untuk migrasi inkremental
| Jenis operasi | Pernyataan SQL |
|---|---|
| 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 tabel sebagai objek migrasi dan mengganti namanya selama migrasi, data untuk tabel tersebut tidak dimigrasikan ke tujuan. Untuk menghindari hal ini, pilih seluruh database sebagai objek migrasi dan pastikan database tempat tabel tersebut berada — baik sebelum maupun sesudah penggantian nama — termasuk dalam objek migrasi.
Konfigurasi dan jalankan tugas migrasi
Langkah 1: Buka halaman Data Migration
Gunakan salah satu metode berikut:
Konsol DTS
Login ke Konsol DTS.
Di panel navigasi kiri, klik Data Migration.
Di pojok kiri atas, pilih wilayah tempat instans migrasi akan berada.
Konsol DMS
Langkah-langkahnya dapat berbeda tergantung mode dan tata letak Konsol Data Management Service (DMS). Lihat Simple mode dan Sesuaikan tata letak dan gaya Konsol DMS.
Login ke Konsol DMS.
Di bilah navigasi atas, arahkan pointer ke Data Development > DTS (DTS) > Data Migration.
Dari daftar drop-down di sebelah kanan Data Migration Tasks, pilih wilayah tempat instans migrasi akan berada.
Langkah 2: Buat tugas migrasi
Klik Create Task.
Jika tombol New Configuration Page muncul di pojok kanan atas, klik untuk beralih ke halaman konfigurasi baru.
CatatanJika tombol Back to Previous Version ditampilkan, berarti Anda sudah berada di halaman konfigurasi baru. Lewati langkah ini.
Langkah 3: Konfigurasi database sumber dan tujuan
Setelah mengonfigurasi database sumber dan tujuan, baca Limits yang ditampilkan di bagian atas halaman. Melewatkan langkah ini dapat menyebabkan tugas gagal atau menghasilkan ketidakkonsistenan data.
Konfigurasikan parameter seperti yang dijelaskan dalam tabel berikut.
Database sumber
| Parameter | Deskripsi |
|---|---|
| Select Existing Connection | Pilih koneksi yang sudah ada untuk mengisi otomatis parameter database, atau biarkan kosong untuk memasukkan detail koneksi secara manual. Untuk mendaftarkan database, lihat Kelola koneksi database. |
| Database Type | Pilih MySQL. |
| Access Method | Pilih Public IP Address untuk database sumber yang dapat diakses melalui Internet. Untuk metode akses lainnya, lihat Ikhtisar persiapan. |
| Instance Region | Pilih wilayah yang paling dekat dengan lokasi fisik database sumber. |
| Hostname or IP address | Alamat IP publik atau hostname database sumber. |
| Port | Port layanan database MySQL sumber. Default: 3306. |
| Database Account | Akun dengan izin yang tercantum di Izin yang diperlukan. |
| Database Password | Kata sandi untuk akun database. |
| Encryption | Pilih Non-encrypted atau SSL-encrypted berdasarkan konfigurasi database sumber Anda. Jika Anda memilih SSL-encrypted, unggah CA Certificate dan atur CA Key. |
Database tujuan
| Parameter | Deskripsi |
|---|---|
| Select Existing Connection | Pilih koneksi yang sudah ada untuk mengisi otomatis parameter database, atau biarkan kosong untuk memasukkan detail koneksi secara manual. |
| Database Type | Pilih PolarDB for MySQL. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah tempat klaster PolarDB for MySQL tujuan berada. |
| PolarDB Cluster ID | ID klaster PolarDB for MySQL tujuan. |
| Database Account | Akun dengan izin yang tercantum di Izin yang diperlukan. |
| Database Password | Kata sandi untuk akun database. |
| Encryption | Konfigurasikan enkripsi SSL sesuai kebutuhan Anda. Lihat Konfigurasi enkripsi SSL. |
Langkah 4: Uji konektivitas
Di bagian bawah halaman, klik Test Connectivity and Proceed, lalu klik Test Connectivity di kotak dialog CIDR Blocks of DTS Servers.
Pastikan blok CIDR server DTS telah ditambahkan ke pengaturan keamanan database sumber dan tujuan Anda. Lihat Tambahkan blok CIDR server DTS.
Langkah 5: Pilih objek dan jenis migrasi
Di halaman Configure Objects, konfigurasikan parameter berikut.
| Parameter | Deskripsi |
|---|---|
| Migration Types | Pilih Schema Migration dan Full Data Migration untuk migrasi satu kali. Untuk migrasi dengan downtime minimal, pilih juga Incremental Data Migration. Jika Anda tidak memilih Incremental Data Migration, hentikan semua operasi tulis ke database sumber selama migrasi untuk menjaga konsistensi data. |
| Method to Migrate Triggers in Source Database | Pilih cara migrasi trigger. Parameter ini tersedia hanya ketika Schema Migration dipilih. Lihat Sinkronisasi atau migrasi trigger dari database sumber. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors (default): Pemeriksaan Awal gagal jika terdapat nama tabel identik di sumber dan tujuan. Gunakan pemetaan nama objek untuk mengganti nama tabel yang bentrok sebelum memulai. Ignore Errors and Proceed: melewati pemeriksaan. Selama migrasi data penuh, catatan yang ada di tujuan dipertahankan; selama migrasi data inkremental, catatan tersebut ditimpa. Gunakan dengan hati-hati. |
| Whether to Migrate Events | Tentukan apakah akan memigrasikan event. Jika ya, lakukan langkah tambahan untuk menghindari ketidakkonsistenan data. Lihat Sinkronisasi atau migrasi event. |
| Capitalization of object names in destination instance | Atur kebijakan kapitalisasi untuk nama database, tabel, dan kolom di tujuan. Default: DTS default policy. Lihat Tentukan kapitalisasi nama objek di instans tujuan. |
| Source Objects | Pilih objek yang akan dimigrasikan dan klik ikon |
| Selected Objects | Untuk mengganti nama satu objek, klik kanan objek tersebut. Untuk mengganti nama beberapa objek sekaligus, klik Batch Edit di pojok kanan atas. Lihat Pemetaan nama objek. Untuk memfilter data berdasarkan kondisi, klik kanan tabel dan tentukan klausa WHERE. Lihat Tentukan kondisi filter. |
Mengganti nama objek migrasi dengan pemetaan nama objek dapat menyebabkan objek lain yang bergantung padanya gagal dimigrasikan.
Langkah 6: Konfigurasi pengaturan lanjutan
Klik Next: Advanced Settings dan konfigurasikan parameter berikut.
| Parameter | Deskripsi |
|---|---|
| Dedicated Cluster for Task Scheduling | Secara default, DTS menjadwalkan tugas ke klaster bersama. Beli klaster khusus untuk meningkatkan stabilitas tugas. Lihat Apa itu klaster khusus DTS. |
| Select the engine type of the destination database | InnoDB (mesin penyimpanan default) atau X-Engine (mesin penyimpanan untuk pemrosesan transaksi online (OLTP)). |
| Copy the temporary table of the Online DDL tool that is generated in the source table to the destination database. | Mengontrol cara DTS menangani tabel sementara dari operasi DDL Online yang dilakukan dengan DMS atau gh-ost. Yes: memigrasikan data tabel sementara (dapat meningkatkan latensi). No, Adapt to DMS Online DDL: melewati data tabel sementara; hanya memigrasikan pernyataan DDL asli dari DMS (tabel tujuan mungkin terkunci). No, Adapt to gh-ost: melewati data tabel sementara; hanya memigrasikan pernyataan DDL asli dari gh-ost (tabel tujuan mungkin terkunci). Penting Jangan gunakan pt-online-schema-change untuk operasi DDL Online pada database sumber — tugas DTS akan gagal. |
| Whether to Migrate Accounts | Tentukan apakah akan memigrasikan informasi akun database sumber. Jika Yes, pilih akun yang akan dimigrasikan dan verifikasi izin akun DTS. |
| Retry Time for Failed Connections | Durasi DTS mencoba ulang setelah kegagalan koneksi. Rentang: 10–1.440 menit. Default: 720 menit. Atur minimal 30 menit. Jika DTS terhubung kembali dalam periode ini, tugas dilanjutkan secara otomatis. Catatan: Nilai yang berbeda yang ditetapkan di beberapa tugas yang menggunakan database sumber atau tujuan yang sama — nilai terbaru yang berlaku. |
| Retry Time for Other Issues | Durasi DTS mencoba ulang setelah kegagalan operasi DDL atau DML. Rentang: 1–1.440 menit. Default: 10 menit. Atur minimal 10 menit. Harus kurang dari Retry Time for Failed Connections. |
| Enable Throttling for Full Data Migration | Batasi laju baca/tulis selama migrasi data penuh untuk mengurangi beban pada server database. Konfigurasikan QPS to the source database, RPS of Full Data Migration, dan Data migration speed for full migration (MB/s). Tersedia hanya ketika Full Data Migration dipilih. |
| Enable Throttling for Incremental Data Migration | Batasi laju replikasi selama migrasi data inkremental. Konfigurasikan RPS of Incremental Data Migration dan Data migration speed for incremental migration (MB/s). Tersedia hanya ketika Incremental Data Migration dipilih. |
| Whether to delete SQL operations on heartbeat tables of forward and reverse tasks | Yes: DTS tidak menulis operasi SQL heartbeat ke database sumber. Latensi migrasi mungkin ditampilkan. No: DTS menulis operasi SQL heartbeat ke database sumber. Backup fisik dan kloning database sumber mungkin terpengaruh. |
| Configure ETL | Aktifkan ekstrak, transformasi, dan muat (ETL) untuk memproses data selama migrasi. Lihat Apa itu ETL? dan Konfigurasi ETL dalam tugas migrasi data atau sinkronisasi data. |
| Monitoring and Alerting | Yes: konfigurasikan ambang batas peringatan dan pengaturan notifikasi agar DTS memberi tahu kontak peringatan ketika tugas gagal atau latensi migrasi melebihi ambang batas. Lihat Konfigurasi pemantauan dan peringatan. No: tanpa peringatan. |
| Environment Tag | Tag opsional untuk mengidentifikasi instans DTS. |
Langkah 7: Konfigurasi verifikasi data (opsional)
Klik Next Step: Data Verification untuk menyiapkan tugas verifikasi data yang memeriksa konsistensi data antara sumber dan tujuan. Untuk informasi selengkapnya, lihat Mengonfigurasi tugas verifikasi data.
Langkah 8: Jalankan Pemeriksaan Awal dan beli instans
Klik Next: Save Task Settings and Precheck.
CatatanUntuk melihat parameter API untuk mengonfigurasi tugas DTS secara terprogram, arahkan pointer ke Next: Save Task Settings and Precheck dan klik Preview OpenAPI parameters sebelum melanjutkan.
Tunggu hingga Pemeriksaan Awal selesai. Jika ada item yang gagal, klik View Details untuk melihat penyebabnya, perbaiki masalah, dan jalankan Pemeriksaan Awal lagi. Jika item Pemeriksaan Awal memicu peringatan yang dapat diabaikan: klik Confirm Alert Details, lalu Ignore, lalu OK, dan jalankan Pemeriksaan Awal lagi. Mengabaikan peringatan dapat menyebabkan ketidakkonsistenan data.
Saat Success Rate mencapai 100%, klik Next: Purchase Instance.
Di halaman Purchase Instance, konfigurasikan parameter berikut.
Parameter Deskripsi Resource Group Kelompok sumber daya untuk instans migrasi. Default: default resource group. Lihat Apa itu Resource Management? Instance Class Kelas instans menentukan kecepatan migrasi. Pilih sesuai kebutuhan Anda. Lihat Kelas instans untuk instans migrasi data. Baca dan terima Data Transmission Service (Pay-as-you-go) Service Terms, lalu klik Buy and Start > OK.
Tugas migrasi dimulai. Pantau progresnya di halaman Data Migration.
Setelah migrasi
Setelah tugas migrasi selesai, lakukan langkah-langkah berikut sebelum mengalihkan aplikasi Anda ke klaster PolarDB for MySQL.
Tunggu hingga latensi migrasi mencapai 0 — Jika Anda memilih migrasi data inkremental, tunggu hingga latensi migrasi turun menjadi 0 detik dan tetap stabil selama periode tertentu. Hal ini memastikan klaster sepenuhnya tersinkronisasi dengan database sumber.
Hentikan atau lepas tugas DTS — DTS secara otomatis mencoba ulang tugas yang gagal hingga tujuh hari. Hentikan atau lepaskan tugas sebelum mengalihkan beban kerja ke tujuan. Jika Anda tidak menghentikan tugas, migrasi yang dilanjutkan dapat menimpa data di database tujuan dengan data dari sumber. Alternatifnya, jalankan
REVOKEuntuk mencabut izin tulis dari akun DTS yang mengakses database tujuan.Rekonstruksi izin — Selama migrasi skema, DTS mengubah atribut SECURITY dari DEFINER menjadi INVOKER untuk view, prosedur tersimpan, dan fungsi, tetapi tidak memigrasikan informasi akun pengguna. Berikan izin baca dan tulis yang diperlukan kepada INVOKER untuk setiap view, prosedur tersimpan, atau fungsi tersimpan di klaster tujuan.
Verifikasi aplikasi Anda — Jalankan uji kesesuaian terhadap klaster PolarDB for MySQL untuk memastikan integritas data dan perilaku aplikasi sebelum menyelesaikan alih bencana.
Alihkan aplikasi Anda — Perbarui string koneksi aplikasi Anda agar mengarah ke klaster PolarDB for MySQL.
Batasan
Batasan database sumber
Server sumber harus memiliki bandwidth keluar yang cukup. Bandwidth yang tidak mencukupi mengurangi kecepatan migrasi.
Tabel yang akan dimigrasikan harus memiliki kunci primer atau kendala UNIK dengan semua bidang unik. Tanpa ini, database tujuan mungkin berisi catatan duplikat.
Jika Anda memilih tabel sebagai objek migrasi dan berencana mengganti nama tabel atau kolom di tujuan, satu tugas dapat memigrasikan maksimal 1.000 tabel. Tugas yang melebihi batas ini akan mengembalikan error permintaan. Pisahkan migrasi besar menjadi beberapa tugas atau migrasikan seluruh database sebagai gantinya.
Selama migrasi skema dan migrasi data penuh, jangan menjalankan pernyataan DDL yang mengubah skema database atau tabel. Tugas migrasi akan gagal.
Jika Anda hanya menjalankan migrasi data penuh, jangan menulis ke database sumber selama migrasi. Hal ini memastikan konsistensi data. Untuk hasil terbaik, pilih migrasi skema, migrasi data penuh, dan migrasi data inkremental secara bersamaan.
Perilaku kunci asing
Selama migrasi skema, DTS memigrasikan kunci asing dari sumber ke tujuan.
Selama migrasi data penuh dan migrasi data inkremental, DTS sementara menonaktifkan pemeriksaan kendala kunci asing dan operasi kaskade pada tingkat session. Operasi pembaruan dan penghapusan kaskade yang dilakukan pada database sumber selama periode ini dapat menyebabkan ketidakkonsistenan data.
Batasan umum
Versi MySQL sumber dan tujuan sebaiknya sama untuk memastikan kompatibilitas.
Migrasikan data selama jam sepi. Migrasi data penuh menggunakan sumber daya baca dan tulis di kedua database dan meningkatkan beban pada server database.
Operasi INSERT konkuren selama migrasi data penuh menyebabkan fragmentasi tabel di tujuan. Setelah migrasi data penuh, ruang tabel tujuan lebih besar daripada sumber.
Untuk kolom bertipe FLOAT atau DOUBLE, DTS menggunakan
ROUND(COLUMN, PRECISION)untuk mengambil nilai. Jika presisi tidak ditentukan, DTS menggunakan 38 digit untuk FLOAT dan 308 digit untuk DOUBLE. Verifikasi bahwa hal ini memenuhi kebutuhan Anda sebelum memulai.Anda tidak dapat mengonversi data dari tipe DATETIME ke tipe VARCHAR.
Jika pernyataan DDL gagal di database tujuan, tugas DTS tetap berjalan. Lihat pernyataan DDL yang gagal di log tugas.
Jika database sumber adalah instans ApsaraDB RDS for MySQL dengan fitur EncDB diaktifkan, migrasi data penuh tidak didukung.
Kasus khusus
Alih bencana primary/secondary — Jika terjadi alih bencana primary/secondary pada database sumber saat tugas migrasi sedang berjalan, tugas gagal.
Aktivitas DML rendah — Latensi migrasi mungkin tidak akurat jika tidak ada operasi DML yang dilakukan pada sumber dalam periode yang lama. Lakukan operasi DML untuk memperbarui tampilan latensi. Jika Anda memilih seluruh database sebagai objek migrasi, buat tabel heartbeat yang diperbarui setiap detik.
Instans read-only ApsaraDB RDS for MySQL — Instans read-only ApsaraDB RDS for MySQL V5.6 yang tidak mencatat log transaksi tidak dapat digunakan sebagai database sumber untuk migrasi data inkremental.
PolarDB for MySQL sebagai tujuan — DTS secara otomatis membuat database di klaster tujuan jika nama database sumber sesuai dengan konvensi penamaan PolarDB. Jika nama tidak sesuai, buat database secara manual sebelum mengonfigurasi tugas migrasi. Lihat Kelola database. Throttling tidak didukung untuk migrasi data penuh ke klaster PolarDB for MySQL.