Anda dapat memigrasikan data dari ApsaraDB RDS for MySQL atau PolarDB for MySQL ke ApsaraDB for ClickHouse untuk analisis real-time. Topik ini menjelaskan cara mengimpor data dari ApsaraDB RDS for MySQL ke ApsaraDB for ClickHouse. Contoh ini membantu Anda mempelajari proses migrasi data dengan mudah.
Prasyarat
Cluster tujuan ApsaraDB for ClickHouse telah dibuat.
CatatanJika cluster ApsaraDB for ClickHouse belum dibuat, buat terlebih dahulu. Untuk informasi lebih lanjut, lihat Buat Cluster ApsaraDB for ClickHouse.
Akun database dengan hak istimewa telah dibuat untuk cluster tujuan. Untuk informasi lebih lanjut, lihat Buat Akun.
Instansi ApsaraDB RDS for MySQL dan cluster tujuan ApsaraDB for ClickHouse berada di wilayah yang sama serta menggunakan virtual private cloud (VPC) yang sama. Alamat IP cluster ApsaraDB for ClickHouse telah ditambahkan ke daftar putih instansi ApsaraDB RDS for MySQL. Alamat IP instansi ApsaraDB RDS for MySQL juga telah ditambahkan ke daftar putih cluster ApsaraDB for ClickHouse. Jika tidak, selesaikan masalah jaringan terlebih dahulu. Untuk informasi lebih lanjut, lihat bagian Apa yang harus saya lakukan jika koneksi gagal dibuat antara cluster tujuan dan sumber data? dalam topik FAQ.
Untuk informasi lebih lanjut tentang cara mengonfigurasi daftar putih untuk cluster ApsaraDB for ClickHouse, lihat Konfigurasikan Daftar Putih.
Untuk informasi lebih lanjut tentang cara mengonfigurasi daftar putih untuk instansi ApsaraDB RDS for MySQL, lihat Konfigurasikan Daftar Putih Alamat IP.
CatatanAnda dapat mengeksekusi pernyataan
SELECT * FROM system.clusters;untuk menanyakan alamat IP cluster ApsaraDB for ClickHouse.
Langkah 1: Buat tabel di instansi ApsaraDB RDS for MySQL dan tulis data ke tabel
Langkah ini mencakup operasi pembuatan database, pembuatan tabel, dan penulisan data. Jika instansi ApsaraDB RDS for MySQL sudah memiliki data relevan, lewati langkah ini.
Sambungkan ke instansi ApsaraDB RDS for MySQL menggunakan Data Management (DMS). Untuk informasi lebih lanjut, lihat Gunakan DMS untuk Masuk ke Instansi ApsaraDB RDS for MySQL.
Eksekusi pernyataan CREATE DATABASE untuk membuat database bernama testdb.
CREATE DATABASE testdb;Eksekusi pernyataan CREATE TABLE untuk membuat tabel
mysql_test_tabledi databasetestdb.CREATE TABLE testdb.mysql_test_table ( v1 Int NOT NULL, v2 Int DEFAULT NULL, v3 Float DEFAULT NULL ) ENGINE=InnoDB;Tulis data ke tabel
mysql_test_table.INSERT INTO testdb.mysql_test_table VALUES (4,4,4.0),(1,1,2.0),(1,1,0.0),(4,1,2.0),(7,1,3.0);
Langkah 2: Buat tabel di ApsaraDB for ClickHouse
Sambungkan ke cluster ApsaraDB for ClickHouse menggunakan DMS. Untuk informasi lebih lanjut, lihat Gunakan DMS untuk Menyambung ke Cluster ApsaraDB for ClickHouse.
Eksekusi pernyataan CREATE TABLE untuk membuat tabel. Dalam contoh berikut, tabel
clickhouse_test_tabledibuat di databasedefault.CREATE TABLE default.clickhouse_test_table ON CLUSTER default ( v1 Int32, v2 Nullable(Int32), v3 Nullable(Float32) ) ENGINE = MergeTree ORDER BY v1;CatatanTipe data tabel di ApsaraDB for ClickHouse harus dipetakan ke tipe data tabel di ApsaraDB RDS for MySQL. Untuk informasi lebih lanjut tentang pemetaan, lihat bagian Pemetaan Tipe Data dalam topik ini.
Jika NOT NULL tidak ditentukan untuk kolom dalam pernyataan yang digunakan untuk membuat tabel di instansi ApsaraDB RDS for MySQL, nilai kolom tersebut bisa NULL. Kolom yang sesuai dalam pernyataan yang digunakan untuk membuat tabel di ApsaraDB for ClickHouse diidentifikasi sebagai Nullable.
(Opsional) Buat tabel terdistribusi bernama
clickhouse_test_table_distributed.CatatanJika cluster ApsaraDB for ClickHouse Anda adalah cluster multi-node, kami sarankan Anda membuat tabel terdistribusi. Tabel terdistribusi menggunakan sumber daya penyimpanan dan komputasi setiap server di cluster ApsaraDB for ClickHouse untuk menerapkan eksekusi efisien operasi penulisan dan kueri data. Tabel terdistribusi tidak hanya mendukung skalabilitas horizontal yang sangat baik tetapi juga memastikan performa tinggi dan ketersediaan tinggi.
CREATE TABLE clickhouse_test_table_distributed ON CLUSTER default AS clickhouse_test_table ENGINE = Distributed(default, default, clickhouse_test_table, rand());
Langkah 3: Baca data dari instansi ApsaraDB RDS for MySQL dan tulis data ke cluster ApsaraDB for ClickHouse
Sambungkan ke cluster ApsaraDB for ClickHouse menggunakan DMS dan eksekusi pernyataan migrasi. Untuk informasi lebih lanjut, lihat Gunakan DMS untuk Menyambung ke Cluster ApsaraDB for ClickHouse.
Sintaks:
INSERT INTO <Nama tabel di ApsaraDB for ClickHouse> select * from mysql('<Titik akhir instansi ApsaraDB RDS for MySQL>:<Port>', '<Nama database ApsaraDB RDS for MySQL>','<Nama tabel di instansi ApsaraDB RDS for MySQL>', '<Akun database ApsaraDB RDS for MySQL>', '<Kata sandi akun database ApsaraDB RDS for MySQL>')Untuk informasi lebih lanjut tentang cara mendapatkan titik akhir dan port instansi ApsaraDB RDS for MySQL, lihat Lihat dan Kelola Titik Akhir dan Port Instansi.
Contoh:
INSERT INTO clickhouse_test_table_distributed SELECT * FROM mysql('rm-bp16t9h3999xb****.mysql.rds.aliyuncs.com:3306','testdb','mysql_test_table','test','123456Aa');Langkah 4: Kueri data yang diimpor ke cluster ApsaraDB for ClickHouse
Kueri data yang diimpor ke cluster ApsaraDB for ClickHouse. Masukkan pernyataan kueri berikut dan klik Execute(F8) untuk memeriksa apakah data telah diimpor:
SELECT * FROM clickhouse_test_table_distributed;CatatanJika Anda mengimpor data ke tabel lokal, ganti nama tabel terdistribusi
clickhouse_test_table_distributeddalam pernyataan kueri dengan nama tabel lokalclickhouse_test_table, dan eksekusi pernyataan kueri.Hasil kueri berikut dikembalikan:

Pemetaan tipe data
Tipe data di ApsaraDB RDS for MySQL atau PolarDB for MySQL | Tipe data di ApsaraDB for ClickHouse |
Unsigned tinyint | UInt8 |
Tinyint | Int8 |
Unsigned smallint | UInt16 |
Smallint | Int16 |
Unsigned int dan Unsigned mediumint | UInt32 |
Int dan Mediumint | Int32 |
Unsigned bigint | UInt64 |
Bigint | Int64 |
Float | Float32 |
Double | Float64 |
Date | Date |
Datetime dan Timestamp | DateTime |
Binary | FixedString |
Lainnya | String |