AnalyticDB for MySQL mendukung akses data di ApsaraDB RDS for MySQL baik dalam akun Alibaba Cloud yang sama maupun lintas akun Alibaba Cloud berbeda. Anda dapat mengakses data ApsaraDB RDS for MySQL menggunakan ENI atau koneksi SSL. Koneksi SSL lebih aman dibandingkan ENI karena mengenkripsi koneksi jaringan untuk menjamin keamanan data. Topik ini menjelaskan metode spesifik untuk mengakses data ApsaraDB RDS for MySQL menggunakan ENI dan koneksi SSL.
Prasyarat
Kluster AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, atau Edisi Data Lakehouse telah dibuat.
-
Kluster AnalyticDB for MySQL dan instans ApsaraDB RDS for MySQL harus berada di wilayah yang sama. Untuk informasi selengkapnya, lihat Buat kluster dan Buat instans ApsaraDB RDS for MySQL.
Kelompok sumber daya pekerjaan telah dibuat untuk kluster AnalyticDB for MySQL.
Akun database telah dibuat untuk kluster AnalyticDB for MySQL.
Jika Anda menggunakan akun Alibaba Cloud, Anda hanya perlu membuat akun istimewa.
Jika Anda menggunakan pengguna Resource Access Management (RAM), Anda harus membuat akun istimewa dan akun standar serta mengaitkan akun standar dengan pengguna RAM.
-
Instans ApsaraDB RDS for MySQL harus berada dalam grup keamanan dengan aturan yang mengizinkan akses ke port instans tersebut. Untuk informasi selengkapnya, lihat Atur aturan grup keamanan dan Tambahkan aturan grup keamanan.
-
Anda telah mengaktifkan layanan OSS dan membuat bucket di wilayah yang sama dengan kluster AnalyticDB for MySQL. Untuk informasi selengkapnya, lihat Aktifkan OSS dan Buat bucket.
-
Anda harus memiliki izin yang diperlukan. Untuk informasi selengkapnya, lihat Otorisasi akun.
PentingUntuk akses dalam akun yang sama, diperlukan role
AliyunADBSparkProcessingDataRole. Untuk akses lintas akun, Anda harus memberikan izin kepada akun Alibaba Cloud lainnya.
Persiapkan data
Pada instans ApsaraDB RDS for MySQL Anda, buat database dan tabel, lalu masukkan data. Contohnya:
CREATE DATABASE `test`;
CREATE TABLE `test`.`persons` (
`id` int(11) DEFAULT NULL,
`first_name` varchar(32) DEFAULT NULL,
`last_name` varchar(32) DEFAULT NULL,
`age` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
;
INSERT INTO persons VALUES(1,'a','b',5);
INSERT INTO persons VALUES(2,'c','d',6);
INSERT INTO persons VALUES(3,'e','f',7);
Akses data RDS MySQL melalui ENI
Unggah driver dan dependensi JAR
-
Buat program contoh untuk mengakses tabel ApsaraDB RDS for MySQL, lalu kompilasi dan buat paketnya. Paket JAR yang dihasilkan merupakan dependensi untuk pekerjaan Spark, dan dalam artikel ini diberi nama
rds_test.jar. Kode contohnya sebagai berikut:package com.aliyun.spark import org.apache.spark.sql.SparkSession object SparkRDS { def main(args: Array[String]): Unit = { val sparkSession = SparkSession.builder() .appName("rds mysql test") .getOrCreate() // Titik akhir internal instans ApsaraDB RDS for MySQL. Untuk informasi cara melihat titik akhir, lihat Lihat atau ubah titik akhir internal dan publik serta nomor port. val url = "jdbc:mysql://rm-bp11mpql1e01****.mysql.rds.aliyuncs.com" // Nama tabel ApsaraDB RDS for MySQL dalam format "nama_db.nama_tabel". val dbtable = "test.persons" // Username untuk menghubungkan ke database ApsaraDB RDS for MySQL. val user = "mysql_username" // Password untuk username database. val password = "mysql_password" val jdbcDF = sparkSession.read .format("jdbc") .option("url", url) .option("driver", "com.mysql.jdbc.Driver") .option("dbtable", dbtable) .option("user", user) .option("password", password) .load() jdbcDF.show() } } -
Unduh driver yang kompatibel dengan versi ApsaraDB RDS for MySQL Anda dari situs resmi MySQL.
Topik ini menggunakan mysql-connector-java-8.0.11.jar sebagai contoh.
-
Unggah dependensi JAR pekerjaan Spark dan driver ApsaraDB RDS for MySQL ke OSS. Untuk informasi selengkapnya, lihat Unggah objek.
Akses dalam akun yang sama
Masuk ke Konsol AnalyticDB for MySQL. Di pojok kiri atas konsol, pilih wilayah. Di panel navigasi sebelah kiri, klik Clusters. Temukan kluster yang ingin Anda kelola dan klik ID kluster tersebut.
-
Di panel navigasi sebelah kiri, klik .
-
Di atas editor, pilih kelompok sumber daya pekerjaan dan jenis pekerjaan. Topik ini menggunakan Batch sebagai contoh.
-
Masukkan konfigurasi pekerjaan berikut di editor.
{ "name": "rds-mysql-example", "jars": [ "oss://testBucketName/mysql-connector-java-8.0.11.jar" ], "file": "oss://testBucketName/rds_test.jar", "className": "com.aliyun.spark.SparkRDS", "conf": { "spark.adb.eni.enabled": "true", "spark.adb.eni.vswitchId": "vsw-bp17jqw3lrrobn6y****", "spark.adb.eni.securityGroupId": "sg-bp163uxgt4zandx****", "spark.driver.resourceSpec": "small", "spark.executor.instances": 1, "spark.executor.resourceSpec": "small" } }Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
name
Nama pekerjaan Spark.
jars
Jalur OSS driver ApsaraDB RDS for MySQL.
Contoh ini menggunakan jalur OSS paket mysql-connector-java-8.0.11.jar.
file
Jalur OSS file JAR dependensi pekerjaan Spark.
className
Nama kelas entri program Java atau Scala.
Contoh ini menggunakan com.aliyun.spark.SparkRDS.
spark.adb.eni.enabled
Menentukan apakah akan mengaktifkan akses melalui ENI. Atur ke true untuk mengaktifkan.
spark.adb.eni.vswitchId
ID vSwitch. Pada halaman Database Connection instans ApsaraDB RDS for MySQL, arahkan kursor ke Virtual Private Cloud (VPC) untuk mendapatkan ID vSwitch.
spark.adb.eni.securityGroupId
ID grup keamanan tempat instans ApsaraDB RDS for MySQL ditambahkan. Jika belum menambahkan grup keamanan, lihat Atur aturan grup keamanan.
Parameter conf lainnya
Konfigurasi ini sebagian besar sama dengan Spark open-source. Parameter dalam format
key:value. Pisahkan beberapa parameter dengan koma. Untuk informasi selengkapnya tentang parameter konfigurasi aplikasi, lihat Parameter konfigurasi aplikasi Spark. -
Klik Run Now.
-
Setelah pekerjaan Spark berhasil dijalankan, Anda dapat melihat data dari tabel ApsaraDB RDS for MySQL di log Spark. Untuk informasi cara melihat log, lihat Lihat informasi tentang aplikasi Spark.
Akses lintas akun
Masuk ke Konsol AnalyticDB for MySQL. Di pojok kiri atas konsol, pilih wilayah. Di panel navigasi sebelah kiri, klik Clusters. Temukan kluster yang ingin Anda kelola dan klik ID kluster tersebut.
-
Di panel navigasi sebelah kiri, klik .
-
Di atas editor, pilih kelompok sumber daya pekerjaan dan jenis pekerjaan. Topik ini menggunakan Batch sebagai contoh.
-
Masukkan konfigurasi pekerjaan berikut di editor.
{ "name": "rds-mysql-example", "jars": [ "oss://testBucketName/mysql-connector-java-8.0.11.jar" ], "file": "oss://testBucketName/rds_test.jar", "className": "com.aliyun.spark.SparkRDS", "conf": { "spark.adb.eni.enabled": "true", "spark.adb.eni.vswitchId": "vsw-bp17jqw3lrrobn6y****", "spark.adb.eni.securityGroupId": "sg-bp163uxgt4zandx****", "spark.driver.resourceSpec": "small", "spark.executor.instances": 1, "spark.executor.resourceSpec": "small", "spark.adb.eni.roleArn":"acs:ram::testAccountID:role/testUserName" } }Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
spark.adb.eni.roleArn
Peran RAM yang digunakan untuk akses lintas akun ke sumber data ApsaraDB RDS for MySQL. Pisahkan beberapa peran dengan koma (,). Formatnya adalah
acs:ram::testAccountID:role/testUserName.-
testAccountID: ID akun Alibaba Cloud pemilik sumber data ApsaraDB RDS for MySQL. -
testUserName: Peran RAM yang dibuat untuk otorisasi lintas akun. Untuk informasi selengkapnya, lihat Otorisasi lintas akun.
Untuk informasi selengkapnya tentang parameter lainnya, lihat tabel deskripsi parameter pada bagian sebelumnya.
-
-
Klik Run Now.
-
Setelah pekerjaan Spark berhasil dijalankan, Anda dapat melihat data dari tabel ApsaraDB RDS for MySQL di log Spark. Untuk informasi cara melihat log, lihat Lihat informasi tentang aplikasi Spark.
Akses data melalui koneksi SSL
Untuk mengakses data di instans ApsaraDB RDS for MySQL melalui koneksi SSL, Anda harus mengaktifkan enkripsi SSL pada instans tersebut dan memastikan titik akhir internal telah dienkripsi. Untuk informasi selengkapnya, lihat Aktifkan enkripsi SSL untuk instans ApsaraDB RDS for MySQL.
Unduh dan unggah sertifikat CA
-
Masuk ke Konsol ApsaraDB RDS. Di pojok kiri atas, pilih wilayah instans Anda. Di panel navigasi sebelah kiri, klik Instances, lalu klik ID instans target.
-
Di panel navigasi sebelah kiri, klik Security Controls.
-
Klik Download CA Certificate.
PentingSertifikat CA berlaku selama satu tahun. Untuk mempertahankan akses SSL, Anda harus mengganti sertifikat sebelum masa berlakunya habis.
-
Ekstrak paket sertifikat CA dan unggah file JKS ke OSS. Untuk informasi selengkapnya, lihat Unggah objek.
Unggah driver dan dependensi JAR
-
Buat program contoh untuk mengakses tabel ApsaraDB RDS for MySQL, lalu kompilasi dan buat paketnya. Dalam contoh ini, paket JAR yang dihasilkan diberi nama
test.jar. Kode contoh berikut digunakan:package org.example import org.apache.spark.sql.SparkSession object Test { def main(args: Array[String]): Unit = { // Jalur OSS file JKS, misalnya oss://testBucketName/folder/ApsaraDB-CA-Chain.jks. val JKS_FILE_PATH = args(0) // Username untuk menghubungkan ke database ApsaraDB RDS for MySQL. val USERNAME = args(1) // Password untuk username database. val PASSWORD = args(2) // Nama database ApsaraDB RDS for MySQL. val DATABASE_NAME = args(3) // Nama tabel dalam database. val TABLE_NAME = args(4) // Titik akhir internal instans ApsaraDB RDS for MySQL. val mysqlUrl = "jdbc:mysql://rm-bp11mpql1e01****.mysql.rds.aliyuncs.com:3306/?" + "useSSL=true" + s"&trustCertificateKeyStoreUrl=file:///tmp/testBucketName/folder/ApsaraDB-CA-Chain.jks" + "&trustCertificateKeyStorePassword=apsaradb" + "&trustCertificateKeyStoreType=JKS" val spark = SparkSession.builder().getOrCreate() spark.read.format("jdbc") .option("driver", "com.mysql.cj.jdbc.Driver") .option("url", mysqlUrl) .option("user", USERNAME) .option("password", PASSWORD) .option("dbtable", s"${DATABASE_NAME}.${TABLE_NAME}") .load() .show() } }Tabel berikut menjelaskan parameter koneksi tersebut.
Parameter
Deskripsi
useSSL
Menentukan apakah akan menggunakan koneksi terenkripsi SSL. Nilai yang valid:
-
true: Menggunakan koneksi terenkripsi SSL.
-
false (default): Tidak menggunakan koneksi terenkripsi SSL.
Dalam contoh ini, atur parameter ini ke true.
trustCertificateKeyStoreUrl
Jalur lokal file sertifikat JKS dalam format
file:///tmp/<JKS_FILE_PATH>, di mana<JKS_FILE_PATH>adalah jalur OSS sertifikat JKS.Misalnya, jika jalur OSS sertifikat JKS adalah
oss://testBucketName/folder/ApsaraDB-CA-Chain.jks, maka jalur lokalnya adalahfile:///tmp/testBucketName/folder/ApsaraDB-CA-Chain.jks.trustCertificateKeyStorePassword
Password sertifikat JKS. Nilainya tetap apsaradb.
trustCertificateKeyStoreType
Format penyimpanan sertifikat. Nilainya tetap JKS.
-
-
Unggah paket
test.jarke OSS. Untuk informasi selengkapnya, lihat Unggah objek.
Akses dalam akun yang sama
Masuk ke Konsol AnalyticDB for MySQL. Di pojok kiri atas konsol, pilih wilayah. Di panel navigasi sebelah kiri, klik Clusters. Temukan kluster yang ingin Anda kelola dan klik ID kluster tersebut.
-
Di panel navigasi sebelah kiri, klik .
-
Di atas editor, pilih kelompok sumber daya pekerjaan dan jenis pekerjaan. Topik ini menggunakan Batch sebagai contoh.
-
Masukkan konfigurasi pekerjaan berikut di editor.
{ "file": "oss://testBucketName/test.jar", "className": "org.example.Test", "name": "MYSQL SSL Test", "conf": { "spark.kubernetes.driverEnv.ADB_SPARK_DOWNLOAD_FILES": "oss://testBucketName/folder/ApsaraDB-CA-Chain.jks", "spark.executorEnv.ADB_SPARK_DOWNLOAD_FILES": "oss://testBucketName/folder/ApsaraDB-CA-Chain.jks", "spark.driver.resourceSpec": "small", "spark.executor.instances": 1, "spark.executor.resourceSpec": "small", "spark.adb.eni.enabled": "true", "spark.adb.eni.vswitchId": "vsw-bp17jqw3lrrobn6y****", "spark.adb.eni.securityGroupId": "sg-bp163uxgt4zandx****" } }Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
name
Nama pekerjaan Spark.
file
Jalur OSS file JAR dependensi pekerjaan Spark.
className
Nama kelas entri program Java atau Scala.
Contoh ini menggunakan org.example.Test.
spark.kubernetes.driverEnv.ADB_SPARK_DOWNLOAD_FILES
Parameter driver Spark yang menentukan jalur OSS file sertifikat JKS. Untuk menentukan beberapa file sertifikat JKS, pisahkan jalurnya dengan koma. Contoh:
spark.kubernetes.driverEnv.ADB_SPARK_DOWNLOAD_FILES: "oss://testBucketName/a.jks,oss://testBucketName/b.jks".spark.executorEnv.ADB_SPARK_DOWNLOAD_FILES
Parameter executor Spark yang menentukan jalur OSS file sertifikat JKS. Untuk menentukan beberapa file sertifikat JKS, pisahkan jalurnya dengan koma. Contoh:
spark.executorEnv.ADB_SPARK_DOWNLOAD_FILES: "oss://testBucketName/a.jks,oss://testBucketName/b.jks".spark.adb.eni.enabled
Menentukan apakah akan mengaktifkan akses melalui ENI. Atur ke true untuk mengaktifkan.
spark.adb.eni.vswitchId
ID vSwitch. Pada halaman Database Connection instans ApsaraDB RDS for MySQL, arahkan kursor ke VPC untuk mendapatkan ID vSwitch.
spark.adb.eni.securityGroupId
ID grup keamanan tempat instans ApsaraDB RDS for MySQL ditambahkan. Jika belum menambahkan grup keamanan, lihat Atur aturan grup keamanan.
Parameter conf lainnya
Konfigurasi ini sebagian besar sama dengan Spark open-source. Parameter dalam format
key:value. Pisahkan beberapa parameter dengan koma. Untuk informasi selengkapnya tentang parameter konfigurasi aplikasi, lihat Parameter konfigurasi aplikasi Spark. -
Klik Run Now.
-
Setelah pekerjaan Spark berhasil dijalankan, Anda dapat melihat data dari tabel ApsaraDB RDS for MySQL di log Spark. Untuk informasi cara melihat log, lihat Lihat informasi tentang aplikasi Spark.
Akses lintas akun
Masuk ke Konsol AnalyticDB for MySQL. Di pojok kiri atas konsol, pilih wilayah. Di panel navigasi sebelah kiri, klik Clusters. Temukan kluster yang ingin Anda kelola dan klik ID kluster tersebut.
-
Di panel navigasi sebelah kiri, klik .
-
Di atas editor, pilih kelompok sumber daya pekerjaan dan jenis pekerjaan. Topik ini menggunakan Batch sebagai contoh.
-
Masukkan konfigurasi pekerjaan berikut di editor.
{ "file": "oss://testBucketName/test.jar", "className": "org.example.Test", "name": "MYSQL SSL Test", "conf": { "spark.kubernetes.driverEnv.ADB_SPARK_DOWNLOAD_FILES": "oss://testBucketName/folder/ApsaraDB-CA-Chain.jks", "spark.executorEnv.ADB_SPARK_DOWNLOAD_FILES": "oss://testBucketName/folder/ApsaraDB-CA-Chain.jks", "spark.driver.resourceSpec": "small", "spark.executor.instances": 1, "spark.executor.resourceSpec": "small", "spark.adb.eni.enabled": "true", "spark.adb.eni.vswitchId": "vsw-bp17jqw3lrrobn6y****", "spark.adb.eni.securityGroupId": "sg-bp163uxgt4zandx****", "spark.adb.eni.roleArn": "acs:ram::testAccountID:role/testUserName" } }Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
spark.adb.eni.roleArn
Peran RAM yang digunakan untuk akses lintas akun ke sumber data ApsaraDB RDS for MySQL. Pisahkan beberapa peran dengan koma (,). Formatnya adalah
acs:ram::testAccountID:role/testUserName.-
testAccountID: ID akun Alibaba Cloud pemilik sumber data ApsaraDB RDS for MySQL. -
testUserName: Peran RAM yang dibuat untuk otorisasi lintas akun. Untuk informasi selengkapnya, lihat Otorisasi lintas akun.
Untuk informasi selengkapnya tentang parameter lainnya, lihat tabel deskripsi parameter pada bagian sebelumnya.
-
-
Klik Run Now.
-
Setelah pekerjaan Spark berhasil dijalankan, Anda dapat melihat data dari tabel ApsaraDB RDS for MySQL di log Spark. Untuk informasi cara melihat log, lihat Lihat informasi tentang aplikasi Spark.