AnalyticDB for MySQL allows you to use external tables to import and export data. This topic describes how to use external tables of AnalyticDB MySQL to export data from an AnalyticDB for MySQL cluster to an ApsaraDB RDS for MySQL instance.

Prerequisites

  • The ApsaraDB RDS for MySQL instance and the AnalyticDB MySQL cluster are deployed in the same virtual private cloud (VPC). The CIDR block of the VPC is included in an IP address whitelist of the ApsaraDB RDS for MySQL instance. For more information, see Configure an IP address whitelist for an ApsaraDB RDS for MySQL instance.
  • A database is created on the ApsaraDB RDS for MySQL instance, and you have logged on to the database. Test data is prepared. For more information, see Create a database and Connect to an ApsaraDB RDS for MySQL instance.
    In this example, a database named test_adb is used as the destination database in the ApsaraDB RDS for MySQL instance. A table named courses is created in the database. The table is used to store data that is exported from the AnalyticDB MySQL cluster. The following statement is used to create the destination table:
    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)
    );
  • Optional. If the AnalyticDB MySQL cluster is in elastic mode, you must turn on ENI in the Network Information section of the Cluster Information page. Enable ENI

Procedure

  1. Connect to the AnalyticDB MySQL cluster. For more information, see Connect to an AnalyticDB for MySQL cluster.
  2. Create a source database. For more information, see Create a database.

    In this example, a database named adb_demo is used as the source database in the AnalyticDB MySQL cluster.

  3. Create a source table and insert data into the source table.

    Execute the following statement to create a source table named courses in the adb_demo source database. Then, export data in the source table to the courses table in the test_adb destination database.

    CREATE TABLE courses (
    id bigint AUTO_INCREMENT,
    name varchar NOT NULL,
    grade varchar DEFAULT '1st Grade',
    submission_date timestamp
    ) DISTRIBUTE BY HASH(id);
    Execute the following statement to insert a row of data into the courses source table:
    INSERT INTO courses (name,submission_date) VALUES("Jams",NOW());
  4. Create an external mapping table.
    Execute the following statement to create an external mapping table named courses_external_table in the adb_demo source database:
     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"
    }';
    Parameter Description
    ENGINE='mysql' The storage engine used for the external table. In this example, MySQL is used.
    TABLE_PROPERTIES The connection information used by the AnalyticDB MySQL cluster to access the data in the ApsaraDB RDS for MySQL instance.
    url The VPC endpoint of the ApsaraDB RDS for MySQL instance and the name of the destination database. In this example, the name of the destination database is test_adb. For more information about how to view the VPC endpoint of the ApsaraDB RDS for MySQL instance, see View and change the internal and public endpoints and port numbers of an ApsaraDB RDS for MySQL instance.

    The endpoint is in the "jdbc:mysql://mysql-vpc-address:3306/rds-database-name" format.

    Example: jdbc:mysql://rm-****************.mysql.rds.aliyuncs.com:3306/test_adb

    tablename The name of the destination table in the destination ApsaraDB RDS for MySQL database. In this example, courses is used.
    username The account used to connect to the destination database in the ApsaraDB RDS for MySQL instance.
    password The password of the preceding account.
  5. Import data from the AnalyticDB MySQL cluster to the ApsaraDB RDS for MySQL instance.
    Execute the following statement:
    REPLACE INTO courses_external_table
    SELECT * FROM courses;

What to do next

After the data is imported, you can log on to the test_adb destination database in the ApsaraDB RDS for MySQL instance. Then, execute the following statement to check whether the data is imported from the source table to the courses destination table:
SELECT * FROM courses LIMIT 100;