AnalyticDB MySQL版支持通过外表导入导出数据。本文介绍如何通过AnalyticDB MySQL数仓版(3.0)的外表导出数据至云数据库RDS MySQL。

前提条件

  • RDS MySQL实例需与AnalyticDB MySQL集群在同一个VPC下,且该VPC网段需加入RDS MySQL实例的白名单中。详细操作步骤,请参见设置RDS的IP白名单
  • 需在RDS MySQL实例上完成创建数据库和连接实例等操作,并准备好相关测试数据。详细操作步骤,请参见创建数据库和账号连接RDS MySQL实例
    本文示例中,测试所用的RDS MySQL目标库名为test_adb,并在该库中创建了一张名为courses的目标表,用于存储从AnalyticDB MySQL集群中导出的数据。建表语句如下:
    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)
    );
  • 如果您的AnalyticDB MySQL集群是弹性模式,您需要在集群信息页面的网络信息区域,打开启用ENI网络的开关。启用ENI网络

操作步骤

  1. 连接目标AnalyticDB MySQL集群。详细操作步骤,请参见连接集群
  2. 创建源数据库。详细操作步骤,请参见创建数据库

    本示例中,AnalyticDB MySQL集群的源库名为adb_demo

  3. 创建源表并插入源数据。

    使用以下命令在源库adb_demo中创建一张名为courses的源表,并将该表中的数据导出至RDS MySQL目标库test_adbcourses表中。

    CREATE TABLE courses (
    id bigint AUTO_INCREMENT,
    name varchar NOT NULL,
    grade varchar DEFAULT '1st Grade',
    submission_date timestamp
    ) DISTRIBUTE BY HASH(id);
    使用以下命令往源表courses中插入一行数据:
    INSERT INTO courses (name,submission_date) VALUES("Jams",NOW());
  4. 创建外部映射表。
    使用以下命令在源库adb_demo中创建一张名为courses_external_table的外部映射表。
     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"
    }';
    参数说明
    ENGINE=’mysql’外部表的存储引擎说明,本文使用的是MySQL。
    TABLE_PROPERTIESAnalyticDB MySQL访问RDS MySQL数据的访问方式。
    urlRDS MySQL实例中的内网地址(即VPC连接地址)和目标库名(本文示例中为test_adb),查看RDS地址信息的方法,请参见 查看或修改内外网地址和端口

    格式:"jdbc:mysql://mysql-vpc-address:3306/rds-database-name"

    示例:jdbc:mysql://rm-bp1hem632****.mysql.rds.aliyuncs.com:3306/test_adb

    tablenameRDS MySQL中目标表名,本文示例中为courses
    username需要访问RDS MySQL目标库的账号。
    password以上账号对应的密码。
    charsetMySQL字符集,取值说明:
    • gbk
    • utf8(默认值)
    • utf8mb4
  5. 将源AnalyticDB MySQL集群中的数据导入至目标RDS MySQL实例中。
    语法如下:
    REPLACE INTO courses_external_table
    SELECT * FROM courses;

后续步骤

导入完成后,您可以登录RDS MySQL的目标test_adb库中,执行如下命令查看并验证源表数据是否成功导入至目标courses表中:
SELECT * FROM courses LIMIT 100;