本記事
本記事はFluntdのバッジ版にあたるEmbulkを使ってMySQLにあるデータを転送してみようと思います。
目次
Embulkについて
Embulkとは
まず、Embulkが何かを説明します。
Embulkとは、異なるデータソース、クラウド、ファイルストレージ間での転送を手助けするオープンソースなバルクデータローダーです。
特徴
以下のような特徴があります。
- 自動的に入力ファイルのフォーマットを推論してくれる
- 大きなビッグデータを転送するために分散、並列化して実行できる
- All-or-Nothingデータ転送制御
- 停止して、再開できる
- RubyのGemによってプラグインが公開されている
Install方法
以下のコマンドでインストールします。
$ curl --create-dirs -o ~/.embulk/bin/embulk -L "https://dl.embulk.org/embulk-latest.jar" $ chmod +x ~/.embulk/bin/embulk $ echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc $ source ~/.bashrc
Pluginのインストール方法
以下のようにしてプラグインをインストールします。
この例ではmysql
プラグインをインストールしています。
embulk gem install embulk-input-mysql
/var/root/.embulk/lib/gems
のディレクトリにgemはインストールされています。
ワークフロー
以下のようにワークフローは構成されています。
設定方法
設定ファイル
以下のようにconfig.yaml
を作成します。
in: type: mysql user: user password: pass database: db table: table host: hostname select: "*" out: type: file path_prefix: sample_ file_ext: csv formatter: type: csv timezone: Asia/Tokyo
以下のリポジトリで、何が設定項目としてあるのかが設定できます。
大事なのは(in || out).typeでプラグインをタイプを指定することくらいです。
あとはプラグイン次第なので、そのときそのとき対応するようになります。
embulk-input-mysql
以下のようにembulk-input-mysql
には主な設定項目があります。
query
: クエリを書くquery
が設定されていなかったらtable
: デーブル名を指定select
: 項目を,
で区切って指定where
: 条件
以下は公式Exampleです。
in: type: mysql host: localhost user: myuser password: "" database: my_database table: my_table select: "col1, col2, col3" where: "col4 != 'a'" order_by: "col1 DESC"
mysql->csvを実行する
以下のコマンドで実行します。
embulk. run config.yaml
すると以下のようにsample_001.csv
というものができています。
id,name,userId,amount,username,created_at,updated_at,desc 50,payment,ueauoeuiae,0,Kuku,2018-10-04 01:24:25.000000 +0000,2018-10-04 01:24:25.000000 +0000,テスト 51,payment,ueoaipeoie,1961,Popo,2018-10-04 01:27:24.000000 +0000,2018-10-04 01:27:24.000000 +0000,イトヨ 52,payment,eoueoiaeuia,50565,Popo,2018-10-04 01:28:37.000000 +0000,2018-10-04 01:28:37.000000 +0000,食洗機 53,payment,eoaieuieoie,13824,Popo,2018-10-04 01:28:56.000000 +0000,2018-10-04 01:28:56.000000 +0000,ホームベーカリー 54,payment,U44e80f652a7db5f23c1f7fd1b679371d,1470,Popo,2018-10-04 09:41:55.000000 +0000,2018-10-04 09:41:55.000000 +0000,まいばす
まとめ
この記事でおおまかなEmbulkの使い方を学ぶことができました。
特にGCPの無料枠をいろんなアカウントで使いまわしているため、無料枠が切れるとMySQLのデータを転送しないといけません。
Embulkを使うと簡単にできるので、もっと勉強して使いまわしたいと思います。