AnalyticDB for MySQL memungkinkan Anda mengakses ApsaraDB RDS for MySQL dalam satu akun Alibaba Cloud atau lintas akun. Anda dapat mengakses ApsaraDB RDS for MySQL melalui antarmuka jaringan elastis (ENI) atau koneksi SSL. Dibandingkan dengan akses berbasis ENI, akses berbasis SSL menyediakan enkripsi koneksi jaringan dan menjamin keamanan data yang lebih tinggi. Topik ini menjelaskan cara mengakses ApsaraDB RDS for MySQL melalui ENI dan koneksi SSL.
Prasyarat
Sebuah kluster AnalyticDB for MySQL Enterprise Edition, Basic Edition, atau Data Lakehouse Edition telah dibuat.
Sebuah instans ApsaraDB RDS for MySQL telah dibuat di wilayah yang sama dengan kluster AnalyticDB for MySQL. Untuk informasi lebih lanjut, lihat Buat kluster dan Buat instans ApsaraDB RDS for MySQL.
Grup sumber daya tugas telah dibuat untuk kluster AnalyticDB for MySQL.
Akun database telah dibuat untuk kluster AnalyticDB for MySQL.
Jika menggunakan akun Alibaba Cloud, cukup buat akun istimewa.
Jika 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 telah ditambahkan ke grup keamanan. Aturan masuk dan keluar dari grup keamanan mengizinkan permintaan dari port instans ApsaraDB RDS for MySQL. Untuk informasi lebih lanjut, lihat Konfigurasikan grup keamanan untuk instans ApsaraDB RDS for MySQL dan Tambahkan aturan grup keamanan.
Object Storage Service (OSS) telah diaktifkan dan bucket telah dibuat di wilayah yang sama dengan kluster AnalyticDB for MySQL. Untuk informasi lebih lanjut, lihat Aktifkan OSS dan Buat bucket.
Otorisasi telah selesai. Untuk informasi lebih lanjut, lihat Berikan izin kepada pengguna RAM.
PentingUntuk mengakses data dalam satu akun Alibaba Cloud, Anda harus memiliki izin AliyunADBSparkProcessingDataRole. Untuk mengakses data lintas akun Alibaba Cloud, Anda harus melakukan otorisasi untuk akun Alibaba Cloud lainnya.
Persiapkan data
Buat database di instans ApsaraDB RDS for MySQL, buat tabel di database tersebut, lalu tulis data ke tabel ini. Contoh pernyataan:
CREATE DATABASE `test`;
CREATE TABLE `test`.`persons` (
`id` int(11) DEFAULT NULL,
`first_name` varchar(32) DEFAULT NULL,
`laster_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 ApsaraDB RDS for MySQL melalui ENI
Unggah driver dan paket JAR yang diperlukan untuk tugas Spark
Tulis program yang digunakan untuk mengakses tabel di instans ApsaraDB RDS for MySQL. Kemudian, kompilasi program menjadi paket JAR yang diperlukan untuk tugas Spark. Dalam contoh ini, paket JAR diberi nama
rds_test.jar. Contoh kode: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 lebih lanjut, lihat Lihat dan ubah titik akhir dan nomor port. val url = "jdbc:mysql://rm-bp11mpql1e01****.mysql.rds.aliyuncs.com" // Nama tabel di instans ApsaraDB RDS for MySQL. Tentukan nama dalam format db_name.table_name. val dbtable = "test.persons" // Akun database yang digunakan untuk terhubung ke database ApsaraDB RDS for MySQL. val user = "mysql_username" // Kata sandi akun 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 mesin instans ApsaraDB RDS for MySQL dari https://dev.mysql.com/downloads/connector/j/.
Dalam contoh ini, mysql-connector-java-8.0.11.jar diunduh.
Unggah paket JAR dan driver ke OSS. Untuk informasi lebih lanjut, lihat Unggah objek.
Akses ApsaraDB RDS for MySQL dalam satu akun Alibaba Cloud
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.
Di panel navigasi di sebelah kiri, pilih .
Pilih grup sumber daya tugas dan jenis tugas untuk tugas Spark. Dalam contoh ini, jenis Batch dipilih.
Jalankan kode berikut di editor Spark:
{ "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
Deskripsi
name
Nama tugas Spark.
jars
Jalur OSS driver ApsaraDB RDS for MySQL.
Dalam contoh ini, jalur OSS paket mysql-connector-java-8.0.11.jar digunakan.
file
Jalur OSS paket JAR yang diperlukan untuk tugas Spark.
className
Kelas entri aplikasi Java atau Scala.
Dalam contoh ini, com.aliyun.spark.SparkRDS digunakan.
spark.adb.eni.enabled
Menentukan apakah ENI diaktifkan.
spark.adb.eni.vswitchId
ID vSwitch instans ApsaraDB RDS for MySQL. Untuk melihat ID vSwitch, arahkan kursor ke VPC pada halaman Database Connection.
spark.adb.eni.securityGroupId
ID grup keamanan tempat instans ApsaraDB RDS for MySQL ditambahkan. Untuk informasi lebih lanjut, lihat Konfigurasikan grup keamanan untuk instans ApsaraDB RDS for MySQL.
conf
Parameter konfigurasi yang diperlukan untuk tugas Spark, yang mirip dengan Apache Spark. Parameter harus dalam format
key:value. Pisahkan beberapa parameter dengan koma (,). Untuk informasi lebih lanjut, lihat Parameter konfigurasi aplikasi Spark.Klik Run Now.
Setelah tugas Spark dijalankan, lihat data tabel ApsaraDB RDS for MySQL di log tugas Spark. Untuk informasi lebih lanjut, lihat bagian "Lihat informasi tentang aplikasi Spark" dari topik editor Spark.
Akses ApsaraDB RDS for MySQL lintas akun Alibaba Cloud
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.
Di panel navigasi di sebelah kiri, pilih .
Pilih grup sumber daya tugas dan jenis tugas untuk tugas Spark. Dalam contoh ini, jenis Batch dipilih.
Jalankan kode berikut di editor Spark:
{ "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
Deskripsi
spark.adb.eni.roleArn
Peran RAM yang digunakan untuk mengakses ApsaraDB RDS for MySQL lintas akun Alibaba Cloud. Pisahkan beberapa peran dengan koma (,). Tentukan parameter dalam format
acs:ram::testAccountID:role/testUserName.testAccountID: ID akun Alibaba Cloud yang memiliki sumber data ApsaraDB RDS for MySQL.testUserName: nama peran RAM yang dibuat saat Anda melakukan otorisasi lintas akun Alibaba Cloud. Untuk informasi lebih lanjut, lihat bagian "Lakukan otorisasi lintas akun Alibaba Cloud" dari topik Lakukan otorisasi.
Untuk informasi lebih lanjut tentang parameter, lihat tabel parameter sebelumnya.
Klik Run Now.
Setelah tugas Spark dijalankan, lihat data tabel ApsaraDB RDS for MySQL di log tugas Spark. Untuk informasi lebih lanjut, lihat bagian "Lihat informasi tentang aplikasi Spark" dari topik editor Spark.
Akses ApsaraDB RDS for MySQL melalui koneksi SSL
Sebelum mengakses ApsaraDB RDS for MySQL melalui koneksi SSL, pastikan bahwa enkripsi SSL diaktifkan untuk instans ApsaraDB RDS for MySQL dan koneksi ke titik akhir internal dienkripsi. Untuk informasi lebih lanjut, lihat Konfigurasikan fitur enkripsi SSL.
Unduh sertifikat CA dari konsol ApsaraDB RDS dan unggah sertifikat ke OSS
Masuk ke Konsol ApsaraDB RDS. Di pojok kiri atas konsol, pilih wilayah. Di panel navigasi di sebelah kiri, klik Instances. Pada halaman yang muncul, klik ID instans yang ingin Anda lihat.
Di panel navigasi di sebelah kiri, klik Data Security.
Klik Download CA Certificate.
PentingMasa berlaku default sertifikat CA adalah satu tahun. Jika sertifikat CA kedaluwarsa, Anda harus membuat sertifikat baru. Anda tidak dapat menggunakan sertifikat CA yang kedaluwarsa untuk mengakses ApsaraDB RDS for MySQL melalui koneksi SSL.
Ekstrak paket sertifikat CA dan unggah file sertifikat JKS yang telah diekstraksi ke OSS. Untuk informasi lebih lanjut, lihat Unggah objek.
Unggah driver dan paket JAR yang diperlukan untuk tugas Spark
Tulis program yang digunakan untuk mengakses tabel di instans ApsaraDB RDS for MySQL. Kemudian, kompilasi program menjadi paket JAR yang diperlukan untuk tugas Spark. Dalam contoh ini, paket JAR diberi nama
test.jar. Contoh kode:package org.example import org.apache.spark.sql.SparkSession object Test { def main(args: Array[String]): Unit = { // Jalur OSS file sertifikat JKS, dalam format oss://testBucketName/folder/ApsaraDB-CA-Chain.jks. val JKS_FILE_PATH = args(0) // Akun database yang digunakan untuk terhubung ke database ApsaraDB RDS for MySQL. val USERNAME = args(1) // Kata sandi akun database. val PASSWORD = args(2) Nama database ApsaraDB RDS for MySQL. val DATABASE_NAME = args(3) // Nama tabel di instans ApsaraDB RDS for MySQL. 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.
Parameter
Deskripsi
useSSL
Menentukan apakah enkripsi SSL diaktifkan. Nilai yang valid:
true
false (default)
Dalam contoh ini, true dipilih.
trustCertificateKeyStoreUrl
Jalur lokal file sertifikat JKS, dalam format
file:///tmp/<JKS_FILE_PATH>.JKS_FILE_PATHmenentukan jalur OSS file sertifikat JKS.Sebagai contoh, jika jalur OSS file sertifikat JKS adalah
oss://testBucketName/folder/ApsaraDB-CA-Chain.jks, jalur lokal file sertifikat JKS adalahfile:///tmp/testBucketName/folder/ApsaraDB-CA-Chain.jks.trustCertificateKeyStorePassword
Kata sandi file sertifikat JKS. Nilai parameter ini adalah apsaradb.
trustCertificateKeyStoreType
Format penyimpanan file sertifikat. Nilai parameter ini adalah JKS.
Unggah paket
test.jarke OSS. Untuk informasi lebih lanjut, lihat Unggah objek.
Akses ApsaraDB RDS for MySQL dalam satu akun Alibaba Cloud
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.
Di panel navigasi di sebelah kiri, pilih .
Pilih grup sumber daya tugas dan jenis tugas untuk tugas Spark. Dalam contoh ini, jenis Batch dipilih.
Jalankan kode berikut di editor Spark:
{ "file": "oss://testBucketName/test.jar", "className": "org.example.Test", "name": "MYSQL PEM 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
Deskripsi
name
Nama tugas Spark.
file
Jalur OSS paket JAR yang diperlukan untuk tugas Spark.
className
Kelas entri aplikasi Java atau Scala.
Dalam contoh ini, org.example.Test digunakan.
spark.kubernetes.driverEnv.ADB_SPARK_DOWNLOAD_FILES
Parameter driver Spark, yang menentukan jalur OSS file sertifikat JKS. Pisahkan beberapa file sertifikat JKS 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. Pisahkan beberapa file sertifikat JKS dengan koma (,). Contoh:
spark.executor.ADB_SPARK_DOWNLOAD_FILES: "oss://testBucketName/a.jks,oss://testBucketName/b.jks".spark.adb.eni.enabled
Menentukan apakah ENI diaktifkan.
spark.adb.eni.vswitchId
ID vSwitch instans ApsaraDB RDS for MySQL. Untuk melihat ID vSwitch, arahkan kursor ke VPC pada halaman Database Connection.
spark.adb.eni.securityGroupId
ID grup keamanan tempat instans ApsaraDB RDS for MySQL ditambahkan. Untuk informasi lebih lanjut, lihat Konfigurasikan grup keamanan untuk instans ApsaraDB RDS for MySQL.
conf
Parameter konfigurasi yang diperlukan untuk tugas Spark, yang mirip dengan Apache Spark. Parameter harus dalam format
key:value. Pisahkan beberapa parameter dengan koma (,). Untuk informasi lebih lanjut, lihat Parameter konfigurasi aplikasi Spark.Klik Run Now.
Setelah tugas Spark dijalankan, lihat data tabel ApsaraDB RDS for MySQL di log tugas Spark. Untuk informasi lebih lanjut, lihat bagian "Lihat informasi tentang aplikasi Spark" dari topik editor Spark.
Akses ApsaraDB RDS for MySQL lintas akun Alibaba Cloud
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.
Di panel navigasi sebelah kiri, pilih .
Pilih grup sumber daya tugas dan jenis tugas untuk tugas Spark. Dalam contoh ini, jenis Batch dipilih.
Jalankan kode berikut di editor Spark:
{ "file": "oss://testBucketName/test.jar", "className": "org.example.Test", "name": "MYSQL PEM 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
Deskripsi
spark.adb.eni.roleArn
Peran RAM yang digunakan untuk mengakses ApsaraDB RDS for MySQL lintas akun Alibaba Cloud. Pisahkan beberapa peran dengan koma (,). Tentukan parameter dalam format
acs:ram::testAccountID:role/testUserName.testAccountID: ID akun Alibaba Cloud yang memiliki sumber data ApsaraDB RDS for MySQL.testUserName: nama peran RAM yang dibuat saat Anda melakukan otorisasi lintas akun Alibaba Cloud. Untuk informasi lebih lanjut, lihat bagian "Lakukan otorisasi lintas akun Alibaba Cloud" dari topik Lakukan otorisasi.
Untuk informasi lebih lanjut tentang parameter, lihat tabel parameter sebelumnya.
Klik Run Now.
Setelah tugas Spark dijalankan, lihat data tabel ApsaraDB RDS for MySQL di log tugas Spark. Untuk informasi lebih lanjut, lihat bagian "Lihat informasi tentang aplikasi Spark" dari topik editor Spark.