Anda dapat mengimpor data dari RDS for MySQL ke AnalyticDB for MySQL untuk mengintegrasikan data dari berbagai sumber dan melakukan analisis query kompleks di AnalyticDB for MySQL. Anda juga dapat menulis metrik kunci yang dirangkum kembali ke RDS for MySQL.
Prasyarat
Instans RDS for MySQL dan kluster AnalyticDB for MySQL harus berada dalam VPC yang sama.
Blok CIDR dari VPC tempat kluster AnalyticDB for MySQL berada telah ditambahkan ke daftar putih instans RDS for MySQL.
Untuk kluster AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, Edisi Data Lakehouse, atau Edisi Gudang Data (Mode Elastis), saklar Elastic Network Interface (ENI) Network diaktifkan di bagian Network Information pada halaman Cluster Information di AnalyticDB for MySQL.
PentingMengaktifkan atau menonaktifkan jaringan ENI akan memutus koneksi database selama sekitar 2 menit. Selama periode ini, operasi baca dan tulis tidak tersedia. Evaluasi dampaknya sebelum Anda mengaktifkan atau menonaktifkan jaringan ENI.
Persiapan data
Dalam contoh untuk topik ini, sebuah database RDS for MySQL bernama test_adb berisi tabel bernama person:
CREATE TABLE goods (
goods_id bigint(20) NOT NULL,
price double NOT NULL,
class bigint(20) NOT NULL,
name varchar(32) NOT NULL,
update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (goods_id)
);Contoh berikut menyisipkan data ke dalam tabel person:
INSERT INTO test_adb.goods
VALUES
(1, 50, 1, 'Book', '2024-08-07 09:56:53'),
(2, 80, 2, 'Basketball', '2024-08-08 10:00:55'),
(3, 150, 3, 'Watch', '2024-08-06 11:00:25'),
(4, 30, 1, 'Magazine', '2024-08-08 12:25:55'),
(5, 80, 2, 'Football', '2024-08-07 08:50:35'),
(6, 25, 4, 'Tea', '2024-08-05 09:25:30'),
(7, 30, 4, 'Coffee', '2024-08-07 10:20:40'),
(8, 300, 3, 'Computer', '2024-08-06 10:55:35'),
(9, 100, 2, 'Baseball', '2024-08-08 11:35:50'),
(10, 200, 3, 'Phone', '2024-08-07 11:30:25');Prosedur
Edisi Perusahaan, Edisi Dasar, dan Edisi Data Lakehouse
Buka editor SQL.
Masuk ke Konsol AnalyticDB for MySQL. Di pojok kiri atas konsol, pilih wilayah. Di panel navigasi di sebelah kiri, klik Clusters. Temukan kluster yang ingin Anda kelola dan klik ID kluster tersebut.
Di panel navigasi di sebelah kiri, klik .
Pilih mesin XIHE dan kelompok sumber daya interaktif.
Eksekusi pernyataan berikut untuk membuat database eksternal. Kode berikut memberikan contoh:
CREATE EXTERNAL DATABASE adb_external_db;Eksekusi pernyataan berikut untuk membuat tabel eksternal. Kode berikut memberikan contoh:
CatatanTabel eksternal di AnalyticDB for MySQL harus memiliki nama kolom, jumlah kolom, urutan kolom, dan tipe data yang sama dengan tabel sumber di RDS for MySQL.
Untuk informasi lebih lanjut tentang parameter untuk membuat tabel eksternal di AnalyticDB for MySQL, lihat CREATE EXTERNAL TABLE.
CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_db.goods ( goods_id bigint(20) NOT NULL, price double NOT NULL, class bigint(20) NOT NULL, name varchar(32) NOT NULL, update_time timestamp, PRIMARY KEY (goods_id) )ENGINE = 'MYSQL' TABLE_PROPERTIES = '{ "url":"jdbc:mysql://mysql-address:3306/test_adb", "tablename":"goods", "username":"mysql-user-name", "password":"mysql-user-password", "charset":"utf8" }';Kueri data.
Setelah tabel eksternal dibuat, Anda dapat mengeksekusi pernyataan SELECT di AnalyticDB for MySQL untuk menanyakan data di tabel
goodsdi RDS for MySQL.SELECT * FROM adb_external_db.goods;Hasil berikut dikembalikan:
+----------+-------+-------+------------+---------------------+ | goods_id | price | class | name | update_time | +----------+-------+-------+------------+---------------------+ | 2 | 80.0 | 2 | Basketball | 2024-08-08 10:00:55 | | 10 | 200.0 | 3 | Phone | 2024-08-07 11:30:25 | | 1 | 50.0 | 1 | Book | 2024-08-07 09:56:53 | | 6 | 25.0 | 4 | Tea | 2024-08-05 09:25:30 | | 9 | 100.0 | 2 | Baseball | 2024-08-08 11:35:50 | | 3 | 150.0 | 3 | Watch | 2024-08-06 11:00:25 | | 5 | 80.0 | 2 | Football | 2024-08-07 08:50:35 | | 7 | 30.0 | 4 | Coffee | 2024-08-07 10:20:40 | | 8 | 300.0 | 3 | Computer | 2024-08-06 10:55:35 | | 4 | 30.0 | 1 | Magazine | 2024-08-08 12:25:55 | +----------+-------+-------+------------+---------------------+Eksekusi pernyataan berikut untuk membuat database tujuan.
CREATE DATABASE adb_demo;Eksekusi pernyataan berikut untuk membuat tabel tujuan bernama
mysql_import_testdi databaseadb_demo. Tabel ini digunakan untuk menyimpan data yang diimpor dari RDS for MySQL.CREATE TABLE IF NOT EXISTS mysql_import_test ( goods_id bigint(20) NOT NULL, price double NOT NULL, class bigint(20) NOT NULL, name varchar(32) NOT NULL, update_time timestamp, PRIMARY KEY (goods_id) ) DISTRIBUTED BY HASH(goods_id);Eksekusi pernyataan berikut untuk mengimpor data dari instans RDS for MySQL ke kluster tujuan AnalyticDB for MySQL.
INSERT INTO mysql_import_test SELECT * FROM adb_external_db.goods;Eksekusi pernyataan berikut untuk menanyakan data di tabel
mysql_import_testdi AnalyticDB for MySQL.SELECT * FROM mysql_import_test;Hasil berikut dikembalikan:
+----------+-------+-------+------------+---------------------+ | goods_id | price | class | name | update_time | +----------+-------+-------+------------+---------------------+ | 2 | 80.0 | 2 | Basketball | 2024-08-08 10:00:55 | | 10 | 200.0 | 3 | Phone | 2024-08-07 11:30:25 | | 1 | 50.0 | 1 | Book | 2024-08-07 09:56:53 | | 6 | 25.0 | 4 | Tea | 2024-08-05 09:25:30 | | 9 | 100.0 | 2 | Baseball | 2024-08-08 11:35:50 | | 3 | 150.0 | 3 | Watch | 2024-08-06 11:00:25 | | 5 | 80.0 | 2 | Football | 2024-08-07 08:50:35 | | 7 | 30.0 | 4 | Coffee | 2024-08-07 10:20:40 | | 8 | 300.0 | 3 | Computer | 2024-08-06 10:55:35 | | 4 | 30.0 | 1 | Magazine | 2024-08-08 12:25:55 | +----------+-------+-------+------------+---------------------+
Edisi Gudang Data
Sambungkan ke kluster tujuan AnalyticDB for MySQL. Untuk informasi lebih lanjut, lihat Sambungkan ke kluster.
Buat database tujuan. Untuk informasi lebih lanjut, lihat Buat database.
Dalam contoh ini, database tujuan di kluster AnalyticDB for MySQL diberi nama
adb_demo.Buat tabel eksternal.
Eksekusi pernyataan berikut untuk membuat tabel eksternal bernama
goods_external_tabledi database tujuanadb_demo.CREATE TABLE IF NOT EXISTS goods_external_table ( goods_id bigint(20) NOT NULL, price double NOT NULL, class bigint(20) NOT NULL, name varchar(32) NOT NULL, update_time timestamp, PRIMARY KEY (goods_id) ) ENGINE='mysql' TABLE_PROPERTIES='{ "url":"jdbc:mysql://mysql-vpc-address:3306/test_adb", "tablename":"goods", "username":"mysql-user-name", "password":"mysql-user-password", "charset":"utf8" }';Parameter
Deskripsi
ENGINE='mysql'Mesin penyimpanan untuk tabel eksternal. Topik ini menggunakan MySQL.
TABLE_PROPERTIESAnalyticDB for MySQL menggunakan metode ini untuk mengakses data di RDS for MySQL.
urlTitik akhir internal (VPC endpoint) dari instans RDS for MySQL dan nama database sumber. Dalam contoh ini, database sumber adalah
test_adb. Untuk informasi lebih lanjut tentang cara melihat titik akhir instans RDS for MySQL, lihat Lihat atau modifikasi titik akhir internal dan publik serta port.Format:
"jdbc:mysql://mysql-vpc-address:3306/rds-database-name".Contoh:
jdbc:mysql://rm-bp1hem632****.mysql.rds.aliyuncs.com:3306/test_adb.tablenameNama tabel sumber di RDS for MySQL. Dalam contoh ini, tabel sumber adalah
goods.usernameAkun database untuk instans RDS for MySQL.
passwordKata sandi untuk akun database RDS for MySQL.
charsetSet karakter untuk MySQL. Nilai yang valid:
gbk
utf8 (default)
utf8mb4
Buat tabel tujuan.
Di dalam database tujuan
adb_demo, eksekusi pernyataan berikut untuk membuat tabel bernamamysql_import_test. Tabel ini digunakan untuk menyimpan data yang diimpor dari RDS for MySQL.CREATE TABLE IF NOT EXISTS mysql_import_test ( goods_id bigint(20) NOT NULL, price double NOT NULL, class bigint(20) NOT NULL, name varchar(32) NOT NULL, update_time timestamp, PRIMARY KEY (goods_id) ) DISTRIBUTED BY HASH(goods_id);Impor data dari instans sumber RDS for MySQL ke kluster AnalyticDB for MySQL.
REPLACE INTO mysql_import_test SELECT * FROM goods_external_table;Setelah impor selesai, Anda dapat masuk ke database tujuan AnalyticDB for MySQL
adb_demodan mengeksekusi perintah berikut untuk memverifikasi bahwa data dari tabel sumber telah diimpor ke tabelmysql_import_test:SELECT * FROM mysql_import_test LIMIT 100;Perintah tersebut mengembalikan keluaran berikut:
+----------+-------+-------+------------+---------------------+ | goods_id | price | class | name | update_time | +----------+-------+-------+------------+---------------------+ | 2 | 80.0 | 2 | Basketball | 2024-08-08 10:00:55 | | 10 | 200.0 | 3 | Phone | 2024-08-07 11:30:25 | | 1 | 50.0 | 1 | Book | 2024-08-07 09:56:53 | | 6 | 25.0 | 4 | Tea | 2024-08-05 09:25:30 | | 9 | 100.0 | 2 | Baseball | 2024-08-08 11:35:50 | | 3 | 150.0 | 3 | Watch | 2024-08-06 11:00:25 | | 5 | 80.0 | 2 | Football | 2024-08-07 08:50:35 | | 7 | 30.0 | 4 | Coffee | 2024-08-07 10:20:40 | | 8 | 300.0 | 3 | Computer | 2024-08-06 10:55:35 | | 4 | 30.0 | 1 | Magazine | 2024-08-08 12:25:55 | +----------+-------+-------+------------+---------------------+