Gunakan Data Transmission Service (DTS) untuk memigrasikan data dari database TiDB yang dikelola sendiri ke kluster PolarDB for MySQL. DTS mendukung migrasi skema, migrasi data penuh, dan migrasi data inkremental sehingga Anda dapat meminimalkan downtime dengan menjaga sinkronisasi antara sumber dan tujuan hingga saat cutover.
Proses keseluruhan terdiri dari empat tahap:
Buat kluster PolarDB for MySQL tujuan dan verifikasi izin akun.
(Hanya untuk migrasi inkremental) Siapkan kluster Kafka dan konfigurasikan TiDB Binlog atau TiCDC untuk mengalirkan perubahan ke Kafka.
Buat dan konfigurasikan tugas migrasi DTS.
Jalankan Pemeriksaan Awal, beli instans, dan pantau progres tugas.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kluster PolarDB for MySQL dengan ruang penyimpanan lebih besar daripada ruang yang digunakan oleh database sumber TiDB. Lihat Beli kluster PolarDB for MySQL bayar sesuai penggunaan dan Beli kluster PolarDB for MySQL langganan.
Akun database yang diperlukan dengan izin sebagaimana tercantum di Izin yang diperlukan.
(Hanya untuk migrasi inkremental) Kluster Kafka dan pipeline pengumpulan data inkremental yang telah dikonfigurasi. Lihat (Opsional) Siapkan pengumpulan data inkremental.
Izin yang diperlukan
| Database | Izin yang diperlukan | Referensi |
|---|---|---|
| Database TiDB | SHOW VIEW, dan SELECT pada objek yang akan dimigrasikan | Privilege management |
| Kluster PolarDB for MySQL | Baca dan tulis pada database tujuan | Buat dan kelola akun database |
Penagihan
| Jenis migrasi | Biaya konfigurasi instans | Biaya lalu lintas internet |
|---|---|---|
| Migrasi skema dan migrasi data penuh | Gratis | Dikenakan biaya ketika Access Method diatur ke Public IP Address. Lihat Ikhtisar penagihan. |
| Migrasi data inkremental | Dikenakan biaya. Lihat Ikhtisar penagihan. | Lihat Ikhtisar penagihan. |
Operasi SQL yang didukung untuk migrasi inkremental
| Jenis operasi | Pernyataan SQL |
|---|---|
| DML | INSERT, UPDATE, DELETE |
| DDL | CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE, ADD COLUMN, DROP COLUMN |
Catatan penggunaan
Batasan database sumber
Egress bandwidth: Server database sumber harus memiliki egress bandwidth yang mencukupi. Bandwidth yang tidak mencukupi akan mengurangi kecepatan migrasi.
Kunci primer atau kendala UNIK: Tabel harus memiliki PRIMARY KEY atau UNIQUE constraint dengan semua field unik. Tanpa kendala ini, database tujuan mungkin berisi catatan duplikat.
Batas tabel per tugas: Saat memigrasikan tabel individual dengan edit tingkat kolom (seperti mengganti nama kolom), satu tugas mendukung hingga 1.000 tabel. Untuk lebih dari 1.000 tabel, bagi pekerjaan tersebut ke beberapa tugas atau migrasikan seluruh database.
Pembatasan DDL selama migrasi: Selama migrasi skema dan migrasi data penuh, jangan lakukan operasi DDL yang mengubah skema database atau tabel. Tugas migrasi akan gagal jika operasi DDL terdeteksi.
Indeks awalan: Metadata TiDB tidak menyimpan panjang indeks awalan. Setelah migrasi, panjang indeks awalan hilang, yang dapat mencegah instans berjalan. Perbaiki secara manual panjang indeks awalan untuk tabel yang terpengaruh setelah migrasi.
Persyaratan data inkremental: Migrasi data inkremental memerlukan kluster Kafka dan komponen TiDB Binlog atau TiCDC. Lihat (Opsional) Siapkan pengumpulan data inkremental.
Batasan lainnya
Incremental data partition: DTS hanya membaca data inkremental dari ID partisi 0 pada topik Kafka.
Inisialisasi posisi: Setelah membuat tugas dengan migrasi inkremental, segera lakukan perubahan atau masukkan data uji pada database sumber untuk memperbarui informasi posisi. Jika tidak, tugas mungkin gagal karena latensi berlebihan.
Karakter 4-byte: Jika data mencakup karakter langka atau emoji (karakter 4-byte), database dan tabel tujuan harus menggunakan set karakter UTF8mb4. Jika Anda menggunakan migrasi skema DTS, atur juga parameter instans
character_set_serverke UTF8mb4 di database tujuan.Penggunaan sumber daya migrasi penuh: Migrasi data penuh mengonsumsi sumber daya baca dan tulis di kedua database sumber dan tujuan, sehingga meningkatkan beban mereka. Evaluasi kinerja database sebelum migrasi dan jalankan migrasi penuh selama jam sepi (misalnya, saat Beban CPU di bawah 30%).
Ukuran ruang tabel setelah migrasi penuh: Operasi INSERT konkuren selama migrasi data penuh menyebabkan fragmentasi tabel. Ruang tabel di database tujuan akan lebih besar daripada di database sumber setelah migrasi selesai.
Penulisan ke tujuan selama migrasi: Menulis ke database tujuan selama migrasi dapat menyebabkan ketidakkonsistenan data antara sumber dan tujuan.
Presisi FLOAT dan DOUBLE: DTS menggunakan
ROUND(COLUMN,PRECISION)untuk membaca nilai FLOAT dan DOUBLE. Presisi default adalah 38 digit untuk FLOAT dan 308 digit untuk DOUBLE. Verifikasi bahwa pengaturan presisi ini memenuhi kebutuhan Anda.Auto-resume: DTS secara otomatis mencoba melanjutkan tugas yang gagal dalam tujuh hari terakhir. Sebelum mengalihkan beban kerja ke instans tujuan, hentikan atau rilis tugas DTS, atau jalankan
REVOKEuntuk menghapus izin tulis akun DTS di instans tujuan.Kegagalan DDL: Jika pernyataan DDL gagal di database tujuan, tugas DTS tetap berjalan. Lihat pernyataan DDL yang gagal di log tugas. Lihat Lihat log tugas.
Intervensi dukungan teknis: Jika tugas DTS gagal, dukungan teknis akan mencoba memulihkannya dalam waktu 8 jam. Selama pemulihan, tugas mungkin dimulai ulang dan parameter tugas (bukan parameter database) mungkin dimodifikasi. Untuk parameter yang mungkin dimodifikasi, lihat bagian Modifikasi parameter instans.
(Opsional) Siapkan pengumpulan data inkremental
Lewati bagian ini jika Anda hanya memerlukan migrasi skema dan migrasi data penuh.
Untuk menangkap perubahan inkremental dari TiDB, Anda memerlukan kluster Kafka dan salah satu dari TiDB Binlog atau TiCDC. Kedua metode menggunakan Kafka sebagai lapisan transport. Selesaikan langkah-langkah pengaturan Kafka bersama terlebih dahulu, lalu ikuti langkah-langkah untuk metode yang Anda pilih.
Langkah 1: Siapkan kluster Kafka
Gunakan salah satu opsi berikut:
Kluster Kafka yang dikelola sendiri: Deploy Apache Kafka mengikuti dokumentasi Apache Kafka.
PeringatanUntuk menangani volume data log biner dari TiDB, tingkatkan parameter berikut dalam konfigurasi Kafka Anda. Lihat Konfigurasi Kafka.
Komponen Parameter Alasan Broker message.max.bytesMenetapkan ukuran maksimum pesan yang diterima broker. Event log biner TiDB bisa sangat besar, sehingga batas default menyebabkan kegagalan penulisan. Broker replica.fetch.max.bytesMenetapkan jumlah byte maksimum yang dapat diambil follower per permintaan. Harus setidaknya sebesar message.max.bytesagar dapat mereplikasi pesan yang terlalu besar.Consumer fetch.message.max.bytesMenetapkan jumlah byte maksimum yang diambil consumer per partisi. Harus setidaknya sebesar message.max.bytesagar DTS dapat membaca event lengkap.Message Queue for Apache Kafka: Gunakan layanan Kafka terkelola Alibaba Cloud. Lihat Memulai.
Deploy instans Message Queue for Apache Kafka di virtual private cloud (VPC) yang sama dengan server database sumber untuk mengurangi latensi jaringan dan memastikan konektivitas stabil.
Langkah 2: Buat topik Kafka
Buat topik di kluster Kafka atau instans Message Queue for Apache Kafka.
Topik harus memiliki tepat satu partisi. DTS hanya membaca data inkremental dari partisi dengan ID 0.
Langkah 3: Konfigurasikan TiDB Binlog atau TiCDC
Pilih salah satu metode berdasarkan lingkungan Anda:
<details> <summary>Opsi A: TiDB Binlog</summary>
Untuk meminimalkan dampak latensi jaringan, deploy komponen Pump, komponen Drainer, dan kluster Kafka di server yang berada dalam jaringan internal yang sama dengan server database TiDB sumber.
Deploy komponen Pump dan Drainer. Lihat Penerapan kluster TiDB Binlog.
Edit file konfigurasi Drainer untuk mengatur Kafka sebagai output. Lihat Pengembangan kustom Kafka.Kafka Custom Development
Verifikasi bahwa server database TiDB dapat terhubung ke kluster Kafka.
Tambahkan blok CIDR server DTS ke daftar putih database TiDB. Lihat Tambahkan blok CIDR server DTS.
</details>
<details> <summary>Opsi B: TiCDC</summary>
Instal komponen TiCDC. Gunakan TiUP untuk menambah atau menskalakan TiCDC pada kluster TiDB yang sudah ada. Lihat Deploy TiCDC.
Replikasikan data inkremental ke Kafka menggunakan
tiup cdc cli changefeed create \sebagai perintah pertama. Lihat Replikasikan data ke Kafka.Verifikasi bahwa server database TiDB dapat terhubung ke kluster Kafka.
</details>
Buat tugas migrasi
Langkah 1: Buka halaman Data Migration
Gunakan salah satu metode berikut:
Konsol DTS
Login ke Konsol DTS.DTS console
Di panel navigasi kiri, klik Data Migration.
Di pojok kiri atas, pilih wilayah tempat instans migrasi berada.
Konsol DMS
Langkah aktual dapat berbeda tergantung mode dan tata letak Konsol DMS. Lihat Simple mode dan Sesuaikan tata letak dan gaya Konsol DMS.
Login ke Konsol DMS.DMS console
Di bilah navigasi atas, arahkan pointer ke Data + AI > DTS (DTS) > Data Migration.
Di daftar drop-down di sebelah kanan Data Migration Tasks, pilih wilayah tempat instans migrasi berada.
Langkah 2: Konfigurasikan database sumber dan tujuan
Klik Create Task.
Di halaman konfigurasi tugas, konfigurasikan database sumber dan tujuan.
Parameter database sumber
| Parameter | Deskripsi |
|---|---|
| Task Name | Nama untuk tugas DTS. DTS menghasilkan nama secara otomatis. Tentukan nama deskriptif agar mudah diidentifikasi. Nama tidak perlu unik. |
| Select Existing Connection | Pilih instans database terdaftar dari daftar drop-down, atau konfigurasikan koneksi secara manual. Di Konsol DMS, pilih dari Select a DMS database instance. |
| Database Type | Pilih TiDB. |
| Access Method | Pilih jenis koneksi berdasarkan lokasi deployment database TiDB. Contoh ini menggunakan Self-managed Database on ECS. Untuk jenis koneksi lain, lengkapi persiapan yang sesuai. |
| Instance Region | Wilayah tempat database TiDB berada. |
| ECS Instance ID | ID instans Elastic Compute Service (ECS) yang menjalankan database TiDB. |
| Port Number | Port layanan database TiDB. Default: 4000. |
| Database Account | Akun untuk database TiDB. |
| Database Password | Kata sandi untuk akun database TiDB. |
| Migrate Incremental Data | Untuk memigrasikan data inkremental, pilih Yesalert notification settings dan isi informasi kluster Kafka. Lihat Parameter kluster Kafka. |
Parameter database tujuan
| Parameter | Deskripsi |
|---|---|
| Select Existing Connection | Pilih instans database terdaftar dari daftar drop-down, atau konfigurasikan koneksi secara manual. Di Konsol DMS, pilih dari Select a DMS database instance. |
| Database Type | Pilih PolarDB for MySQL. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah tempat kluster PolarDB for MySQL tujuan berada. |
| Replicate Data Across Alibaba Cloud Accounts | Pilih No saat menggunakan instans database di bawah Akun Alibaba Cloud saat ini. |
| PolarDB Cluster ID | Pilih ID kluster PolarDB for MySQL tujuan. |
| Database Account | Akun untuk kluster PolarDB for MySQL tujuan. |
| Database Password | Kata sandi untuk akun kluster PolarDB for MySQL tujuan. |
| Encryption | Apakah koneksi dienkripsi atau tidak. Untuk detail enkripsi SSL, lihat Configure SSL encryption. |
Langkah 3: Uji konektivitas
Di bagian bawah halaman, klik Test Connectivity and Proceed. Di kotak dialog CIDR Blocks of DTS Servers, klik Test Connectivity.
Pastikan blok CIDR server DTS telah ditambahkan ke pengaturan keamanan database sumber dan tujuan. Lihat Tambahkan blok CIDR server DTS.
Langkah 4: Konfigurasikan objek migrasi
Di halaman Configure Objects, atur parameter berikut.
Jenis migrasi dan penanganan konflik
| Parameter | Deskripsi |
|---|---|
| Migration Types | Pilih jenis migrasi sesuai kebutuhan Anda: <br>- Schema Migration + Full Data Migration: hanya memigrasikan skema dan data yang ada. <br>- Schema Migration + Full Data Migration + Incremental Data Migration: meminimalkan downtime dengan juga menangkap perubahan selama migrasi. <br> Catatan Jika Anda melewatkan Schema Migration, buat database dan tabel tujuan secara manual dan aktifkan pemetaan nama objek di Selected Objects. Jika Anda melewatkan Incremental Data Migration, hindari menulis ke database sumber selama migrasi untuk menjaga konsistensi data. |
| Processing Mode of Conflicting Tables | - Precheck and Report Errors (default): gagal dalam Pemeriksaan Awal jika tujuan berisi tabel dengan nama yang sama seperti sumber. Gunakan pemetaan nama objek untuk mengganti nama tabel yang bentrok. <br>- Ignore Errors and Proceed: melewati Pemeriksaan Awal untuk konflik nama. Peringatan Opsi ini berisiko menyebabkan ketidakkonsistenan data — selama migrasi penuh, DTS melewati catatan yang bentrok; selama migrasi inkremental, DTS menimpanya. Jika skema berbeda, hanya kolom tertentu yang dimigrasikan atau tugas mungkin gagal. |
| Capitalization of Object Names in Destination Instance | Mengontrol kapitalisasi nama database, nama tabel, dan nama kolom di tujuan. Default: DTS default policy. Lihat Tentukan kapitalisasi nama objek di instans tujuan. |
Pemilihan objek
| Parameter | Deskripsi |
|---|---|
| Source Objects | Pilih tabel atau database yang akan dimigrasikan. Klik |
| Selected Objects | Klik kanan objek untuk mengganti namanya. Lihat Pemetaan nama objek tunggal. Klik Batch Edit untuk mengganti nama beberapa objek sekaligus. Lihat Pemetaan nama beberapa objek sekaligus. Klik kanan tabel untuk mengonfigurasi kondisi filter WHERE. Catatan Mengganti nama objek dapat mencegah objek dependen dimigrasikan. Catatan |
Klik Next: Advanced Settings.
Advanced settings
| Parameter | Deskripsi |
|---|---|
| Select the engine type of the destination database | Mesin penyimpanan untuk database tujuan: InnoDB (default) atau X-Engine (untuk beban kerja online transaction processing (OLTP)). |
| Retry Time for Failed Connections | Berapa lama DTS mencoba kembali koneksi yang gagal setelah tugas dimulai. Rentang: 10–1.440 menit. Default: 720. Kami menyarankan Anda mengatur parameter ini ke nilai lebih dari 30 menit. Jika koneksi dipulihkan dalam periode ini, tugas dilanjutkan; jika tidak, tugas gagal. Catatan Saat beberapa tugas berbagi database sumber atau tujuan yang sama, nilai yang paling baru diatur akan berlaku. DTS mengenakan biaya untuk instans selama waktu percobaan ulang. |
| Retry Time for Other Issues | Berapa lama DTS mencoba kembali operasi DDL atau DML yang gagal. Rentang: 1–1.440 menit. Default: 10. Kami menyarankan Anda mengatur parameter ini ke nilai lebih dari 10 menit. Penting Nilai ini harus kurang dari Retry Time for Failed Connections. |
| Enable Throttling for Full Data Migration | Membatasi penggunaan sumber daya selama migrasi data penuh. 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 saat Full Data Migration dipilih. |
| Enable Throttling for Incremental Data Migration | Membatasi penggunaan sumber daya selama migrasi data inkremental. Konfigurasikan RPS of Incremental Data Migration dan Data migration speed for incremental migration (MB/s). Tersedia hanya saat Incremental Data Migration dipilih. |
| Environment Tag | Tag opsional untuk mengidentifikasi instans migrasi. |
| Configure ETL | Apakah akan mengaktifkan ekstrak, transformasi, dan muat (ETL). Pilih Yes untuk memasukkan pernyataan pemrosesan data. Lihat Apa itu ETL? dan Konfigurasikan ETL dalam tugas migrasi data atau sinkronisasi data. |
| Monitoring and Alerting | Apakah akan mengonfigurasi peringatan untuk tugas. Pilih Yes untuk mengatur ambang batas peringatan dan kontak notifikasi. Lihat Konfigurasikan pemantauan dan peringatan saat membuat tugas DTS. |
Klik Next Step: Data Verification untuk mengonfigurasi verifikasi data. Untuk informasi selengkapnya, lihat Mengonfigurasi tugas verifikasi data.
Langkah 5: Jalankan Pemeriksaan Awal
Untuk melihat pratinjau parameter API untuk tugas ini, arahkan pointer ke Next: Save Task Settings and Precheck dan klik Preview OpenAPI parameters.
Klik Next: Save Task Settings and Precheck.
DTS menjalankan Pemeriksaan Awal sebelum memulai migrasi. Tugas hanya dimulai setelah Pemeriksaan Awal berhasil.
Untuk item Pemeriksaan Awal yang gagal, klik View Details untuk mendiagnosis masalah, selesaikan, lalu jalankan Pemeriksaan Awal lagi.
Untuk item peringatan: jika peringatan tidak dapat diabaikan, perbaiki masalah dan jalankan kembali Pemeriksaan Awal. Jika peringatan dapat diabaikan, klik Confirm Alert Details, lalu klik Ignore > OK > Precheck Again.
Langkah 6: Beli dan mulai instans
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Di halaman Purchase Instance, konfigurasikan kelas instans.
| 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. Lihat Kelas instans untuk instans migrasi data. |
Baca dan terima Data Transmission Service (Pay-as-you-go) Service Terms dengan memilih kotak centang.
Klik Buy and Start, lalu klik OK.
Tugas muncul di halaman Data Migration. Pantau progresnya di sana.
Parameter kluster Kafka
Konfigurasikan parameter berikut saat Migrate Incremental Data diatur ke Yes.
| Parameter | Deskripsi |
|---|---|
| Kafka Cluster Type | Jenis koneksi berdasarkan lokasi deployment kluster Kafka. Contoh ini menggunakan Self-managed Database on ECS. Jika Anda memilih Express Connect, VPN Gateway, or Smart Access Gateway, pilih juga Connected VPC dan masukkan Domain Name or IP. |
| Kafka Data Source Component | Pilih berdasarkan metode pengumpulan inkremental yang telah Anda konfigurasikan: Gunakan format binlog bawaan database TiDB. (TiDB Binlog) atau Gunakan format TiCDC Canal-JSON. (TiCDC). |
| ECS Instance ID | ID instans ECS yang menjalankan kluster Kafka. |
| Port Number | Port layanan kluster Kafka. |
| Kafka Cluster Account | Username kluster Kafka. Biarkan kosong jika autentikasi tidak diaktifkan. |
| Kafka Cluster Password | Kata sandi kluster Kafka. Biarkan kosong jika autentikasi tidak diaktifkan. |
| Kafka Version | Versi kluster Kafka. Jika versinya 1.0 atau lebih baru, pilih 1.0. |
| Encryption | Pilih Non-encrypted atau SCRAM-SHA-256 berdasarkan kebutuhan keamanan Anda. |
| Topic | Topik yang berisi data inkremental. |