MySQLデータソースの設定
MySQLはオープンソースのリレーショナルデータベース管理システムで、大量のデータを効率よく保存、管理、クエリできます。さまざまなオペレーティングシステムに対応しており、多様なソフトウェアやWebサイトの開発で広く使われています。
AEデータ開発プラットフォームのオフライン同期プランは、MySQL データソースの 読み取り(Reader)と 書き込み(Writer)に対応しています。このドキュメントでは、MySQLのデータ同期機能の対応状況について説明します。
対応バージョン
mysql 5.5+
使用制限
現在、次の構成方法にのみ対応しています:
- MySQLデータソースの読み取り(オフライン読み取り)と、AEプリセット倉庫の空間テーブルへの書き込みに対応
- AEプリセット倉庫の空間テーブルからMySQLへの書き込み(オフライン書き込み)に対応
注:MySQLデータベースから、AEプリセット倉庫以外の他のデータベースへの直接書き込みには、現在対応していません。
対応するフィールドタイプ
| フィールドタイプ | オフライン読み取り(MySQL Reader) | オフライン書き込み(MySQL Writer) |
|---|---|---|
| TINYINT | 対応 | 対応 |
| SMALLINT | 対応 | 対応 |
| INTEGER | 対応 | 対応 |
| BIGINT | 対応 | 対応 |
| FLOAT | 対応 | 未対応 |
| DOUBLE | 対応 | 対応 |
| DECIMAL | 対応 | 対応 |
| DATE | 対応 | 対応 |
| DATETIME | 対応 | 対応 |
| TIMESTAMP | 対応 | 対応 |
| REAL | 対応 | 未対応 |
| VARCHAR | 対応 | 対応 |
| JSON | 対応 | 未対応 |
| TEXT | 対応 | 未対応 |
| MEDIUMTEXT | 対応 | 未対応 |
| LONGTEXT | 対応 | 未対応 |
| ENUM | 対応 | 未対応 |
| SET | 対応 | 未対応 |
| BIT | 対応 | 未対応 |
| TIME | 対応 | 未対応 |
| YEAR | 対応 | 未対応 |
| VARBINARY | 未対応 | 未対応 |
| BINARY | 未対応 | 未対応 |
| TINYBLOB | 未対応 | 未対応 |
| MEDIUMBLOB | 未対応 | 未対応 |
| LONGBLOB | 未対応 | 未対応 |
| Blob | 未対応 | 未対応 |
| BOOLEAN | 未対応 | 未対応 |
| MULTIPOLYGON | 未対応 | 未対応 |
| LINESTRING | 未対応 | 未対応 |
| POLYGON | 未対応 | 未対応 |
| MULTIPOINT | 未対応 | 未対応 |
| MULTILINESTRING | 未対応 | 未対応 |
| GEOMETRYCOLLECTION | 未対応 | 未対応 |
MySQLデータソースの作成
データ開発プラットフォーム - バッチ統合 モジュールで、MySQLデータソースを追加を選択できます
データソース設定パラメータ情報
データソースに必要な設定情報を入力し、接続性テストが完了すると、MySQLデータソースを作成できます。
パラメータ名の前に * が付いているものは必須パラメータ、* が付いていないものは任意パラメータです。
| フィールド名 | 説明 |
|---|---|
| 基本情報 | |
| *データソース名 | データ開発プラットフォームのスペース内で一意である必要があります。英字、数字、アンダースコアの組み合わせで、数字やアンダースコアで始めることはできません |
| 備考 | 任意 |
| データソース設定 | |
| 環境を区別しない / 独立環境構成 | いずれかを選択:「環境を区別しない」は本番環境と開発環境で1セットの構成を共用することを表し、「独立環境構成」は2つの環境をそれぞれ独立して設定することを表します |
| *接続文字列 | 接続文字列(Connection String)は、MySQLデータベースとの接続を確立するための文字列です 注:文字列内のパラメータの解析には現在対応していません |
| *データベース名 | 接続するMySQLデータベースの名前 |
| *ユーザー名 | データベースへのアクセス権限を持つユーザー名 |
| *パスワード | ユーザー名に対応するパスワード情報 |
| 高度な構成 | データベースへの接続に必要なその他の高度なパラメータ。自由に入力できます |
高度なパラメータのブラックリスト
統合の安全性を確保するため、「高度な構成」では以下のパラメータの設定に対応していません。
| パラメータ名 | 用途 | セキュリティ上の落とし穴 |
|---|---|---|
| allowLoadLocalInfile | 用途: LOAD DATA LOCAL INFILE SQL文を使って、クライアントマシン(Javaアプリケーションを実行しているサーバー)からMySQLデータベースにファイルを読み込むことを許可するかどうかを制御します。 | セキュリティ上の落とし穴: 非常にリスクの高いパラメータです。有効にすると、悪意のあるMySQLサーバー(または攻撃を受けた正規のサーバー)が、クライアントの接続時に逆にクライアント上の任意のファイルを要求できるようになります。攻撃者はMySQLサーバーを偽装でき、アプリケーションが接続しようとするとLOAD DATA LOCALのリクエストを送信します。するとJDBCドライバーは、クライアントマシン上の機密ファイル(/etc/passwd, ~/.ssh/id_rsa、アプリケーションの設定ファイル、データベース接続設定など)を無条件に攻撃者のサーバーへ送信してしまいます。これは一般に「MySQLクライアントファイル読み取りの脆弱性」の悪用と呼ばれます。 |
| allowUrlInLocalInfile | 用途: LOAD DATA LOCAL INFILE 文で、URL(http://, ftp:// など)をファイルソースとして指定できるかどうかを制御します。 | セキュリティ上の落とし穴: このパラメータは
|
| allowLoadLocalInfileInPath | 用途: allowLoadLocalInfile のセキュリティを強化した代替手段です(比較的新しいバージョンのドライバーが必要です)。任意のファイルの読み取りは許可せず、ファイルの読み取りを指定したディレクトリとそのサブディレクトリに制限します。 | セキュリティ上の落とし穴:設定したパスの範囲が広すぎる場合(/tmp など)や、攻撃者が他のアプリケーションの脆弱性を通じて許可されたパスにファイルを書き込める場合は、それらのファイルを読み取られる可能性があります。誤った設定(/ に設定するなど)をすると、allowLoadLocalInfile=true と同等になります。 |
| initCommand | 用途: 新しい接続を作成するたびに直後に実行するSQL文を指定できます。SET NAMES 'utf8mb4' や SET time_zone = '+8:00' など、セッション変数の設定によく使われます | セキュリティ上の落とし穴: リスクはユーザー入力の制御に起因します。このパラメータの値が、ユーザーの外部入力を連結して作られている場合(コードに固定された安全な文字列ではない場合)、SQLインジェクションを引き起こす可能性があります。攻撃者が接続文字列内の initCommand を制御できるようになると、テーブルの削除、データの変更、ユーザーの追加など、権限のある任意のSQL操作を実行できてしまいます。 |
| clientFlags | 用途: クライアントとMySQLサーバーのハンドシェイク時に使用する機能フラグを設定する低レベルのパラメータです。ビットマスク(bitmask)であり、数値によってクライアントの特定の機能を有効または無効にします。 | セキュリティ上の落とし穴: 危険なフラグを含む可能性がある点にリスクがあります。特に注意が必要なのは次のとおりです:
|
上記の制限は、「最小権限の原則」と「多層防御」というセキュリティのベストプラクティスに基づくもので、お客様のアプリケーションと基盤インフラを悪意のある攻撃から保護することを目的としています。
業務上どうしても関連機能を使用する必要がある場合は、ThinkingAIの運用チームに連絡して個別の評価を受けてください。
オフライン同期タスクの作成
上記の手順でMySQLデータソースを作成し、接続性テストに成功したら、実際のシナリオに応じてMySQLオフライン読み取り、MySQLオフライン書き込みなどのオフライン同期タスクを設定できます。
データソースとしてのMySQL
データソースとしてMySQLを選択し、以下の関連パラメータを設定します:
| フィールド名 | 説明 |
|---|---|
| *ソースタイプ | データソースのタイプとしてMySQLを選択 |
| *データソース名 | データソース管理画面で登録済みのMySQLデータソースを、ドロップダウンから選択できます。 対応するデータソースをまだ作成していない場合は、データソース管理 ボタンをクリックして、MySQLデータソースを作成できます。 |
| *数値取得方法 |
|
| *データベース名 | 読み取るデータベースの名前 |
| *データテーブル名 | 読み取るデータテーブルの情報 |
| シャードキー | 選択したソーステーブルの情報に分割フィールドが含まれている場合は、シャードキーを選択できます |
| データフィルタリング | データフィルタリングのスイッチをオンにすると、SQL構文でWHEREフィルター文を入力できます |
| 高度な構成 | バッチ処理件数などのパラメータによる制御に対応しています |
パラメータ名の前に * が付いているものは必須パラメータ、* が付いていないものは任意パラメータです。
データの流向としてのMySQL
データの流向としてMySQLを選択し、以下の関連パラメータを設定します:
| フィールド名 | 説明 |
|---|---|
| *ソースタイプ | データの流向のターゲットタイプとしてMySQLを選択 |
| *データソース名 | データソース管理画面で登録済みのMySQLデータソースを、ドロップダウンから選択できます。 対応するデータソースをまだ作成していない場合は、データソース管理 ボタンをクリックして、MySQLデータソースを作成できます。 |
| *データベース名 | 読み取るデータベースの名前 |
| *データテーブル名 | 読み取るデータテーブルの情報 |
| *書き込みモード |
|
| 高度な構成 | バッチ処理件数などのパラメータによる制御に対応しています |
パラメータ名の前に * が付いているものは必須パラメータ、* が付いていないものは任意パラメータです。
フィールド照合の説明
データソースとターゲット側の設定が完了したら、フィールド照合関係を作成する必要があります。システムは照合関係に従って、ソース側フィールドのデータを目標フィールドに自動的に同期します。フィールド照合関係の設定方法は3つあります:
- 方法1:カスタム選択。ソーステーブルのフィールドを選択し、目標テーブルの目標フィールドを選択します
- 方法2:同名照合。システムが、ソーステーブルと目標テーブルの同名フィールド間に照合関係を自動作成します
- 方法3:同行照合。システムが、同じ行のフィールド間に照合関係を自動作成します
1つの目標フィールドに対応できるソースフィールドは1つだけであることに注意してください
フィールドタイプの変換方法
データ同期時、システムはCAST()関数でソーステーブルのフィールドを型変換し、目標フィールドの型への変換を試みます。型変換に失敗した場合、目標フィールドの値はNULLに設定されます
データタイプ変換に関する特記事項
- √ は、該当するタイプ変換に対応していることを表します
- √, null は、該当するタイプ変換に対応しており、変換に失敗した場合はNULLに設定されることを表します
| ソースタイプ/目標タイプ | ROW | ARRAY | MAP | STRING | BOOLEAN | TINYINT | SMALLINT | INT | BIGINT | FLOAT | DOUBLE | DECIMAL | BYTES | DATE | TIMESTAMP | TIME |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ROW | √, null | |||||||||||||||
| ARRAY | √, null | |||||||||||||||
| MAP | √, null | |||||||||||||||
| STRING | √ | √, null | √, null | √, null | √, null | √, null | √, null | √, null | √, null | √, null | √, null | √, null | ||||
| BOOLEAN | √, null | √ | ||||||||||||||
| TINYINT | √, null | √ | √, null | √, null | √, null | |||||||||||
| SMALLINT | √, null | √, null | √ | √, null | √, null | |||||||||||
| INT | √, null | √, null | √, null | √ | √, null | |||||||||||
| BIGINT | √, null | √, null | √, null | √, null | √ | |||||||||||
| FLOAT | √, null | √ | √, null | √, null | ||||||||||||
| DOUBLE | √, null | √, null | √ | √, null | ||||||||||||
| DECIMAL | √, null | √, null | √, null | √ | ||||||||||||
| BYTES | √, null | √ | ||||||||||||||
| DATE | √, null | √ | √, null | |||||||||||||
| TIMESTAMP | √, null | √, null | √ | |||||||||||||
| TIME | √, null | √ |
基本情報の設定
最後に、統合プランの基本情報を設定する必要があります。プラン名、責任者、統合の同期速度、備考などが含まれます。
設定が完了したら、「保存」 ボタンをクリックして統合プランの作成を完了できます。
注:プラン名は保存後に変更できません
詳細ページの表示:
オフライン同期プランのタスクフローへのマウント
マウントされたタスクフロー
1.マウント手順を開始する
- 統合プランの詳細ページで、右上の「ジョブフローにマウントする」ボタンをクリックします
2.タスクフローを選択する
-
ドロップダウンメニューから対象のタスクフローを選択します
-
タスクフローを新規作成する場合:
- ドロップダウンメニューの下にある「タスクフローを新規作成」ショートカットボタンをクリックします
- または「開発」モジュールで作成します
-
ヒント:対象のタスクフローが表示されない場合は、右側の↻更新ボタンをクリックしてください
3.同期ノードを作成する
- タスクフロー内で「オフライン同期プラン」タイプのノードを新規作成します
- このノードは現在の統合プランに関連付けられ、ノードの実行時に対応する統合プランの実行がトリガーされます
4.マウントを完了する
- 「ノードを作成し、マウントします」をクリックして設定を完了します
- マウントに成功したら、「タスクフローに進む」をクリックしてマウント結果をすぐに確認できます
注:タスクフローへのマウントで作成されたタスクノードは 未リリース状態 です。タスクフローを確認し、そのノードをリリースして配信を開始することをお勧めします。
タスクフローのマウント解除
オフライン同期プランのタスクフローへのマウントを解除する場合:
- タスクフローがまだリリースされていない場合は、そのプランがマウントされているタスクフローに移動し、開発モード でその「オフライン同期プラン」タスクノードを削除するだけです。
- タスクフローがすでにリリースされている場合は、開発モード でその「オフライン同期プラン」タスクノードを削除した後、タスクフローを再リリースする必要があります。これにより、本番環境 でのそのノードのマウントも同時に解除されます。

