AnalyticDB for MySQL mendukung impor dan ekspor data menggunakan tabel eksternal. Topik ini menjelaskan cara menggunakan tabel eksternal di AnalyticDB for MySQL untuk mengimpor data dari database MySQL yang dikelola sendiri pada instance ECS ke kluster AnalyticDB for MySQL Data Warehouse Edition.
Prasyarat
-
Anda memiliki instance ECS di wilayah dan VPC yang sama dengan kluster AnalyticDB for MySQL.
-
Anda telah menginstal database MySQL yang dikelola sendiri pada instance ECS tersebut.
-
Anda telah menambahkan aturan grup keamanan masuk untuk Port 3306 pada database MySQL yang dikelola sendiri. Untuk informasi selengkapnya, lihat Add a security group rule.
-
Database telah dibuat dan data uji telah dipersiapkan pada database MySQL yang dikelola sendiri.
Pada contoh ini, database MySQL yang dikelola sendiri bernama
test_adbdigunakan sebagai database sumber. Tabel sumber bernamagoodsdibuat di dalam database tersebut. Pernyataan berikut digunakan untuk membuat tabel sumber: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) ); -
Jika kluster AnalyticDB for MySQL berada dalam mode elastis, Anda harus mengaktifkan ENI di bagian Network Information pada halaman Cluster Information.
PentingSaat Anda mengaktifkan atau menonaktifkan ENI, koneksi database mungkin terputus selama sekitar 2 menit. Selama periode ini, Anda tidak dapat melakukan operasi baca atau tulis. Lakukan tindakan ini dengan hati-hati.
Prosedur
-
Hubungkan ke kluster AnalyticDB for MySQL. Untuk informasi selengkapnya, lihat Connect to an AnalyticDB for MySQL cluster.
-
Buat database. Untuk informasi selengkapnya, lihat Create a database.
Pada contoh ini, database bernama
adb_demodibuat di kluster AnalyticDB for MySQL. -
Buat tabel eksternal.
Jalankan pernyataan berikut untuk membuat tabel eksternal bernama
goods_external_tabledi databaseadb_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. Contoh ini menggunakan MySQL.
TABLE_PROPERTIESInformasi koneksi yang digunakan oleh kluster AnalyticDB for MySQL untuk mengakses database MySQL yang dikelola sendiri.
urlprimary private IP address (alamat VPC) instance ECS dan nama database sumber. Pada contoh ini, database sumber adalah
test_adb. Untuk melihat alamat IP:-
Masuk ke ECS console dan temukan instance yang dituju.
-
Pada tab Instance Details, cari Primary Private IP Address di bagian Network Information.
Format:
"jdbc:mysql://mysql-vpc-address:3306/ecs-database-name".Contoh:
jdbc:mysql://192.168.128.***:3306/test_adb.tablenameNama tabel sumber di database MySQL yang dikelola sendiri. Contoh ini menggunakan
goods.usernameAkun yang digunakan untuk mengakses database MySQL sumber yang dikelola sendiri.
passwordKata sandi untuk akun tersebut.
charsetSet karakter database MySQL. Nilai yang valid:
-
gbk
-
utf8 (default)
-
utf8mb4
-
-
Buat tabel tujuan.
Jalankan pernyataan berikut untuk membuat tabel tujuan bernama
mysql_import_testdi databaseadb_demo. Tabel ini akan menyimpan data yang diimpor dari database MySQL yang dikelola sendiri.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 database MySQL sumber yang dikelola sendiri ke kluster AnalyticDB for MySQL tujuan.
REPLACE INTO mysql_import_test SELECT * FROM goods_external_table;
Langkah selanjutnya
Setelah data diimpor, Anda dapat menghubungkan ke database adb_demo di kluster AnalyticDB for MySQL. Kemudian, jalankan pernyataan berikut untuk memeriksa apakah data telah berhasil diimpor dari tabel sumber ke tabel mysql_import_test:
SELECT * FROM mysql_import_test LIMIT 100;