Posted at

mysqlで集計頑張るのやめてredshiftにいかない?

More than 3 years have passed since last update.

今回はmysqlのデータをredshiftに流し込む方法


実行環境

CentOS6.5


今回使用するもの

今回はembulkを使用

TreasureDataの@frsyukiさんが作成されたデータ転送するツールで

inとoutを定義することでinputをcsvやmysqlにしたりoutputをredshiftやbigquery,Treasuredataにしたりできる。

めっちゃ便利!!


事前準備

今回は下記のスキーマをもったデータベースがあるとする

項目名

id
integer

name
varchar(255)

age
integer


流すまで


embulkのインストール

作者のページ見るのが一番


embulk実行用のyamlをかく

完成系から


yaml

in:

type: mysql
user: [user名]
password: [パスワード]
database: [DB名]
table: [テーブル名]
host: [host名]
select: "*"
out:
type: redshift
host: [redshiftの接続先]
database: [db名]
user: [user名]
password: [パスワード]
table: [テーブル名]
mode: insert
iam_user_name: [IAMのユーザーネーム]
access_key_id: [アクセスキー]
secret_access_key: [シークレットキー]
s3_bucket: [バケットの名前]


RUN!!!!


console

embulk run ***.yml



yamlの解説

redshiftに関してはbigqueryほど複雑ではなかった印象。

s3のバケットを設定しているのはaws側でredshiftにデータを入れる際はs3に一度データをおくことを推奨しているから。

よってIAMでユーザーを作成するのだが、S3へのアクセス許可が必要になる。


後の細かな設定は公式ページで