本文介绍如何在云原生数据仓库AnalyticDB MySQL版湖仓版(3.0)中读写RDS MySQL数据。

前提条件

  • 已创建RDS MySQL实例。详细操作步骤,请参见创建RDS MySQL实例
  • 已在RDS MySQL实例所在的同一VPC中创建AnalyticDB MySQL湖仓版(3.0)集群。详细操作步骤,请参见创建湖仓版(3.0)集群
  • 已在AnalyticDB MySQL控制台集群信息页面的网络信息栏启用ENI网络开关。
  • 已将AnalyticDB MySQL的VPC网段加入RDS MySQL实例的白名单中。详细操作步骤,请参见设置RDS的IP白名单

示例数据说明

本文示例的RDS MySQL数据库名为test_adb,并在该库中创建了一张名为person的表,示例如下:
CREATE TABLE IF NOT EXISTS test_adb.person(
id int,
name varchar(1023),
age int
);
person表中插入数据,示例如下:
INSERT INTO test_adb.person values
(1, 'james', 10),
(2, 'bond', 20),
(3, 'jack', 30),
(4, 'lucy', 40);

操作步骤

  1. 进入SQL开发编辑器。
    1. 登录云原生数据仓库AnalyticDB MySQL控制台
    2. 在页面左上角,选择集群所在地域。
    3. 在左侧导航栏,单击集群列表
    4. 湖仓版(3.0)页签下,单击目标集群ID
    5. 在左侧导航栏,单击作业开发 > SQL开发
  2. 引擎选择Xihe,资源组选择Interactive型资源组。
  3. 执行以下语句,创建外部数据库。示例如下:
    CREATE EXTERNAL DATABASE adb_external_db;
  4. 执行以下语句,创建外表。示例如下:
    说明
    • AnalyticDB MySQL外表和RDS MySQL中表的列名称、数量、顺序、字段类型需要相同。
    • AnalyticDB MySQL外表的参数说明,请参见CREATE EXTERNAL TABLE
    CREATE EXTERNAL TABLE IF NOT EXISTS  adb_external_db.person (
        id int,
        name varchar(1023),
        age int
     )ENGINE = 'MYSQL' TABLE_PROPERTIES = '{
       "url":"jdbc:mysql://mysql-address:3306/test_adb",
       "tablename":"person",
       "username":"mysql-user-name",
       "password":"mysql-user-password",
       "charset":"utf8"
    }';
  5. 查询数据。
    外表创建成功后,您可以在AnalyticDB MySQL中通过SELECT查询RDS MySQL中person表的数据。
    SELECT * FROM adb_external_db.person;
    返回结果如下:
    +------+-------+------+
    | id   | name  | age  |
    +------+-------+------+
    |    1 | james |   10 |
    |    2 | bond  |   20 |
    |    3 | jack  |   30 |
    |    4 | lucy  |   40 |
    +------+-------+------+
    4 rows in set (0.35 sec)
  6. 将数据写入RDS MySQL。
    INSERT INTO adb_external_db.person SELECT 5, 'lily', 20;
  7. 执行以下语句,创建目标数据库。
    CREATE DATABASE adb_demo;
  8. 执行以下语句,在目标数据库adb_demo中创建一张名为mysql_import_test的目标表,用于存储从RDS MySQL导入的数据。
    CREATE TABLE IF NOT EXISTS  mysql_import_test (
        id int,
        name varchar(1023),
        age int,
       PRIMARY KEY (id)
     )
    DISTRIBUTED BY HASH(id);
  9. 执行以下语句,将RDS MySQL实例中的数据导入至目标AnalyticDB MySQL集群中。
    INSERT INTO mysql_import_test
    SELECT * FROM adb_external_db.person;
  10. 执行以下语句,查询AnalyticDB MySQLmysql_import_test数据。
    SELECT * FROM mysql_import_test;
    返回结果如下:
    +------+-------+------+
    | id   | name  | age  |
    +------+-------+------+
    |    1 | james |   10 |
    |    2 | bond  |   20 |
    |    4 | lucy  |   40 |
    |    5 | lily  |   20 |
    |    3 | jack  |   30 |
    +------+-------+------+
    5 rows in set (0.37 sec)