外部テーブルを使用して、AnalyticDB for MySQL クラスターから ApsaraDB RDS for MySQL インスタンスにデータをエクスポートします。外部テーブルは RDS インスタンスのターゲットテーブルにマッピングされ、単一の REPLACE INTO ... SELECT 文でデータが移動されます。
前提条件
開始する前に、次の前提条件を満たしていることを確認してください。
AnalyticDB for MySQL クラスターと ApsaraDB RDS for MySQL インスタンスが同じ VPC (Virtual Private Cloud) にあること。VPC ID を比較して確認します。
RDS インスタンス:ApsaraDB RDS コンソールでインスタンス ID をクリックし、[データベース接続] ページの [ネットワークタイプ] フィールドで VPC ID を表示します。
AnalyticDB クラスター:AnalyticDB for MySQL コンソールで、[データウェアハウス版 (V3.0)] タブに移動し、クラスター ID をクリックします。次に、[クラスター情報] ページの [ネットワーク情報] セクションで VPC ID を表示します。
RDS インスタンス上にデータベースとテストデータがあること。詳細については、「アカウントとデータベースの作成」および「ApsaraDB RDS for MySQL インスタンスへの接続」をご参照ください。
(Elastic モードのみ) [クラスター情報] ページの [ネットワーク情報] セクションで [ENI] が有効になっている
ApsaraDB RDS for MySQL へのデータのエクスポート
この例では、AnalyticDB for MySQL クラスターの courses という名前のソーステーブルから、RDS インスタンスの同じ名前のターゲットテーブルにデータをエクスポートします。ソースデータベースは adb_demo で、ターゲットデータベースは test_adb です。
ステップ 1:RDS でのターゲットテーブルの作成
RDS インスタンスの test_adb データベースに接続し、ターゲットテーブルを作成します。
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)
);ステップ 2:AnalyticDB for MySQL クラスターへの接続
クラスターに接続するしてから、「ソースデータベースを作成する」を実行します。この例では、adb_demo という名前のデータベースを使用します。
ステップ 3:ソーステーブルの作成とテストデータの挿入
adb_demo データベースに courses という名前のソーステーブルを作成します。
CREATE TABLE courses (
id bigint AUTO_INCREMENT,
name varchar NOT NULL,
grade varchar DEFAULT '1st Grade',
submission_date timestamp
) DISTRIBUTED BY HASH(id);テストデータを 1 行挿入します。
INSERT INTO courses (name, submission_date) VALUES ("Jams", NOW());ステップ 4:外部テーブルの作成
adb_demo データベースに courses_external_table という名前の外部テーブルを作成します。このテーブルは RDS インスタンスの courses テーブルにマッピングされ、書き込み先として機能します。
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"
}';TABLE_PROPERTIES のプレースホルダー値を、実際の接続詳細に置き換えてください。
| パラメーター | 説明 |
|---|---|
ENGINE='mysql' | 外部テーブルのストレージエンジンとして MySQL を指定します。 |
url | RDS インスタンスの VPC エンドポイントとターゲットデータベース名。フォーマット:jdbc:mysql://<vpc-endpoint>:3306/<database-name>。例:jdbc:mysql://192.168.128.***:3306/test_adb。VPC エンドポイントを確認する方法については、「インスタンスのエンドポイントとポートの表示と管理」をご参照ください。 |
tablename | RDS データベース内のターゲットテーブルの名前。 |
username | RDS データベースへの接続に使用するアカウント名。 |
password | アカウントのパスワード。 |
charset | ソースデータベースの文字セット。デフォルト:utf8。有効な値:gbk、utf8、utf8mb4。 |
ステップ 5:データのエクスポート
次の文を実行して、AnalyticDB のソーステーブルから RDS のターゲットテーブルにデータをコピーします。
REPLACE INTO courses_external_table
SELECT * FROM courses;エクスポートの検証
RDS インスタンスの test_adb データベースにログインし、ターゲットテーブルにクエリを実行します。
SELECT * FROM courses LIMIT 100;エクスポートされた行がソースデータと一致することを確認します。
次のステップ
データがエクスポートされた後、ApsaraDB RDS for MySQL インスタンスの test_adb ターゲットデータベースにログインして、データがソーステーブルから courses ターゲットテーブルにインポートされたことを確認できます。