Anda dapat menggunakan DTS, Flink CDC, katalog, atau DataWorks untuk melakukan migrasi data dari sumber MySQL (seperti MySQL yang dikelola sendiri, ApsaraDB RDS for MySQL, dan PolarDB for MySQL) ke ApsaraDB for SelectDB. Pilih metode berdasarkan volume data dan kasus penggunaan Anda.
Perbandingan metode migrasi
DTS, DataWorks, Flink CDC, dan katalog semuanya dapat melakukan migrasi data MySQL ke ApsaraDB for SelectDB, tetapi kemampuan masing-masing berbeda. Pilih metode yang paling sesuai dengan skenario Anda.
Metode | Migrasi data historis | Sinkronisasi data inkremental | Migrasi skema | Migrasi database | Sinkronisasi DDL | Verifikasi data |
DTS | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
DataWorks | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
Flink CDC | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
catalog | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
Bagian-bagian berikut menjelaskan langkah-langkah dasar untuk setiap metode. Untuk detail selengkapnya, lihat dokumentasi masing-masing metode.
Prasyarat
Pastikan instans MySQL dan instans SelectDB dapat berkomunikasi melalui jaringan.
Instans MySQL dan instans SelectDB berada dalam VPC yang sama. Jika tidak, selesaikan terlebih dahulu masalah konektivitas jaringan. Untuk petunjuknya, lihat Bagaimana cara menyelesaikan masalah konektivitas jaringan antara instans ApsaraDB for SelectDB dan sumber data?
Tambahkan alamat IP instans MySQL ke daftar putih alamat IP SelectDB. Untuk informasi selengkapnya, lihat Konfigurasi daftar putih alamat IP.
Jika instans MySQL Anda memiliki daftar putih alamat IP, tambahkan blok CIDR IP VPC instans SelectDB ke daftar putih alamat IP MySQL.
-
Untuk mendapatkan rentang IP VPC tempat instans SelectDB Anda berada, lihat Bagaimana cara menemukan blok CIDR IP VPC tempat instans ApsaraDB for SelectDB saya berada?
-
Untuk mendapatkan alamat IP publik instans SelectDB Anda, gunakan perintah
pingpada titik akhir publikSelectDB.
-
Migrasi data dengan DTS
DTS mendukung migrasi data historis dan sinkronisasi data inkremental dari MySQL ke ApsaraDB for SelectDB, serta menyediakan kemampuan seperti migrasi database dan tabel, sinkronisasi DDL, dan verifikasi data. Contoh berikut menggunakan instans ApsaraDB RDS for MySQL. Untuk informasi selengkapnya, lihat Gunakan DTS untuk mengimpor data.
Prosedur
Masuk ke Konsol ApsaraDB for SelectDB.
Di pojok kiri atas, pilih wilayah tempat instans Anda berada.
Pada halaman Instances, klik Instance ID yang dituju untuk membuka halaman Instance Details.
Di panel navigasi sebelah kiri, klik Data Pipeline, lalu pilih tab Data Synchronization.
CatatanSinkronisasi data DTS menggabungkan migrasi data historis untuk transfer satu kali dengan sinkronisasi data inkremental untuk pembaruan secara real-time.
Klik Create Synchronization Task dan konfigurasikan database sumber dan tujuan.
Setelah menyelesaikan konfigurasi, klik Test Connection and Proceed di bagian bawah halaman.
Konfigurasikan objek tugas dan pengaturan lanjutan.
Jika Anda memilih objek pada tingkat database, DTS tidak akan menyinkronkan data untuk tabel yang dibuat setelah tugas dimulai. Jika Anda berencana menambahkan tabel selama sinkronisasi, pilih objek pada tingkat tabel. Anda dapat mengubah pilihan nanti dengan menggunakan Modify Synchronized Objects.
Jika Anda memilih objek pada tingkat tabel dan perlu mengeditnya, misalnya dengan memetakan nama tabel atau kolom, satu tugas sinkronisasi mendukung maksimal 1.000 tabel. Jika batas ini dilampaui, kesalahan akan dilaporkan saat Anda mengirimkan tugas. Dalam kasus ini, bagi tabel yang akan disinkronkan menjadi beberapa batch dan konfigurasikan beberapa tugas, atau konfigurasikan tugas sinkronisasi tingkat database.
-
Untuk mengganti nama objek sinkronisasi tunggal di instans tujuan, klik kanan objek tersebut di kotak Selected Objects. Untuk informasi selengkapnya tentang penggantian nama objek, lihat Memetakan satu database, tabel, atau kolom.
-
Untuk mengganti nama beberapa objek sinkronisasi di instans tujuan secara batch, klik Batch Edit di pojok kanan atas kotak Selected Objects. Untuk informasi selengkapnya, lihat Memetakan database, tabel, dan kolom secara batch.
Untuk memilih operasi SQL yang akan disinkronkan pada tingkat database atau tabel, klik kanan objek yang akan disinkronkan di kotak Selected Objects, lalu pilih operasi SQL yang diinginkan di kotak dialog yang muncul. Untuk daftar operasi yang didukung, lihat Operasi SQL yang mendukung sinkronisasi inkremental.
Untuk memfilter data menggunakan klausa WHERE, klik kanan tabel yang akan disinkronkan di kotak Selected Objects, lalu atur kondisi filter di kotak dialog yang muncul. Untuk informasi selengkapnya, lihat Atur kondisi filter.
Jika Anda menggunakan fitur pemetaan nama objek, objek lain yang bergantung pada objek yang dipetakan ulang mungkin gagal disinkronkan.
Opsi: Setelah menyelesaikan konfigurasi di atas, klik Next: Configure Database and Table Fields untuk mengatur Primary Key Column, Distribution Key, dan Engine untuk tabel tujuan.
Langkah ini tersedia hanya jika Anda memilih Synchronization Types untuk Schema Synchronization saat mengonfigurasi objek tugas. Anda dapat mengatur Definition Status ke All lalu memodifikasi pengaturannya.
Anda dapat memilih beberapa kolom untuk membentuk Primary Key Column komposit, dan Anda harus memilih satu atau beberapa kolom dari Primary Key Column sebagai Distribution Key. Untuk Engine, hanya Unique yang didukung.
Simpan tugas dan jalankan pemeriksaan awal. Setelah Precheck Success Rate mencapai 100%, klik Next: Purchase.
Pada halaman Purchase, pilih metode penagihan dan spesifikasi tautan untuk instansi sinkronisasi data. Baca dan pilih Data Transmission Service (Pay-As-You-Go) Service Terms. Klik Purchase and Start untuk memulai tugas sinkronisasi. Anda dapat melihat progres tugas di halaman sinkronisasi data.
Kategori | Konfigurasi | Deskripsi |
Informasi Tugas | Task Name | DTS secara otomatis menghasilkan nama tugas. Kami menyarankan agar Anda menentukan nama deskriptif untuk memudahkan identifikasi. Nama tersebut tidak harus unik. |
Database Sumber | Database Type | Pilih MySQL. |
Access Method | Pilih Alibaba Cloud Instance. | |
Instance Region | Pilih wilayah tempat instans sumber ApsaraDB RDS for MySQL berada. | |
RDS Instance ID | Pilih ID instans sumber ApsaraDB RDS for MySQL. Contoh: rm-2z3m****. | |
Database Account | Masukkan akun database instans sumber ApsaraDB RDS for MySQL. Untuk izin yang diperlukan, lihat Izin yang diperlukan untuk akun database. | |
Database Password | Masukkan kata sandi yang sesuai dengan akun database tersebut. | |
Encryption | Pilih Non-encrypted atau SSL-encrypted sesuai kebutuhan. Jika Anda memilih SSL-encrypted, Anda harus mengaktifkan enkripsi SSL untuk instans RDS for MySQL terlebih dahulu. Untuk informasi selengkapnya, lihat Gunakan sertifikat cloud untuk mengaktifkan enkripsi SSL dengan cepat. | |
Database Tujuan | Database Type | Pilih SelectDB. |
Access Method | Pilih Alibaba Cloud Instance. | |
Instance Region | Pilih wilayah tempat instans SelectDB tujuan berada. | |
Instance ID | Pilih ID instans SelectDB tujuan. | |
Database Account | Masukkan akun database instans SelectDB tujuan. Untuk izin yang diperlukan, lihat Izin yang diperlukan untuk akun database. | |
Database Password | Masukkan kata sandi yang sesuai dengan akun database tersebut. |
Konfigurasi | Deskripsi |
Synchronization Types | Incremental Data Synchronization dipilih. Secara default, Anda juga harus memilih Schema Synchronization dan Full Data Synchronization. Setelah pemeriksaan awal selesai, DTS akan melakukan sinkronisasi data penuh dari objek yang dipilih dari instans sumber ke kluster tujuan. Ini menjadi garis dasar data untuk sinkronisasi data inkremental berikutnya. Penting Tipe data dikonversi saat data disinkronkan dari MySQL ke SelectDB. Jika Anda tidak memilih Schema Synchronization, Anda harus terlebih dahulu membuat tabel dengan skema yang sesuai yang menggunakan model Unique Key di instans SelectDB tujuan. Untuk informasi selengkapnya, lihat Pemetaan tipe data dan Model data. |
Source Objects | Pada kotak Source Objects, klik objek yang ingin Anda sinkronkan, lalu klik Penting |
Selected Objects | Catatan |
Migrasi data dengan DataWorks
Data Integration DataWorks dapat menyinkronkan data dari MySQL ke ApsaraDB for SelectDB. Untuk informasi selengkapnya, lihat Impor data menggunakan DataWorks.
Penulisan ke bidang dengan tipe data BITMAP, HLL (HyperLogLog), atau QUANTILE_STATE tidak didukung.
Tambahkan sumber data
Saat mengembangkan tugas sinkronisasi data, buat sumber data MySQL dan sumber data SelectDB di DataWorks.
Buat sumber data MySQL. Untuk informasi selengkapnya, lihat Sumber data MySQL.
Buat sumber data SelectDB. Untuk informasi selengkapnya, lihat Manajemen sumber data. Tabel berikut menjelaskan beberapa parameter konfigurasi untuk sumber data SelectDB.
Parameter
Deskripsi
Data Source Name
Nama sumber data.
MySQL Connection URL
Masukkan string koneksi JDBC
jdbc:mysql://<ip>:<port>/<dbname>.Anda dapat memperoleh VPC Endpoint (atau Public Endpoint) dan MySQL Port dari halaman Instance Details > Network Information di Konsol ApsaraDB for SelectDB.
Contoh:
jdbc:mysql://selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:9030/test_dbHTTP Connection URL
Masukkan titik akhir protokol HTTP dalam format
<ip>:<port>.Anda dapat memperoleh VPC Endpoint (atau Public Endpoint) dan HTTP Port dari halaman Instance Details > Network Information di Konsol ApsaraDB for SelectDB.
Contoh:
selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:8080Username
Masukkan username untuk instans ApsaraDB for SelectDB.
Password
Masukkan kata sandi untuk pengguna yang ditentukan dari instans ApsaraDB for SelectDB.
Konfigurasi sinkronisasi data
Untuk mengonfigurasi tugas migrasi data, lihat dokumen berikut:
Migrasi data dengan Flink CDC
Flink menyediakan tiga metode untuk migrasi data dari MySQL ke SelectDB: Flink SQL, Flink CDC, dan DataStream. Flink CDC mendukung migrasi data historis, sinkronisasi data inkremental, migrasi database dan tabel, serta sinkronisasi DDL. Contoh berikut menggunakan Flink CDC untuk menyinkronkan data dari MySQL ke ApsaraDB for SelectDB. Untuk informasi selengkapnya, lihat Gunakan Flink untuk mengimpor data.
Prosedur
Persiapan lingkungan
Siapkan lingkungan Flink. Contoh ini menggunakan lingkungan Flink 1.16 standalone.
Unduh dan ekstrak flink-1.16.3-bin-scala_2.12.tgz. Jika versi ini tidak tersedia, unduh versi lainnya. Untuk versi lainnya, lihat Apache Flink.
wget https://archive.apache.org/dist/flink/flink-1.16.3/flink-1.16.3-bin-scala_2.12.tgz tar -zxvf flink-1.16.3-bin-scala_2.12.tgzBuka direktori FLINK_HOME/lib dan unduh flink-sql-connector-mysql-cdc-2.4.2 dan flink-doris-connector-1.16-1.5.2.
cd flink-1.16.3 cd lib/ wget https://repo1.maven.org/maven2/com/ververica/flink-sql-connector-mysql-cdc/2.4.2/flink-sql-connector-mysql-cdc-2.4.2.jar wget https://repo.maven.apache.org/maven2/org/apache/doris/flink-doris-connector-1.16/1.5.2/flink-doris-connector-1.16-1.5.2.jarJalankan kluster Flink Standalone.
bin/start-cluster.shBuat instans ApsaraDB for SelectDB. Untuk informasi selengkapnya, lihat Buat instans.
Hubungkan ke instans ApsaraDB for SelectDB melalui protokol MySQL. Untuk informasi selengkapnya, lihat Hubungkan ke instans.
Buat database uji dan tabel uji.
Buat database uji.
CREATE DATABASE test_db;Buat tabel uji.
USE test_db; CREATE TABLE employees ( emp_no int NOT NULL, birth_date date, first_name varchar(20), last_name varchar(20), gender char(2), hire_date date ) UNIQUE KEY(`emp_no`) DISTRIBUTED BY HASH(`emp_no`) BUCKETS 1;
Kirimkan pekerjaan Flink CDC
Gunakan sintaks berikut untuk mengirimkan pekerjaan Flink CDC:
<FLINK_HOME>/bin/flink run \
-Dexecution.checkpointing.interval=10s \
-Dparallelism.default=1 \
-c org.apache.doris.flink.tools.cdc.CdcTools \
lib/flink-doris-connector-1.16-1.5.2.jar \
mysql-sync-database \
--database test_db \
--including-tables "tbl1|test.*" \
--mysql-conf hostname=127.0.0.1 \
--mysql-conf username=root \
--mysql-conf password=123456 \
--mysql-conf database-name=mysql_db \
--sink-conf fenodes=selectdb-cn-****.selectdbfe.rds.aliyuncs.com:8080 \
--sink-conf username=admin \
--sink-conf password=****Parameter | Deskripsi |
execution.checkpointing.interval | Interval checkpoint Flink, yang memengaruhi frekuensi sinkronisasi data. Nilai 10s direkomendasikan. |
parallelism.default | Paralelisme pekerjaan Flink. Anda dapat meningkatkan paralelisme untuk meningkatkan throughput sinkronisasi data. |
database | Nama database tujuan di SelectDB. |
including-tables | Tabel MySQL yang akan disinkronkan. Anda dapat menggunakan tanda vertikal (|) untuk memisahkan beberapa tabel. Ekspresi reguler didukung. Misalnya, |
excluding-tables | Tabel yang tidak ingin Anda sinkronkan. Metode konfigurasinya sama dengan parameter including-tables. |
mysql-conf | Konfigurasi sumber MySQL CDC. Untuk informasi selengkapnya, lihat MySQL CDC Connector. Parameter |
sink-conf | Semua konfigurasi untuk sink Doris. Untuk informasi selengkapnya, lihat Gunakan Flink untuk mengimpor data. |
table-conf | Item konfigurasi untuk tabel SelectDB. Ini sesuai dengan konten dalam klausa PROPERTIES pernyataan CREATE TABLE. |
Untuk menyinkronkan data, tambahkan dependensi Flink CDC yang diperlukan, seperti flink-sql-connector-mysql-cdc-${version}.jar dan flink-sql-connector-oracle-cdc-${version}.jar, ke direktori $FLINK_HOME/lib.
Sinkronisasi tingkat database memerlukan Flink 1.15 atau lebih baru. Untuk unduhan Flink Doris Connector, lihat Flink Doris Connector.
Migrasi data dengan katalog
Fitur katalog di SelectDB menggunakan kueri federasi untuk mengakses MySQL, sehingga menyederhanakan migrasi data historis. Contoh berikut menyinkronkan data dari database MySQL ke ApsaraDB for SelectDB. Untuk informasi selengkapnya, lihat Sumber data JDBC.
Prosedur
Hubungkan ke instans SelectDB. Untuk informasi selengkapnya, lihat Hubungkan ke instans.
CatatanPernyataan
SWITCHtidak berfungsi saat Anda terhubung menggunakan DMS. Kami menyarankan untuk terhubung dengan klien MySQL.Buat katalog JDBC MySQL.
CREATE CATALOG jdbc_mysql PROPERTIES ( "type"="jdbc", "user"="root", "password"="123456", "jdbc_url" = "jdbc:mysql://127.0.0.1:3306/demo", "driver_url" = "mysql-connector-java-8.0.25.jar", "driver_class" = "com.mysql.cj.jdbc.Driver", "checksum" = "fdf55dcef04b09f2eaf42b75e61ccc9a" )Deskripsi parameter
Parameter
Wajib
Default
Deskripsi
user
Ya
Tidak ada
Akun database.
password
Ya
Tidak ada
Kata sandi untuk akun database.
jdbc_url
Ya
Tidak ada
String koneksi JDBC.
driver_url
Ya
Tidak ada
Nama file paket JAR driver JDBC.
driver_class
Ya
Tidak ada
Nama kelas driver JDBC.
lower_case_table_names
Tidak
"false"
Menentukan apakah nama database dan tabel dari sumber data JDBC eksternal disinkronkan dalam huruf kecil.
only_specified_database
Tidak
"false"
Menentukan apakah hanya database yang ditentukan yang disinkronkan.
include_database_list
Tidak
""
Saat
only_specified_database=true, menentukan daftar database yang dipisahkan koma untuk disinkronkan. Nama database bersifat case-sensitive.exclude_database_list
Tidak
""
Saat
only_specified_database=true, menentukan daftar database yang dipisahkan koma untuk dikecualikan dari sinkronisasi. Nama database bersifat case-sensitive.Buat tabel tujuan di SelectDB, lalu gunakan pernyataan
INSERT INTO ... SELECTuntuk menyinkronkan data. Untuk informasi selengkapnya tentangINSERT INTO, lihat INSERT INTO.
# Buat tabel tujuan. CREATE TABLE selectdb_table ... # Migrasi data. INSERT INTO selectdb_table SELECT * FROM mysql_catalog.mysql_database.mysql_table;
untuk memindahkan objek ke kotak Selected Objects. Anda dapat memilih objek pada tingkat database, tabel, atau kolom.