メインコンテンツまでスキップ

MySQLデータソースの設定

最終更新 2026/10/03

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:// など)をファイルソースとして指定できるかどうかを制御します。

セキュリティ上の落とし穴: このパラメータは allowLoadLocalInfile のリスクを増幅します。ローカルファイルの読み取りだけでなく、リモートのネットワーク上の場所からのデータ読み込みも許可するため、次のような事態を招く可能性があります:

  1. SSRF (Server-Side Request Forgery): 攻撃者がデータベース接続を踏み台にして、内部ネットワークのHTTP/FTPサービスにアクセスし、内部ネットワークの構成を探ることができます。
  2. データインジェクション: 攻撃者がリモートURLを制御している場合、データベースに注入したい任意のデータを返すことができます。
allowLoadLocalInfileInPath用途: allowLoadLocalInfile のセキュリティを強化した代替手段です(比較的新しいバージョンのドライバーが必要です)。任意のファイルの読み取りは許可せず、ファイルの読み取りを指定したディレクトリとそのサブディレクトリに制限します。セキュリティ上の落とし穴:設定したパスの範囲が広すぎる場合(/tmp など)や、攻撃者が他のアプリケーションの脆弱性を通じて許可されたパスにファイルを書き込める場合は、それらのファイルを読み取られる可能性があります。誤った設定(/ に設定するなど)をすると、allowLoadLocalInfile=true と同等になります。
initCommand用途: 新しい接続を作成するたびに直後に実行するSQL文を指定できます。SET NAMES 'utf8mb4' や SET time_zone = '+8:00' など、セッション変数の設定によく使われますセキュリティ上の落とし穴: リスクはユーザー入力の制御に起因します。このパラメータの値が、ユーザーの外部入力を連結して作られている場合(コードに固定された安全な文字列ではない場合)、SQLインジェクションを引き起こす可能性があります。攻撃者が接続文字列内の initCommand を制御できるようになると、テーブルの削除、データの変更、ユーザーの追加など、権限のある任意のSQL操作を実行できてしまいます。
clientFlags用途: クライアントとMySQLサーバーのハンドシェイク時に使用する機能フラグを設定する低レベルのパラメータです。ビットマスク(bitmask)であり、数値によってクライアントの特定の機能を有効または無効にします。

セキュリティ上の落とし穴: 危険なフラグを含む可能性がある点にリスクがあります。特に注意が必要なのは次のとおりです:

  • CLIENT_LOCAL_FILES (128): このフラグは LOAD DATA LOCAL への対応を明示的に有効にします。接続文字列で allowLoadLocalInfile=true を設定していなくても、clientFlags にこのフラグを加えれば同じ効果になり、ファイル読み取りのリスクが再び生じます。
  • CLIENT_SSL (2048): 反対に、このフラグを無効にする(デフォルト値から削除する)と、暗号化されていない接続が強制的に使用され、通信が盗聴や改ざんを受けるおそれがあります。

上記の制限は、「最小権限の原則」と「多層防御」というセキュリティのベストプラクティスに基づくもので、お客様のアプリケーションと基盤インフラを悪意のある攻撃から保護することを目的としています。

業務上どうしても関連機能を使用する必要がある場合は、ThinkingAIの運用チームに連絡して個別の評価を受けてください。

オフライン同期タスクの作成​

上記の手順でMySQLデータソースを作成し、接続性テストに成功したら、実際のシナリオに応じてMySQLオフライン読み取り、MySQLオフライン書き込みなどのオフライン同期タスクを設定できます。

データソースとしてのMySQL​

データソースとしてMySQLを選択し、以下の関連パラメータを設定します:

フィールド名説明
*ソースタイプデータソースのタイプとしてMySQLを選択
*データソース名データソース管理画面で登録済みのMySQLデータソースを、ドロップダウンから選択できます。
対応するデータソースをまだ作成していない場合は、データソース管理 ボタンをクリックして、MySQLデータソースを作成できます。
*数値取得方法
  • テーブル全体:読み取るデータベースとテーブルの情報を選択します
  • カスタム検索:SQL構文を使ってデータソースを直接クエリできます
