ApsaraDB for SelectDB では、DataWorks のデータ統合機能を使用して、SelectDB Writer によってテーブルからデータをインポートできます。このトピックでは、DataWorks を使用して MySQL データソースから ApsaraDB for SelectDB インスタンスにデータを同期する方法について説明します。
使用上の注意
DataWorks のデータ統合機能を使用して ApsaraDB for SelectDB インスタンスにデータをインポートする場合、データはオフラインで書き込む必要があります。
BITMAP、HyperLogLog(HLL)、または QUANTILE_STATE データ型のフィールドに書き込むことはできません。
データ同期タスクを開発する
データソースを追加する
データ同期タスクを構成する前に、MySQL データソースと ApsaraDB for SelectDB データソースを DataWorks に追加する必要があります。
MySQL データソースを追加する方法の詳細については、「MySQL データソース」をご参照ください。
ApsaraDB for SelectDB データソースを追加する方法の詳細については、「データソースを追加および管理する」をご参照ください。次の表に、ApsaraDB for SelectDB データソースを追加するために使用されるパラメーターを示します。
パラメーター
説明
[データソース名]
データソースの名前。
[JDBC URL]
jdbc:mysql://<ip>:<port>/<dbname>形式の Java Database Connectivity(JDBC)URL。ApsaraDB for SelectDB インスタンスの VPC エンドポイントまたはパブリックエンドポイントと MySQL ポートを取得するには、次の操作を実行します。ApsaraDB for SelectDB コンソールにログインし、情報を確認するインスタンスの [インスタンスの詳細] ページに移動します。[基本情報] タブの [ネットワーク情報] セクションで、[VPC エンドポイント] または [パブリックエンドポイント] パラメーターと [mysql ポート] パラメーターの値を表示します。
例:
jdbc:mysql://selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:9030/test_db説明MySQL インスタンスと ApsaraDB for SelectDB インスタンスが同じ VPC 内にある場合は、このパラメーターに VPC エンドポイントを使用します。MySQL インスタンスと ApsaraDB for SelectDB インスタンスが異なる VPC 内にある場合は、このパラメーターにパブリックエンドポイントを使用します。
[HTTP アドレス]
HTTP 経由で ApsaraDB for SelectDB インスタンスにアクセスするために使用される IP アドレスとポート番号。値は
<ip>:<port>形式です。ApsaraDB for SelectDB インスタンスの VPC エンドポイントまたはパブリックエンドポイントと HTTP ポートを取得するには、次の操作を実行します。ApsaraDB for SelectDB コンソールにログインし、情報を確認するインスタンスの [インスタンスの詳細] ページに移動します。[基本情報] タブの [ネットワーク情報] セクションで、[VPC エンドポイント] または [パブリックエンドポイント] パラメーターと [HTTP ポート] パラメーターの値を表示します。
例:
selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:8080説明MySQL インスタンスと ApsaraDB for SelectDB インスタンスが同じ VPC 内にある場合は、このパラメーターに VPC エンドポイントを使用します。MySQL インスタンスと ApsaraDB for SelectDB インスタンスが異なる VPC 内にある場合は、このパラメーターにパブリックエンドポイントを使用します。
[ユーザー名]
ApsaraDB for SelectDB インスタンスのオーナーアカウントのユーザー名。
[パスワード]
ApsaraDB for SelectDB インスタンスのオーナーアカウントのパスワード。
重要データソースを確実に追加できるようにするには、DataWorks のリソースグループの IP アドレスを、ApsaraDB for SelectDB などのデータソースの IP アドレスホワイトリストに追加する必要があります。詳細については、「IP アドレスホワイトリストを構成する」をご参照ください。IP アドレスホワイトリストを構成する場合は、異なる種類のリソースグループの IP アドレスを異なる IP アドレスホワイトリストに追加する必要があります。たとえば、データ統合専用リソースグループとデータ統合用共有リソースグループの IP アドレスは、異なる IP アドレスホワイトリストに追加する必要があります。
単一テーブルからデータを同期するためのバッチ同期タスクを構成する
コードレス UI またはコードエディタを使用して、バッチ同期タスクを構成できます。詳細については、以下のトピックをご参照ください。
コードエディタを使用してバッチ同期タスクを構成する方法の例と関連パラメーターの詳細については、このトピックの サンプルコードとパラメーター セクションをご参照ください。
サンプルコードとパラメーター
コードエディタを使用してバッチ同期タスクを構成する
コードエディタを使用してバッチ同期タスクを構成する場合は、コードエディタの形式要件に基づいてスクリプトを記述する必要があります。詳細については、「コードエディタを使用してバッチ同期タスクを構成する」をご参照ください。
MySQL Reader と SelectDB Writer のコード
{
"type":"job",
"version":"2.0",
"steps":[
{
"stepType":"mysql",
"parameter":{
"column":[
"<id>",
"<table_id>",
"<table_no>",
"<table_name>",
"<table_status>"
],
"connection":[
{
"datasource":"<mysql_datasource>",
"table":[
"<mysql_table_name>"
]
}
],
"where":"",
"splitPk":"",
"encoding":"UTF-8"
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"selectdb",
"parameter":{
"postSql":[
],
"preSql":[
],
"username": "<selectdb_username>",
"password": "<selectdb_password>",
"loadUrl":[
"<ip:port>"
],
"column":[
"<id>",
"<table_id>",
"<table_no>",
"<table_name>",
"<table_status>"
],
"connection":[
{
"datasource":"<selectdb_datasource>",
"table":[
"<selectdb_table_name>"
]
}
],
"maxBatchRows":1000000,
"loadProps":{
"format":"csv",
"column_separator": "\\x01",
"line_delimiter": "\\x02"
}
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"
},
"speed":{
"throttle":false,
"concurrent":1
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}パラメーター
パラメーター | 説明 |
datasource | データソースの名前。このパラメーターは必須です。コードエディタを使用してバッチ同期タスクを構成するときに、データソースを追加できます。このパラメーターの値は、追加するデータソースの名前と同じである必要があります。 |
table | データを同期するテーブルの名前。このパラメーターは必須です。 |
column | 宛先テーブルにデータを書き込む列の名前。列名はカンマ(,)で区切ります。このパラメーターは必須です。例: |
loadUrl | ApsaraDB for SelectDB インスタンスにアクセスするために使用される URL。このパラメーターは必須です。形式: |
username | ApsaraDB for SelectDB データベースにアクセスするために使用されるユーザー名。このパラメーターは必須です。 |
password | ApsaraDB for SelectDB データベースにアクセスするために使用されるパスワード。このパラメーターは必須です。 |
preSql | バッチ同期タスクが実行される前に実行する SQL 文。たとえば、このパラメーターを古いデータを削除するために使用される SQL 文に設定できます。コードレス UI では 1 つの SQL 文のみを実行でき、コードエディタでは複数の SQL 文を実行できます。 |
postSql | 同期タスクが実行された後に実行する SQL 文。たとえば、このパラメーターをタイムスタンプを追加するために使用される SQL 文に設定できます。コードレス UI では 1 つの SQL 文のみを実行でき、コードエディタでは複数の SQL 文を実行できます。 |
maxBatchRows | 一度に宛先テーブルに書き込むことができる最大行数。デフォルト値: 500000。 |
loadProps | インポートするデータの形式を指定するために使用される COPY INTO リクエストのパラメーター。デフォルト値: json。[loadprops] パラメーターが空のままになっているか、 CSV 形式でデータをインポートする場合は、次の設定を構成して CSV 形式を指定し、行と列の区切り文字を構成できます。行と列の区切り文字を指定しない場合、インポートされたデータはデフォルトで文字列に変換されます。 |
サポートされているデータ型
次の表に、ApsaraDB for SelectDB でサポートされているデータ型を示します。
データ型 | SelectDB Writer のオフラインデータ書き込み |
INT | サポートされています |
BIGINT | サポートされています |
LARGEINT | サポートされています |
SMALLINT | サポートされています |
TINYINT | サポートされています |
BOOLEAN | サポートされています |
DECIMAL | サポートされています |
DOUBLE | サポートされています |
FLOAT | サポートされています |
CHAR | サポートされています |
VARCHAR | サポートされています |
STRING | サポートされています |
DATE | サポートされています |
DATEV2 | サポートされています |
DATETIME | サポートされています |
DATETIMEV2 | サポートされています |
ARRAY | サポートされています |
JSONB | サポートされています |
BITMAP | サポートされていません |
HLL | サポートされていません |
QUANTILE_STATE | サポートされていません |