今回は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へのアクセス許可が必要になる。