Skip to content
Last updated

MariaDB インポート連携

この記事では、MariaDBからTreasure Dataに直接データをインポートできるMariaDB用データコネクターの使用方法について説明します。

前提条件

  • Treasure Dataの基本知識
  • MariaDBの基本知識
  • Treasure Dataコマンドラインの基本知識

コマンドラインの使用

TD Toolbelt v0.11.9以降のインストール

最新のTD Toolbeltをインストールできます。

$ td --version

設定ファイルの作成

以下の例のように、MariaDBアカウントのアクセス情報を含む設定ファイル(例:seed.yml)を準備します。

in:
  type: mysql
  host: "hostname"
  port: 3306
  user: "myuser"
  password: "mypassword"
  database: "mydatabasename"
  table: "mytablename"
  select: "*"
out:
  mode: replace

フィールドの推測(load.ymlの生成)

connector:guessを使用します。このコマンドは、対象ファイルを自動的に読み取り、ファイル形式を賢く推測します。

$ td connector:guess seed.yml -o load.yml

load.ymlを開くと、ファイル形式、エンコーディング、カラム名、型などを含む、推測されたファイル形式の定義が表示されます。

in:
  {type: mysql,host: "hostname",port: 3306,user: "myuser",password: "mypassword",  database: "mydatabasename", table: "mytablename",select: "*"}
filters: []
out: {mode: replace}
exec: {}

インポートするデータのプレビュー

td connector:previewコマンドを使用して、インポートされるデータをプレビューできます。

$ td connector:preview maria_import.yml

ロードジョブの実行

ロードジョブを送信します。データサイズによっては数時間かかる場合があります。ユーザーは、データが保存されるデータベースとテーブルを指定する必要があります。

Treasure Dataのストレージは時間でパーティション分割されているため、--time-columnオプションを指定することをお勧めします(データパーティショニングも参照してください)。

このオプションが指定されていない場合、データコネクターは最初のlongまたはtimestampカラムをパーティショニング時間として選択します。--time-columnで指定するカラムの型は、longまたはtimestampのいずれかである必要があります。

データに時間カラムがない場合は、add_timeフィルターオプションを使用して追加できます。詳細はadd_timeフィルタープラグインを参照してください。

td connector:issue maria_import.yml \
--database td_sample_db \
--table td_mariadb_table \
--time-column created_at

上記のコマンドは、データベース(td_sample_db)テーブル(td_maria_table) が既に作成されていることを前提としています。データベースまたはテーブルがTDに存在しない場合、このコマンドは成功しません。したがって、データベースとテーブルを手動で作成するか、td connector:issueコマンドで--auto-create-tableオプションを使用してデータベースとテーブルを自動作成してください。

td connector:issue maria_import.yml \
--database td_sample_db \
--table td_mariadb_table \
--auto-create-table -w

スケジュール実行

定期的なMariaDBインポートのために、定期的なデータコネクターの実行をスケジュールできます。Treasure Dataのスケジューラーの負荷分散と動作は、高可用性を実現するように最適化されています。Treasure Dataのスケジューラーを使用することで、ローカルデータセンターにcronデーモンを配置する必要がなくなります。

スケジュールの作成

td connector:createコマンドを使用して、新しいスケジュールを作成できます。スケジュールの名前、cron形式のスケジュール、データが保存されるデータベースとテーブル、およびデータコネクター設定ファイルを指定します。これらの値は必須です。

$ td connector:create \
    daily_mariadb_import \
    "10 0 * * *" \
    td_sample_db \
    td_mariadb_table \
    load.yml

cronパラメータは、@hourly@daily@monthlyの3つのオプションも受け入れます。

デフォルトでは、スケジュールはUTCタイムゾーンで設定されます。-tまたは—timezoneオプションを使用して、タイムゾーンでスケジュールを設定できます。--timezoneオプションは、'Asia/Tokyo'、'America/Los_Angeles'などの拡張タイムゾーン形式のみをサポートします。PST、CSTなどのタイムゾーン略語はサポートされておらず、予期しないスケジュールになる可能性があります。