Todos os produtos
Search
Central de documentação

AnalyticDB:Acessar o ApsaraDB RDS for MySQL

Última atualização: Jun 27, 2026

O AnalyticDB for MySQL Data Lakehouse Edition conecta-se ao ApsaraDB RDS for MySQL por meio de jobs do Spark usando dois métodos: interface de rede elástica (ENI) ou conexão SSL. O acesso via ENI é mais simples de configurar. O acesso via SSL adiciona criptografia na camada de transporte, ideal para ambientes com requisitos de segurança de dados mais rigorosos. Ambos os métodos oferecem suporte a cenários de mesma conta e entre contas.

Escolha um método de conexão

Método

Quando usar

Segurança

ENI

A instância RDS e o cluster AnalyticDB estão na mesma VPC, ou o acesso entre contas com uma função RAM é aceitável

Isolamento padrão no nível da VPC

SSL

Políticas de conformidade exigem conexões criptografadas ou os dados são altamente sensíveis

Criptografia na camada de transporte (SSL) adicional à VPC

Pré-requisitos

Antes de começar, verifique se você tem:

Configuração do cluster e da instância:

Contas e permissões:

Rede e segurança:

Importante

O acesso na mesma conta requer a permissão AliyunADBSparkProcessingDataRole. O acesso entre contas exige autorização adicional para as outras contas Alibaba Cloud.

Preparar dados

Execute as instruções a seguir na instância do ApsaraDB RDS for MySQL para criar o banco de dados e a tabela de exemplo usados neste tópico:

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);

Acessar o ApsaraDB RDS for MySQL via ENI

Todos os exemplos nesta seção usam spark.adb.eni.enabled: true para rotear o tráfego do job Spark por uma interface de rede elástica até a instância RDS.

Etapa 1: Preparar o driver e o pacote JAR

  1. Escreva um programa Spark que leia dados da tabela RDS e compile-o em um pacote JAR. O exemplo abaixo gera um JAR chamado rds_test.jar:

    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()
        // Internal endpoint of the ApsaraDB RDS for MySQL instance.
        // See "View and change the endpoints and port numbers" for details.
        val url = "jdbc:mysql://rm-bp11mpql1e01****.mysql.rds.aliyuncs.com"
        // Table name in db_name.table_name format
        val dbtable = "test.persons"
        // Database account credentials — pass via args or environment variables in production
        val user = "mysql_username"
        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()
      }
    }
  2. Baixe o driver MySQL Connector/J compatível com a versão do mecanismo da instância RDS em https://dev.mysql.com/downloads/connector/j/. Este exemplo usa mysql-connector-java-8.0.11.jar.

  3. Envie o pacote JAR (rds_test.jar) e o driver (mysql-connector-java-8.0.11.jar) para o bucket do OSS. Consulte Fazer upload de objetos.

Etapa 2: Enviar o job Spark

Acesso na mesma conta

  1. Faça login no console do AnalyticDB for MySQL. No canto superior esquerdo, selecione uma região. No painel de navegação à esquerda, clique em Clusters. Na página Clusters, clique na aba da edição desejada, localize o cluster e clique no ID correspondente.

  2. No painel de navegação à esquerda, escolha Job Development > Spark JAR Development.

  3. Selecione um grupo de recursos de job e defina o tipo de job como Batch.

  4. Cole a configuração a seguir no editor Spark e substitua os valores de espaço reservado:

    Parâmetro

    Obrigatório

    Descrição

    name

    Sim

    Nome do job Spark

    jars

    Sim

    Caminho no OSS do JAR do driver MySQL Connector/J

    file

    Sim

    Caminho no OSS do pacote JAR do job Spark

    className

    Sim

    Classe de entrada da aplicação Java ou Scala. Neste exemplo: com.aliyun.spark.SparkRDS

    conf

    Sim

    Parâmetros de configuração do Spark no formato key:value, separados por vírgulas. Consulte Parâmetros de configuração de aplicação Spark

    spark.adb.eni.enabled

    Sim

    Defina como true para ativar o roteamento via ENI

    spark.adb.eni.vswitchId

    Sim

    ID do vSwitch da instância RDS. Para encontrá-lo, passe o ponteiro do mouse sobre VPC na página Database Connection

    spark.adb.eni.securityGroupId

    Sim

    ID do grupo de segurança da instância RDS. Consulte Configure um grupo de segurança para uma instância do ApsaraDB RDS for MySQL

    spark.driver.resourceSpec

    Sim

    Especificação de recursos para o driver Spark

    spark.executor.instances

    Sim

    Número de instâncias de executor Spark

    spark.executor.resourceSpec

    Sim

    Especificação de recursos para cada executor 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"
        }
    }
  5. Clique em Run Now.

  6. Após a conclusão do job, visualize o resultado nos logs do job Spark. Consulte a seção Visualize informações sobre uma aplicação Spark no tópico do editor Spark.

Acesso entre contas

Siga as etapas 1 a 3 de Acesso na mesma conta e use a configuração abaixo. Ela adiciona spark.adb.eni.roleArn para assumir uma função RAM na conta proprietária da instância RDS.

{
    "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"
    }
}

Parâmetro

Obrigatório

Descrição

spark.adb.eni.roleArn

Sim (apenas entre contas)

ARN da função RAM usada para acessar a instância RDS entre contas. Separe vários ARNs com vírgulas. Formato: acs:ram::testAccountID:role/testUserName, onde testAccountID é o ID da conta proprietária da instância RDS e testUserName é o nome da função RAM criada durante a autorização entre contas. Consulte Realizar autorização entre contas Alibaba Cloud

Os demais parâmetros são iguais aos da configuração de mesma conta acima.

