Gunakan Data Transmission Service (DTS) untuk memigrasikan data dari ApsaraDB RDS for MySQL ke AnalyticDB for PostgreSQL. DTS mendukung migrasi skema, migrasi data penuh, dan migrasi data inkremental sehingga Anda dapat tetap menjalankan database sumber selama proses migrasi.
Database sumber yang didukung
DTS mendukung migrasi data dari sumber MySQL berikut ke instans AnalyticDB for PostgreSQL:
-
Instans ApsaraDB RDS for MySQL
-
Database MySQL yang dikelola sendiri:
-
Database dengan Alamat IP publik
-
Database yang di-hosting pada instans Elastic Compute Service (ECS)
-
Database yang terhubung melalui Database Gateway
-
Database yang terhubung melalui Cloud Enterprise Network (CEN)
-
Database yang terhubung melalui Express Connect, VPN Gateway, atau Smart Access Gateway
-
Topik ini menggunakan ApsaraDB RDS for MySQL sebagai contoh sumber. Prosedur yang sama berlaku untuk semua jenis sumber MySQL yang didukung yang tercantum di atas.
Jenis migrasi
DTS mendukung jenis migrasi berikut untuk skenario ini.
| Jenis migrasi | Fungsinya |
|---|---|
| Migrasi skema | Memigrasikan skema tabel dari sumber ke tujuan. Karena sumber dan tujuan merupakan database heterogen, skema mungkin berbeda setelah migrasi. Tinjau pemetaan tipe data antar database heterogen sebelum memulai. |
| Migrasi data penuh | Memigrasikan semua data yang ada dari sumber ke tujuan. |
| Migrasi data inkremental | Setelah migrasi penuh selesai, secara terus-menerus mereplikasi perubahan dari sumber sehingga aplikasi Anda dapat tetap berjalan selama migrasi. |
Pilih pendekatan migrasi Anda:
-
Cutover satu kali dengan downtime: Pilih Schema migration dan Full data migration.
-
Migrasi tanpa downtime (direkomendasikan): Pilih Schema Migration, Full data migration only, dan Incremental data migration.
Operasi SQL yang didukung untuk migrasi inkremental
| Jenis operasi | Pernyataan SQL |
|---|---|
| DML | INSERT, UPDATE, DELETE |
| DDL | CREATE TABLE, ALTER TABLE, TRUNCATE TABLE, DROP TABLE |
Saat menulis ke AnalyticDB for PostgreSQL, DTS secara otomatis mengonversi pernyataan UPDATE menjadi pernyataan REPLACE INTO. Operasi UPDATE pada kunci primer dikonversi menjadi pernyataan DELETE dan INSERT.
Jika Anda mengubah tipe data suatu bidang di tabel sumber selama migrasi, DTS akan mengembalikan error dan menghentikan tugas. Untuk memulihkan: 1. Identifikasi tabel dengan tipe data yang diubah (misalnya, tabel customer). 2. Buat tabel baru dengan skema yang diperbarui di tujuan (misalnya, customer_new). 3. Salin data dari customer ke customer_new menggunakan INSERT INTO SELECT. 4. Ubah nama atau hapus tabel asli customer, lalu ubah nama customer_new menjadi customer. 5. Mulai ulang tugas migrasi di konsol DTS.
Penagihan
| Jenis migrasi | Biaya konfigurasi instans | Biaya Lalu lintas internet |
|---|---|---|
| Migrasi skema dan migrasi data penuh | Gratis | Dikenai biaya jika Access Method diatur ke Public IP Address. Untuk detailnya, lihat Ikhtisar penagihan. |
| Migrasi data inkremental | Dikenai biaya. Untuk detailnya, lihat Ikhtisar penagihan. | — |
Batasan
Tinjau batasan-batasan berikut sebelum memulai tugas migrasi.
Persyaratan database sumber
Binary logging (diperlukan untuk migrasi inkremental)
Konfigurasikan parameter log biner berikut pada database sumber sebelum menjalankan tugas migrasi inkremental.
| Parameter | Nilai yang diperlukan | Catatan |
|---|---|---|
| Binary logging | Diaktifkan | Lihat Modifikasi parameter instans untuk mengaktifkan binary logging pada RDS MySQL. |
binlog_row_image |
full |
Diperlukan untuk semua sumber MySQL. Pemeriksaan Awal gagal jika nilai ini tidak diatur ke full. |
binlog_format |
row |
Diperlukan hanya untuk MySQL yang dikelola sendiri. |
log_slave_updates |
ON |
Diperlukan hanya untuk MySQL yang dikelola sendiri dalam kluster dual-primary. |
| Retensi log biner | >24 jam (hanya inkremental); ≥7 hari (penuh + inkremental) | Setelah migrasi penuh selesai, Anda dapat mengurangi retensi menjadi lebih dari 24 jam. Retensi yang tidak mencukupi dapat menyebabkan tugas gagal atau kehilangan data. |
Untuk pengaturan MySQL yang dikelola sendiri, lihat Buat akun dan konfigurasikan binary logging.
Untuk mengelola file log biner pada RDS MySQL, lihat Kelola file log biner.
Kendala tabel
-
Tabel harus memiliki kendala PRIMARY KEY atau UNIQUE, dengan semua bidang unik. Jika tidak, catatan duplikat mungkin muncul di tujuan.
-
Saat memigrasikan tabel tertentu (bukan seluruh database), satu tugas mendukung hingga 1.000 tabel. Untuk lebih dari 1.000 tabel, konfigurasikan beberapa tugas atau migrasikan seluruh database.
Pembatasan operasi selama migrasi
-
Jangan mengeksekusi pernyataan DDL yang memodifikasi kunci primer atau menambahkan komentar (misalnya,
ALTER TABLE table_name COMMENT='Table comment';). -
Jangan mengeksekusi pernyataan DDL yang mengubah skema database atau tabel selama migrasi skema dan migrasi data penuh.
-
Jika hanya menjalankan migrasi data penuh, jangan menulis data ke database sumber. Untuk menghindari pembatasan ini, jalankan migrasi skema, migrasi data penuh, dan migrasi data inkremental bersamaan.
Batasan lain untuk database sumber
-
MySQL 8.0.23 atau lebih baru — kolom tak terlihat: Jika tabel sumber berisi kolom tak terlihat, kolom tersebut tidak dapat dimigrasikan dan terjadi kehilangan data. Untuk membuat kolom terlihat, jalankan:
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;. Tabel tanpa kunci primer secara otomatis menghasilkan kunci primer tak terlihat — buat juga kunci tersebut terlihat. Lihat Invisible Columns dan Generated Invisible Primary Keys. -
Nilai DATETIME `0000-00-00 00:00:00`: DTS mengonversi nilai ini menjadi
nulldi tujuan. Untuk menghindarinya, ubah sementara nilainya menjadi0001-01-01 00:00:00atau biarkan kolom tujuan kosong sebelum migrasi. -
Operasi perubahan log biner: Data yang dihasilkan oleh operasi perubahan log biner — seperti data yang dipulihkan dari backup fisik atau operasi kaskade — tidak dimigrasikan. Jika data ini tidak ada di tujuan, jalankan migrasi penuh lagi saat bisnis Anda memungkinkan.
-
Fitur EncDB: Untuk instans ApsaraDB RDS for MySQL dengan fitur EncDB diaktifkan, migrasi data penuh tidak didukung.
-
Transparent Data Encryption (TDE): Untuk instans ApsaraDB RDS for MySQL dengan TDE diaktifkan, migrasi skema, migrasi data penuh, dan migrasi data inkremental semuanya didukung.
Persyaratan database tujuan
-
Hanya tabel yang dapat dipilih sebagai objek migrasi. View, trigger, dan prosedur tersimpan tidak dimigrasikan.
-
Tipe data berikut tidak dapat dimigrasikan: VARBIT, GEOMETRY, ARRAY, UUID, TSQUERY, TSVECTOR, TXID_SNAPSHOT, dan POINT.
-
Indeks awalan tidak dapat dimigrasikan. Jika database sumber berisi indeks awalan, tugas mungkin gagal.
-
Jika tabel sumber memiliki kunci primer, kolom kunci primer di tujuan harus sesuai dengan sumber. Jika tabel sumber tidak memiliki kunci primer, kolom kunci primer dan kunci distribusi di tujuan harus sama.
-
Kunci unik (yang berisi kolom kunci primer) di tujuan harus mencakup semua kolom dari kunci distribusinya.
-
Tabel tujuan tidak boleh merupakan tabel append-optimized (AO).
-
Jika pemetaan kolom digunakan atau skema sumber dan tujuan berbeda, kolom yang tidak ada di tujuan tidak akan dimigrasikan dan terjadi kehilangan data.
Pertimbangan kinerja dan operasional
-
Evaluasi dampak migrasi terhadap kinerja database sumber dan tujuan sebelum memulai. Jalankan tugas migrasi selama jam sepi bila memungkinkan.
-
Selama migrasi data penuh awal, operasi INSERT konkuren menyebabkan fragmentasi pada tabel tujuan. Setelah migrasi penuh selesai, ruang tabel tujuan mungkin lebih besar daripada sumber.
-
Jika memigrasikan tabel tertentu (bukan seluruh database), jangan gunakan alat seperti pt-online-schema-change untuk operasi DDL Online pada objek yang sedang dimigrasikan. Gunakan Data Management (DMS) sebagai gantinya. Lihat Lakukan operasi DDL tanpa lock.
-
Jangan menulis data dari sumber lain ke tujuan selama migrasi. Menulis dari beberapa sumber secara bersamaan dapat menyebabkan kehilangan data.
Kasus khusus untuk MySQL yang dikelola sendiri
-
Alih bencana primary/secondary pada database sumber saat tugas migrasi sedang berjalan menyebabkan tugas gagal.
-
Latensi migrasi dihitung berdasarkan Waktu data migrasi terbaru dan waktu sumber saat ini. Jika tidak ada operasi DML yang dijalankan di sumber dalam periode panjang, pembacaan latensi mungkin tidak akurat. Untuk memperbarui latensi, eksekusi operasi DML di sumber. Jika seluruh database dipilih sebagai objek migrasi, buat tabel heartbeat yang menerima pembaruan data setiap detik.
-
DTS secara berkala mengeksekusi
CREATE DATABASE IF NOT EXISTS \test\`` pada database sumber untuk memajukan Posisi file log biner.
Kasus khusus untuk ApsaraDB RDS for MySQL
-
Dalam migrasi data inkremental, instans ApsaraDB RDS for MySQL yang tidak mencatat log transaksi — seperti instans RDS MySQL V5.6 read-only — tidak dapat digunakan sebagai sumber.
-
DTS secara berkala mengeksekusi
CREATE DATABASE IF NOT EXISTS \test\`` pada database sumber untuk memajukan Posisi file log biner. -
Selama migrasi skema, DTS memigrasikan kunci asing dari database sumber ke database tujuan. Selama migrasi data penuh dan migrasi data inkremental, DTS sementara menonaktifkan pemeriksaan kendala kunci asing dan operasi kaskade pada tingkat sesi. Operasi cascade update dan delete pada sumber selama migrasi dapat menyebabkan ketidakkonsistenan data.
Izin akun yang diperlukan
Tabel berikut mencantumkan izin minimum yang diperlukan untuk setiap jenis migrasi.
| Database | Migrasi skema | Migrasi data penuh | Migrasi data inkremental |
|---|---|---|---|
| ApsaraDB RDS for MySQL | SELECT | SELECT | SELECT, REPLICATION SLAVE, REPLICATION CLIENT |
| AnalyticDB for PostgreSQL | Baca dan tulis | Baca dan tulis | Baca dan tulis |
REPLICATION SLAVE dan REPLICATION CLIENT hanya diperlukan untuk migrasi data inkremental. Tugas migrasi hanya data penuh tidak memerlukan hak istimewa ini. DTS memberikan izin ini ke akun database secara otomatis.
Untuk membuat dan memberi otorisasi akun database, lihat:
-
ApsaraDB RDS for MySQL: Buat akun dan Modifikasi izin akun
-
AnalyticDB for PostgreSQL: Buat dan kelola akun database
Buat tugas migrasi
Sebelum memulai, pastikan bahwa:
-
Instans AnalyticDB for PostgreSQL telah dibuat. Untuk detailnya, lihat Buat instans
-
Ruang penyimpanan yang tersedia pada instans tujuan lebih besar daripada ukuran total data di instans sumber
Ikhtisar langkah-langkah:
-
Buka halaman Data Migration di konsol DTS atau DMS.
-
Buat tugas dan konfigurasikan database sumber dan tujuan.
-
Pilih jenis dan objek migrasi.
-
Konfigurasikan pengaturan lanjutan.
-
Jalankan Pemeriksaan Awal dan beli instans migrasi.
Langkah 1: Buka halaman Data Migration
Konsol DTS
-
Login ke Konsol DTS.Konsol DTS
-
Di panel navigasi kiri, klik Data Migration.
-
Di pojok kiri atas, pilih wilayah tempat instans migrasi Anda akan berada.
Konsol DMS
Langkah-langkah aktual mungkin berbeda tergantung pada mode dan tata letak konsol DMS. Lihat Mode simple dan Sesuaikan tata letak dan gaya konsol DMS untuk detailnya.
-
Login ke Konsol DMS.Konsol DMS
-
Di bilah navigasi atas, buka Data + AI > DTS (DTS) > Data Migration.
-
Dari daftar drop-down di samping Data Migration Tasks, pilih wilayah.
Langkah 2: Konfigurasikan database sumber dan tujuan
Klik Create Task dan konfigurasikan parameter berikut.
Pengaturan tugas:
| Parameter | Deskripsi |
|---|---|
| Task Name | DTS menghasilkan nama secara otomatis. Tentukan nama deskriptif untuk mengidentifikasi tugas. Nama tidak perlu unik. |
Source Database
| Parameter | Deskripsi |
|---|---|
| Database Type | Pilih MySQL. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Pilih wilayah tempat instans ApsaraDB RDS for MySQL sumber berada. |
| Cross-account | Pilih No untuk migrasi akun yang sama. |
| RDS Instance ID | Pilih instans ApsaraDB RDS for MySQL sumber. |
| Database Account | Masukkan akun database. Lihat Izin akun yang diperlukan. |
| Database Password | Masukkan kata sandi akun. |
| Connection Method | Pilih Non-encrypted atau SSL-encrypted sesuai kebutuhan Anda. Untuk menggunakan enkripsi SSL, aktifkan SSL pada instans RDS terlebih dahulu. Lihat Gunakan sertifikat cloud untuk mengaktifkan enkripsi SSL. |
Destination Database
| Parameter | Deskripsi |
|---|---|
| Database Type | Pilih AnalyticDB for PostgreSQL. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Pilih wilayah tempat instans AnalyticDB for PostgreSQL tujuan berada. |
| Instance ID | Pilih instans AnalyticDB for PostgreSQL tujuan. |
| Database Name | Masukkan nama database tujuan di instans AnalyticDB for PostgreSQL. |
| Database Account | Masukkan akun awal instans, atau akun dengan izin RDS_SUPERUSER. Lihat Kelola pengguna dan izin. |
| Database Password | Masukkan kata sandi akun. |
Klik Test Connectivity and Proceed.
Blok CIDR server DTS harus ditambahkan ke pengaturan keamanan database sumber dan tujuan. DTS menambahkannya secara otomatis untuk instans Alibaba Cloud. Untuk database yang dikelola sendiri, klik Test Connectivity di kotak dialog CIDR Blocks of DTS Servers. Lihat Tambahkan blok CIDR server DTS.
Langkah 3: Pilih jenis dan objek migrasi
Di halaman Configure Objects, konfigurasikan parameter berikut.
| Parameter | Deskripsi |
|---|---|
| Migration Types | Pilih jenis migrasi untuk skenario Anda. Lihat Pilih pendekatan migrasi Anda untuk panduan. Catatan
Jika Anda melewatkan Schema Migration, buat database dan tabel tujuan secara manual, lalu aktifkan pemetaan nama objek di Selected Objects sebelum melanjutkan. Jika Anda melewatkan Incremental Data Migration, jangan menulis data ke sumber selama proses migrasi. |
| Select DDL and DML to Sync at the Instance Level | Pilih operasi SQL yang akan disertakan dalam migrasi inkremental. Untuk menyesuaikan operasi per tabel, klik kanan objek di Selected Objects dan pilih operasinya. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors (default): Pemeriksaan Awal gagal jika tujuan berisi tabel dengan nama yang sama seperti tabel sumber. Gunakan pemetaan nama objek untuk mengganti nama tabel yang bentrok. Ignore Errors and Proceed: Melewatkan Pemeriksaan Awal untuk bentrok nama. Selama migrasi penuh, catatan yang bentrok di tujuan dipertahankan. Selama migrasi inkremental, catatan yang bentrok ditimpa. Gunakan dengan hati-hati — perbedaan skema antara sumber dan tujuan dapat menyebabkan migrasi sebagian atau kegagalan tugas. |
| Storage Engine Type | Mesin penyimpanan untuk tabel tujuan. Default: Beam. Tersedia hanya jika versi minor instans AnalyticDB for PostgreSQL tujuan adalah v7.0.6.6 atau lebih baru dan Schema Migration dipilih. |
| Source Objects | Pilih objek dari daftar dan klik ikon panah untuk menambahkannya ke Selected Objects. Anda dapat memilih kolom, tabel, atau skema. Memilih tabel atau kolom mengecualikan view, trigger, dan prosedur tersimpan. |
| Selected Objects | Klik kanan objek untuk mengganti namanya, menyesuaikan operasi SQL, atau menentukan kondisi filter WHERE. Klik Batch Edit untuk mengganti nama beberapa objek sekaligus. Lihat Pemetaan nama objek dan Tentukan kondisi filter. Catatan
Mengganti nama objek menggunakan pemetaan nama objek dapat menyebabkan objek dependen gagal dimigrasikan. |
Klik Next: Advanced Settings.
Langkah 4: Konfigurasikan pengaturan lanjutan
| Parameter | Deskripsi |
|---|---|
| Dedicated Cluster for Task Scheduling | Secara default, tugas berjalan di kluster bersama. Untuk stabilitas lebih tinggi, beli kluster khusus. Lihat Apa itu kluster khusus DTS. |
| Retry Time for Failed Connections | Rentang waktu selama DTS mencoba koneksi yang gagal. Rentang valid: 10–1.440 menit. Default: 720 menit. Atur minimal 30 menit. Jika DTS terhubung kembali dalam jendela ini, tugas dilanjutkan secara otomatis; jika tidak, tugas gagal. Catatan
Jika beberapa tugas berbagi database sumber atau tujuan yang sama, waktu coba ulang yang paling baru diatur akan berlaku. DTS mengenakan biaya untuk instans selama periode coba ulang. |
| Retry Time for Other Issues | Rentang waktu selama DTS mencoba ulang operasi DDL atau DML yang gagal. Rentang valid: 1–1.440 menit. Default: 10 menit. Atur minimal 10 menit. Nilai ini harus kurang dari Retry Time for Failed Connections. |
| Enable Throttling for Full Data Migration | Membatasi beban baca/tulis pada sumber dan tujuan selama migrasi penuh dengan mengonfigurasi QPS (queries per second) ke sumber, RPS (records per second) untuk migrasi penuh, dan kecepatan migrasi data (MB/s). Tersedia hanya jika Full data migration only dipilih. |
| Enable Throttling for Incremental Data Migration | Batasi beban selama migrasi inkremental dengan mengonfigurasi RPS dan kecepatan migrasi data (MB/detik). Opsi ini hanya tersedia saat Incremental Data Migration dipilih. |
| Enclose Object Names in Quotation Marks | Jika Yespengaturan pemberitahuan peringatan, DTS membungkus nama skema, tabel, dan kolom dalam tanda kutip saat: database sumber peka huruf besar/kecil dengan nama campuran; nama tabel dimulai dengan karakter non-huruf atau berisi karakter khusus yang tidak didukung; atau nama tersebut merupakan kata kunci yang dicadangkan di tujuan. |
| Whether to delete SQL operations on heartbeat tables of forward and reverse tasks | Yes: DTS tidak menulis operasi tabel heartbeat ke database sumber. Nilai latensi mungkin ditampilkan. No: DTS menulis operasi tabel heartbeat ke database sumber. Hal ini dapat memengaruhi backup fisik dan kloning database sumber. |
| Environment Tag | Memberi tag instans DTS untuk identifikasi. Opsional. |
| Configure ETL | Mengaktifkan fitur ekstrak, transformasi, muat (ETL). Pilih Yes untuk memasukkan pernyataan pemrosesan data. Lihat Apa itu ETL? dan Konfigurasikan ETL dalam tugas migrasi atau sinkronisasi data. |
| Monitoring and Alerting | Pilih Yes untuk menerima notifikasi saat tugas gagal atau latensi migrasi melebihi ambang batas. Konfigurasikan ambang batas peringatan dan pengaturan notifikasi. Lihat Konfigurasikan pemantauan dan peringatan. |
Klik Next Step: Data Verification untuk mengonfigurasi tugas verifikasi data. Untuk informasi selengkapnya, lihat Mengonfigurasi tugas verifikasi data.
(Opsional) Konfigurasikan kolom kunci primer dan kunci distribusi untuk tabel AnalyticDB for PostgreSQL tujuan. Lihat CREATE TABLE.
Opsi ini tersedia hanya jika Schema Migration dipilih.
Langkah 5: Jalankan Pemeriksaan Awal dan beli instans migrasi
-
Klik Next: Save Task Settings and Precheck.
Untuk melihat 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 item pemeriksaan gagal, klik View Details di samping item yang gagal, perbaiki masalahnya, lalu klik Precheck Again.
-
Jika item pemeriksaan menghasilkan peringatan yang ingin Anda abaikan, klik Confirm Alert Details, lalu Ignore, lalu OK, lalu Precheck Again. Mengabaikan peringatan dapat menyebabkan ketidakkonsistenan data.
-
-
Setelah Success Rate mencapai 100%, klik Next: Purchase Instance.
-
Di halaman Purchase Instance, konfigurasikan parameter instans.
Parameter Deskripsi Resource Group Kelompok sumber daya untuk instans migrasi. Default: default resource group. Lihat Apa itu Resource Management? Instance Class Pilih kelas instans berdasarkan kecepatan migrasi yang diperlukan. Lihat Kelas instans migrasi data. -
Baca dan terima Data Transmission Service (Pay-as-you-go) Service Terms, lalu klik Buy and Start. Di dialog konfirmasi, klik OK.
Pantau tugas migrasi
Setelah tugas dimulai, buka halaman Data Migration untuk memantau progresnya.
-
Full data migration only: Tugas berhenti secara otomatis saat migrasi selesai. Status berubah menjadi Completed.
-
Full + incremental data migration: Fase migrasi inkremental berjalan terus-menerus dan tidak berhenti secara otomatis. Status menunjukkan Running.
Jika tugas DTS gagal, dukungan teknis DTS akan berusaha memulihkannya dalam waktu 8 jam. Selama pemulihan, tugas mungkin dimulai ulang dan parameter tugas mungkin dimodifikasi. Parameter database tidak dimodifikasi.
Langkah selanjutnya
Setelah migrasi selesai dan Anda telah memverifikasi konsistensi data antara database sumber dan tujuan, perbarui pengaturan koneksi aplikasi Anda agar mengarah ke instans AnalyticDB for PostgreSQL.