AnalyticDB for MySQL は、外部テーブルを使用したデータのインポートおよびエクスポートをサポートしています。このトピックでは、AnalyticDB for MySQL Data Warehouse Edition クラスターで外部テーブルを使用して、ECS インスタンス上のセルフマネージド MySQL データベースにデータをエクスポートする方法について説明します。
前提条件
-
お使いの AnalyticDB for MySQL クラスターと同じリージョンおよび VPC に ECS インスタンスがあります。
-
ECS インスタンスにセルフマネージド MySQL データベースがインストールされていること。
-
ECS インスタンスのセキュリティグループにインバウンドルールを追加して、ポート 3306 でのセルフマネージド MySQL データベースへのアクセスを許可していること。詳細については、「セキュリティグループルールの追加」をご参照ください。
-
セルフマネージド MySQL データベースにデータベースを作成し、テストデータを準備していること。
この例では、移行先データベースは
test_adbという名前の自己管理型 MySQL データベースです。 このデータベースには、AnalyticDB for MySQL クラスターからエクスポートされたデータを格納するために、coursesという名前の移行先テーブルが作成されます。 次のステートメントを使用してテーブルを作成します。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 for MySQL クラスタがエラスティック モードの場合、クラスター情報 ページの ネットワーク情報 セクションで Eniネットワーク を有効にする必要があります。
重要ENI を有効または無効にすると、データベース接続が約 2 分間中断される場合があります。この間、読み取りまたは書き込み操作を実行することはできません。ENI を有効または無効にする場合は注意してください。
操作手順
AnalyticDB for MySQL クラスタに接続します。詳細については、「AnalyticDB for MySQL クラスタに接続する」をご参照ください。
-
ソースデータベースを作成します。詳細については、「データベースの作成」をご参照ください。
この例では、AnalyticDB for MySQL クラスターのソースデータベースは
adb_demoです。 -
ソーステーブルを作成し、データを挿入します。
次のコマンドを実行して、
adb_demoソースデータベースにcoursesという名前のソーステーブルを作成します。 このテーブルのデータは、test_adb宛先データベースのcoursesテーブルにエクスポートされます。CREATE TABLE courses ( id bigint AUTO_INCREMENT, name varchar NOT NULL, grade varchar DEFAULT '1st Grade', submission_date timestamp ) DISTRIBUTED BY HASH(id);次のステートメントを実行して、ソーステーブル
coursesに 1 行のデータを挿入します。INSERT INTO courses (name,submission_date) VALUES("Jams",NOW()); -
外部テーブルを作成します。
次のステートメントを実行して、
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 for MySQLが自己管理型 MySQL データベースにアクセスするために使用する接続プロパティ。
urlECS インスタンスの プライマリプライベート IP (VPC IP アドレス) と宛先データベース名。この例では、データベース名は
test_adbです。IP アドレスを確認するには、次の手順を実行します。-
ECS コンソールにログインし、対象のインスタンスを見つけます。
-
インスタンスの詳細 ページの ネットワーク情報 セクションで、プライマリプライベート IP を表示します。
形式:
"jdbc:mysql://mysql-vpc-address:3306/ecs-database-name"。例:
jdbc:mysql://192.168.128.***:3306/test_adb。tablenameセルフマネージド MySQL データベースの宛先テーブル名です。この例では、テーブル名は
coursesです。ユーザー名ターゲットデータベースへのアクセスに使用するデータベースアカウントのユーザー名です。
パスワード指定されたデータベースアカウントのパスワードです。
charsetMySQL データベースの文字セットです。有効値:
-
gbk
-
[Utf8] (デフォルト)
-
utf8mb4
-
-
宛先の自己管理型 MySQL データベースに、AnalyticDB for MySQL クラスターからデータをエクスポートします。
次のステートメントを実行します。
REPLACE INTO courses_external_table SELECT * FROM courses;
次のステップ
セルフマネージド MySQL の test_adb データベースにログオンします。次に、次のコマンドを実行して、データが宛先の courses テーブルにエクスポートされたことを確認します:
SELECT * FROM courses LIMIT 100;