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