クラウドディスクを使用する RDS for MySQL インスタンスのデータをクエリおよび分析するには、まず高度なダウンロード機能を使用して Alibaba Cloud Object Storage Service (OSS) にデータをダウンロードします。 次に、OSS からクラウドネイティブデータウェアハウスである AnalyticDB for MySQL にデータをインポートして、クエリと分析を実行します。
前提条件
-
RDS for MySQL インスタンスは クラウドディスク インスタンスであり、高度なダウンロード機能をサポートしている必要があります。 サポートされているインスタンスの詳細については、「前提条件」をご参照ください。
-
移行先となる、クラウドネイティブデータウェアハウスである AnalyticDB for MySQL クラスターが作成済みであること。 詳細については、「Data Warehouse Edition クラスターの作成」または「Data Lakehouse Edition クラスターの作成」をご参照ください。
AnalyticDB for MySQL クラスタがエラスティック モードの場合、クラスター情報 ページの ネットワーク情報 セクションで Eniネットワーク を有効にする必要があります。
重要ENI を有効または無効にすると、データベース接続が約 2 分間中断される場合があります。この間、読み取りまたは書き込み操作を実行することはできません。ENI を有効または無効にする場合は注意してください。
注意事項
AnalyticDB for MySQL は、CSV または Parquet 形式のデータファイルのインポートのみをサポートしています。 RDS for MySQL の高度なダウンロード機能を使用する場合は、ダウンロード形式として CSV または Parquet を選択する必要があります。
事前準備
次の手順に従って、バックアップダウンロード機能を使用して AnalyticDB for MySQL データをオブジェクトストレージサービス (OSS) のフォルダーに移動します。
-
OSS を有効化します。 詳細については、「OSS の有効化」をご参照ください。
-
OSS コンソールで OSS バケットを作成します。 詳細については、「コンソールでのバケットの作成」をご参照ください。
説明OSS バケットと AnalyticDB for MySQL クラスターは、同じリージョンにある必要があります。
-
OSS コンソールでフォルダーを作成します。 詳細については、「フォルダーの作成」をご参照ください。
-
高度なダウンロード機能を使用して、クラウドディスクインスタンスから OSS にバックアップデータをダウンロードします。
説明別のダウンロード先を選択した場合は、バックアップデータを手動で OSS にアップロードする必要があります。 詳細については、「データのアップロード」をご参照ください。
この例では、ソースの RDS for MySQL データベース名は
mydbで、mytableという名前のテーブルが含まれています。 テーブル内のサンプルデータは次のとおりです。INSERT INTO mytable (id, name) VALUES ("12", "hello_world_1"), ("27", "hello_world_2"), ("28", "hello_world_3"), ("33", "hello_world_4"), ("37", "hello_world_5"), ("40", "hello_world_6");高度なダウンロード機能を使用して、
mytableテーブルのデータを OSS パスoss://bucket/_export/mydb/mytable/data/0-1csvに保存します。
OSS データの AnalyticDB for MySQL へのインポート
この例では、oss://bucket/_export/mydb/mytable/data/0-1csv のデータを、AnalyticDB for MySQL の adb_demo データベースにインポートします。
AnalyticDB for MySQL クラスタに接続します。詳細については、「AnalyticDB for MySQL クラスタに接続する」をご参照ください。
データベースを作成します。詳細については、「データベースを作成する」をご参照ください。
この例では、
adb_demoという名前のデータベースが AnalyticDB for MySQL クラスタに作成されます。-
外部マッピングテーブルを作成します。
説明外部マッピングテーブルを作成する際には、ソーステーブルと同じ名前を使用することも、別の名前を指定することもできます。
AnalyticDB for MySQL はテーブルレベルの分析のみをサポートしており、データベース全体の分析はサポートしていません。 したがって、分析を実行する前に、AnalyticDB for MySQL データベースにマッピングテーブルを作成する必要があります。
CREATE TABLEステートメントを使用して、移行先のadb_demoデータベースに CSV または Parquet 形式の OSS 外部マッピングテーブルを作成します。 この例では、パーティションのないデータファイルに対して、CSV 形式で OSS 外部マッピングテーブルを作成する方法を示します。 構文の詳細については、「パーティションのないデータファイルからの OSS 外部テーブルの作成」をご参照ください。CREATE TABLE IF NOT EXISTS mytable ( id string, name string ) ENGINE='OSS' TABLE_PROPERTIES='{ "endpoint":"oss-cn-hangzhou-internal.aliyuncs.com", "url":"oss://bucket/_export/mydb/mytable/data/0-1csv", "accessid":"LTAI****************", "accesskey":"yourAccessKeySecret", "delimiter":",", "format":"csv" }';パラメーター
説明
ENGINE='OSS'
テーブルエンジン。値を OSS に設定します。
TABLE_PROPERTIES
AnalyticDB for MySQL が OSS 内のデータにアクセスする方法を指定します。
endpoint
OSS バケットの [エンドポイント]。AnalyticDB for MySQL は、VPC (Virtual Private Cloud) を使用してのみ OSS にアクセスできます。
説明OSS コンソール にログインし、バケットを見つけ、[概要] ページで [エンドポイント] を取得します。
url
OSS 内のソースデータファイルまたはフォルダーへの絶対パス。 フォルダーパスはスラッシュ (/) で終わらせることを推奨します。
例:
-
ファイル:
oss://<bucket-name>/adb/oss_import_test_data.csv。 -
フォルダー:
oss://<bucket-name>/adb_data/。注
フォルダーパスを指定した場合、作成後の外部テーブルにはそのフォルダー配下のすべてのデータが含まれます。
accessid
OSS に対する権限を持つ Alibaba Cloud アカウントまたは RAM (Resource Access Management) ユーザーの AccessKey ID。
AccessKey ID と AccessKey secret を取得する方法については、「アカウントと権限」をご参照ください。
accesskey
OSS のファイルまたはフォルダーにアクセスするための AccessKey secret です。
delimiter
CSV オブジェクトの列区切り文字。
format
データファイルの形式です。
-
Parquet ファイル用の外部テーブルを作成するには、このパラメーターを
parquetに設定します。 -
ORC ファイル用の外部テーブルを作成するには、このパラメーターを
orcに設定します。
説明形式を指定しない場合、デフォルトは CSV です。
説明ダウンロードしたテーブルが
0-1csvや0-2csvのように複数の CSV ファイルに分割されている場合は、url パラメーターをデータファイルの親ディレクトリに設定します:"url":"oss://bucket/_export/mydb/mytable/data/"。 AnalyticDB for MySQL は、このパス内のすべてのファイルをmytableテーブルにマージします。この時点で、
mytableテーブルが AnalyticDB for MySQL データベースに作成されます。 テーブルの内容は、ソースのmytableテーブルの内容と同じです。 これで、テーブルをクエリできます。 -
-
次のステートメントを実行して、インポートされたデータをクエリします。
-- mytable はデータベース内のテーブル名です SELECT * FROM mytable;クエリは、ソースの mytable テーブルと同じ内容のテーブルを返します。
テーブルには id と name の 2 つの列があり、6 つのレコードが含まれています。 name の値の範囲は、
hello_world_1からhello_world_6です。
次のステップ
RDS for MySQL のデータを AnalyticDB for MySQL にインポートした後、AnalyticDB for MySQL の分析機能を使用して、インポートしたテーブルに対してビジネス分析を実行できます。 複数テーブルを結合するには、上記の手順を繰り返して、他のテーブルを adb_demo データベースにインポートします。