Clique em Run Now e visualize o resultado nos logs do job Spark.

Acessar o ApsaraDB RDS for MySQL via conexão SSL

Antes de prosseguir, ative a criptografia SSL na instância do ApsaraDB RDS for MySQL e certifique-se de que a conexão pelo endpoint interno esteja criptografada. Consulte Configure o recurso de criptografia SSL.

Etapa 1: Baixe o certificado CA e envie para o OSS

  1. Faça login no console do ApsaraDB RDS. No canto superior esquerdo, selecione uma região. No painel de navegação à esquerda, clique em Instances e clique no ID da instância.

  2. No painel de navegação à esquerda, clique em Data Security.

  3. Clique em Download CA Certificate.

    Importante

    O certificado CA tem validade de um ano. Após o vencimento, gere um novo. Não é possível estabelecer uma conexão SSL com um certificado expirado.

  4. Descompacte o pacote baixado e envie o arquivo JKS extraído (ApsaraDB-CA-Chain.jks) para o bucket do OSS. Consulte Fazer upload de objetos.

Etapa 2: Preparar o pacote JAR do Spark

Escreva um programa Spark que se conecte ao RDS via SSL e compile-o em test.jar. O programa lê o caminho do certificado JKS e as credenciais do banco de dados pelos argumentos da linha de comando, evitando valores sensíveis no source:

package org.example
import org.apache.spark.sql.SparkSession

object Test {
  def main(args: Array[String]): Unit = {
    // OSS path of the JKS certificate file, e.g. oss://testBucketName/folder/ApsaraDB-CA-Chain.jks
    val JKS_FILE_PATH = args(0)
    // Database account credentials
    val USERNAME = args(1)
    val PASSWORD = args(2)
    // Database and table names
    val DATABASE_NAME = args(3)
    val TABLE_NAME = args(4)

    // Internal endpoint of the ApsaraDB RDS for MySQL instance.
    // The JKS file is downloaded to /tmp/<OSS_PATH> at runtime by the ADB_SPARK_DOWNLOAD_FILES setting.
    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()
  }
}

A URL de conexão JDBC usa os seguintes parâmetros SSL:

Parâmetro

Valor

Obrigatório

Descrição

useSSL

true (padrão: false)

Sim

Ativa a criptografia SSL para a conexão JDBC

trustCertificateKeyStoreUrl

file:///tmp/<JKS_FILE_PATH>

Sim

Caminho local do arquivo de certificado JKS. O ambiente de execução mapeia o caminho do OSS para /tmp/<OSS_PATH>. Por exemplo, oss://testBucketName/folder/ApsaraDB-CA-Chain.jks torna-se file:///tmp/testBucketName/folder/ApsaraDB-CA-Chain.jks

trustCertificateKeyStorePassword

apsaradb

Sim

Senha fixa para o arquivo de certificado JKS

trustCertificateKeyStoreType

JKS

Sim

Formato de armazenamento do certificado

Envie o arquivo test.jar para o bucket do OSS. Consulte Fazer upload de objetos.

Etapa 3: Enviar o job Spark

Acesso na mesma conta

  1. Faça login no console do AnalyticDB for MySQL. Selecione uma região, clique em Clusters, localize o cluster e clique no ID correspondente.

  2. No painel de navegação à esquerda, escolha Job Development > Spark JAR Development.

  3. Selecione um grupo de recursos de job e defina o tipo de job como Batch.

  4. Cole a configuração a seguir no editor Spark:

    Parâmetro

    Obrigatório

    Descrição

    name

    Sim

    Nome do job Spark

    file

    Sim

    Caminho no OSS do pacote JAR do job Spark

    className

    Sim

    Classe de entrada da aplicação Java ou Scala. Neste exemplo: org.example.Test

    conf

    Sim

    Parâmetros de configuração do Spark no formato key:value, separados por vírgulas. Consulte Parâmetros de configuração de aplicação Spark

    spark.kubernetes.driverEnv.ADB_SPARK_DOWNLOAD_FILES

    Sim

    Caminho no OSS do arquivo de certificado JKS para o driver Spark. Separe vários arquivos com vírgulas. Exemplo: oss://testBucketName/a.jks,oss://testBucketName/b.jks

    spark.executorEnv.ADB_SPARK_DOWNLOAD_FILES

    Sim

    Caminho no OSS do arquivo de certificado JKS para o executor Spark. Separe vários arquivos com vírgulas

    spark.adb.eni.enabled

    Sim

    Defina como true para ativar o roteamento via ENI

    spark.adb.eni.vswitchId

    Sim

    ID do vSwitch da instância RDS. Encontre-o passando o mouse sobre VPC na página Database Connection

    spark.adb.eni.securityGroupId

    Sim

    ID do grupo de segurança da instância RDS. Consulte Configure um grupo de segurança para uma instância do ApsaraDB RDS for MySQL

    spark.driver.resourceSpec

    Sim

    Especificação de recursos para o driver Spark

    spark.executor.instances

    Sim

    Número de instâncias de executor Spark

    spark.executor.resourceSpec

    Sim

    Especificação de recursos para cada executor 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****"
      }
    }
  5. Clique em Run Now.

  6. Após a conclusão do job, visualize o resultado nos logs do job Spark. Consulte a seção Visualize informações sobre uma aplicação Spark no tópico do editor Spark.

Acesso entre contas

Siga as etapas 1 a 3 de Acesso na mesma conta e adicione spark.adb.eni.roleArn à configuração:

{
  "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"
  }
}

O parâmetro spark.adb.eni.roleArn é o único adicional. Seu formato e comportamento seguem a descrição em Acesso entre contas para o método ENI.

Clique em Run Now e visualize o resultado nos logs do job Spark.

Próximos passos