*データベース名読み取るデータベースの名前
*データテーブル名読み取るデータテーブルの情報
シャードキー選択したソーステーブルの情報に分割フィールドが含まれている場合は、シャードキーを選択できます
データフィルタリングデータフィルタリングのスイッチをオンにすると、SQL構文でWHEREフィルター文を入力できます
高度な構成バッチ処理件数などのパラメータによる制御に対応しています

パラメータ名の前に * が付いているものは必須パラメータ、* が付いていないものは任意パラメータです。

データの流向としてのMySQL​

データの流向としてMySQLを選択し、以下の関連パラメータを設定します:

フィールド名説明
*ソースタイプデータの流向のターゲットタイプとしてMySQLを選択
*データソース名データソース管理画面で登録済みのMySQLデータソースを、ドロップダウンから選択できます。
対応するデータソースをまだ作成していない場合は、データソース管理 ボタンをクリックして、MySQLデータソースを作成できます。
*データベース名読み取るデータベースの名前
*データテーブル名読み取るデータテーブルの情報
*書き込みモード
  • 上書き書き込み(デフォルト):Insert Overwrite
  • 新しいデータを挿入: Insert Into
  • 更新挿入: Upsert
高度な構成バッチ処理件数などのパラメータによる制御に対応しています

パラメータ名の前に * が付いているものは必須パラメータ、* が付いていないものは任意パラメータです。

フィールド照合の説明​

データソースとターゲット側の設定が完了したら、フィールド照合関係を作成する必要があります。システムは照合関係に従って、ソース側フィールドのデータを目標フィールドに自動的に同期します。フィールド照合関係の設定方法は3つあります:

  • 方法1:カスタム選択。ソーステーブルのフィールドを選択し、目標テーブルの目標フィールドを選択します
  • 方法2:同名照合。システムが、ソーステーブルと目標テーブルの同名フィールド間に照合関係を自動作成します
  • 方法3:同行照合。システムが、同じ行のフィールド間に照合関係を自動作成します

1つの目標フィールドに対応できるソースフィールドは1つだけであることに注意してください

フィールドタイプの変換方法

ヒント

データ同期時、システムはCAST()関数でソーステーブルのフィールドを型変換し、目標フィールドの型への変換を試みます。型変換に失敗した場合、目標フィールドの値はNULLに設定されます

データタイプ変換に関する特記事項

  • √ は、該当するタイプ変換に対応していることを表します
  • √, null は、該当するタイプ変換に対応しており、変換に失敗した場合はNULLに設定されることを表します
ソースタイプ/目標タイプROWARRAYMAPSTRINGBOOLEANTINYINTSMALLINTINTBIGINTFLOATDOUBLEDECIMALBYTESDATETIMESTAMPTIME
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.マウントを完了する

  • 「ノードを作成し、マウントします」をクリックして設定を完了します
  • マウントに成功したら、「タスクフローに進む」をクリックしてマウント結果をすぐに確認できます
ヒント

注:タスクフローへのマウントで作成されたタスクノードは 未リリース状態 です。タスクフローを確認し、そのノードをリリースして配信を開始することをお勧めします。

タスクフローのマウント解除​

オフライン同期プランのタスクフローへのマウントを解除する場合:

  • タスクフローがまだリリースされていない場合は、そのプランがマウントされているタスクフローに移動し、開発モード でその「オフライン同期プラン」タスクノードを削除するだけです。
  • タスクフローがすでにリリースされている場合は、開発モード でその「オフライン同期プラン」タスクノードを削除した後、タスクフローを再リリースする必要があります。これにより、本番環境 でのそのノードのマウントも同時に解除されます。
このページは役に立ちましたか?