# MariaDB インポート連携

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

## 前提条件

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


## コマンドラインの使用

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

最新の[TD Toolbelt](https://toolbelt.treasuredata.com/)をインストールできます。


```bash
$ td --version
```

### 設定ファイルの作成

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


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

### フィールドの推測（load.ymlの生成）

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


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

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


```yaml
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`オプションを指定することをお勧めします（[データパーティショニング](https://docs.treasuredata.com/smart/project-zgraveyard/data-partitioning-in-treasure-data)も参照してください）。

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

データに時間カラムがない場合は、`add_time`フィルターオプションを使用して追加できます。詳細は[add_timeフィルタープラグイン](https://docs.treasuredata.com/smart/project-product-documentation/add_time-filter-function)を参照してください。


```bash
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に存在しない場合、このコマンドは成功しません。したがって、[データベースとテーブルを手動で作成](https://docs.treasuredata.com/smart/project-product-documentation/data-management)するか、`td connector:issue`コマンドで`--auto-create-table`オプションを使用してデータベースとテーブルを自動作成してください。


```bash
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などのタイムゾーン略語は*サポートされておらず*、予期しないスケジュールになる可能性があります。