AnalyticDB for MySQL Data Warehouse Edition (V3.0) memungkinkan Anda mengekspor data ke database MySQL yang dikelola sendiri yang dihosting pada instance Elastic Compute Service (ECS). Proses ekspor ini menggunakan tabel eksternal sebagai jembatan: Anda membuat tabel eksternal yang mengarah ke database MySQL tujuan, lalu menulis data ke dalamnya dengan satu pernyataan SQL.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Memiliki instance ECS di virtual private cloud (VPC) dan wilayah yang sama dengan kluster AnalyticDB for MySQL.
Memiliki database MySQL yang dikelola sendiri yang dihosting pada instance ECS tersebut.
Mengizinkan Port MySQL (biasanya 3306) untuk menerima lalu lintas masuk dalam aturan security group instance ECS. Untuk detailnya, lihat Add a security group rule.
Data uji siap diekspor.
(Diperlukan untuk mode elastic) ENI diaktifkan di bagian Network Information pada halaman Cluster Information.
Contoh konfigurasi yang digunakan dalam panduan ini:
Tujuannya adalah database MySQL yang dihosting di ECS bernama test_adb, dengan tabel courses yang dibuat sebagai berikut:
CREATE TABLE courses (
id bigint NOT NULL,
name varchar(32) NOT NULL,
grade varchar(32) NOT NULL,
submission_date timestamp NOT NULL,
PRIMARY KEY (id)
);Ekspor data menggunakan tabel eksternal
Prosedur ini mencakup pembuatan tabel sumber di AnalyticDB for MySQL, pembuatan tabel eksternal yang dipetakan ke database MySQL tujuan, lalu penulisan data ke tabel eksternal tersebut.
Langkah 1: Hubungkan ke kluster AnalyticDB for MySQL
Hubungkan ke kluster Anda. Untuk detailnya, lihat Connect to an AnalyticDB for MySQL cluster.
Langkah 2: Buat database sumber
Buat database di kluster untuk menyimpan data yang ingin Anda ekspor. Untuk detailnya, lihat Create a database.
Panduan ini menggunakan database bernama adb_demo.
Langkah 3: Buat tabel sumber dan masukkan data
Jalankan pernyataan berikut untuk membuat tabel courses di adb_demo:
CREATE TABLE courses (
id bigint AUTO_INCREMENT,
name varchar NOT NULL,
grade varchar DEFAULT '1st Grade',
submission_date timestamp
) DISTRIBUTED BY HASH(id);Masukkan satu baris data uji:
INSERT INTO courses (name,submission_date) VALUES("Jams",NOW());Langkah 4: Buat tabel eksternal
Tabel eksternal ini dipetakan ke database MySQL tujuan. Jalankan pernyataan berikut untuk membuat tabel eksternal bernama courses_external_table di adb_demo:
CREATE TABLE IF NOT EXISTS courses_external_table(
id bigint NOT NULL,
name varchar(32) NOT NULL,
grade varchar(32) NOT NULL,
submission_date timestamp NOT NULL,
PRIMARY KEY (id)
)
ENGINE='mysql'
TABLE_PROPERTIES='{
"url":"jdbc:mysql://mysql-vpc-address:3306/test_adb",
"tablename":"courses",
"username":"mysql-user-name",
"password":"mysql-user-password",
"charset":"utf8"
}';Parameter wajib:
| Parameter | Deskripsi |
|---|---|
ENGINE='mysql' | Mesin penyimpanan untuk tabel eksternal. Atur ke mysql untuk terhubung ke database MySQL. |
TABLE_PROPERTIES | Informasi koneksi yang digunakan oleh kluster AnalyticDB for MySQL untuk mengakses data di database MySQL yang dikelola sendiri dan dihosting di ECS. |
url | URL JDBC dari database MySQL tujuan, menggunakan primary private IP address atau titik akhir VPC dari instance ECS. Format: jdbc:mysql://<primary-private-ip>:3306/<database-name>. Contoh: jdbc:mysql://192.168.128.***:3306/test_adb. Untuk menemukan alamat IP pribadi utama instance ECS Anda, buka ECS console, pilih instance tersebut, lalu periksa Primary Private IP Address di bagian Network Information pada tab Instance Details. |
tablename | Nama tabel tujuan di database MySQL. |
username | Username akun database yang digunakan untuk terhubung ke database MySQL. |
password | Password akun database tersebut. |
Parameter opsional:
| Parameter | Default | Deskripsi |
|---|---|---|
charset | utf8 | Set karakter dari database sumber. Nilai yang valid: gbk, utf8, utf8mb4. |
Langkah 5: Ekspor data
Jalankan pernyataan berikut untuk menulis data dari tabel sumber ke database MySQL tujuan melalui tabel eksternal:
REPLACE INTO courses_external_table
SELECT * FROM courses;Verifikasi hasil ekspor
Hubungkan ke database MySQL test_adb dan jalankan:
SELECT * FROM courses LIMIT 100;Konfirmasi bahwa baris data yang diekspor muncul di tabel tujuan courses.
Pemecahan Masalah
Tidak dapat terhubung ke database MySQL
Penyebab paling umum adalah aturan security group pada instance ECS yang tidak ada atau salah. Pastikan Port 3306 diizinkan untuk menerima lalu lintas masuk dari kluster AnalyticDB for MySQL Anda. Lihat Add a security group rule.
Jika port sudah terbuka tetapi koneksi tetap gagal:
Verifikasi bahwa
urldalamTABLE_PROPERTIESmenggunakan Primary Private IP Address dari instance ECS, bukan IP publik.Verifikasi bahwa
usernamedanpasswordbenar.Verifikasi bahwa format URL JDBC adalah
jdbc:mysql://<ip>:3306/<database-name>tanpa garis miring tambahan atau karakter ekstra di akhir.
Tidak ada data yang muncul di tabel tujuan setelah ekspor
Jalankan SELECT * FROM courses LIMIT 10; di kluster AnalyticDB for MySQL untuk memastikan tabel sumber berisi data sebelum menjalankan REPLACE INTO.
Verifikasi juga bahwa skema courses_external_table sesuai dengan tabel tujuan di test_adb. Ketidaksesuaian tipe kolom atau nama dapat menyebabkan proses penulisan gagal atau memicu error.
Langkah Berikutnya
Untuk mengimpor data dari database MySQL yang dikelola sendiri ke AnalyticDB for MySQL, buat tabel eksternal dengan sintaksis ENGINE='mysql' yang sama dan gunakan INSERT INTO ... SELECT * untuk membacanya.