Make Local Happiness

自分の幸せは自分で作る!!!

AWS EC2上に高速なカラム型DBであるInfoBrightServerを立てる

infobright

100万件以上の大量のデータを扱いデータ分析を行う場合、 MySQLではこまめにIndexをはらないと少し遅い、 かといってRedShiftを使うには件数が少ない。

そんな時、InfoBrightはちょうどいい感じです。

InfoBrightとはカラム型のMySQLドライバが使えるDWHです。 InfoBrightにはcommunity版があるため、無料で利用することができます。 OSもWindowsLinuxどちらもいけるため会社で使う際には利用しやすいです。

Infobright - Analytic Database for the Internet of Things

ただ、community版はInsert、Update、Deleteができないため、 今のところ、分析用の用途にしか使っていません。

データをいれる際にはバルクロードを使い、テーブルからViewを作って、 Viewからバルクロードでテーブルにしてサマリーテーブルを作り、 分析系のシステムに使っていました。

データを入れる際にはETLツールであるSpoon(Pentaho)を使っていました。

Data Integration | Pentaho Community

1. インストール

今回のインストール環境は AWS EC2 Ubuntu Server 14.04 LTS (HVM) をつかっています。

参考URL

http://stat-you1025.blogspot.jp/2012/09/db-infobright.html

http://www.infobright.org/ からバイナリパッケージを取得。今回は Ubuntu 上で構築を行う事から deb パッケージを取得してきた。管理者権限で dpkg コマンドからインストールする。

$wget https://www.infobright.org/downloads/ice/infobright-4.0.7-0-x86_64-ice.deb
 $sudo dpkg -i infobright-4.0.7-0-x86_64-ice.deb
$sudo cd /usr/local/infobright-4.0.7-x86_64; ./postconfig.sh
$mysql-ib -u root

2. 起動および準備

止まっている事を確認

$ sudo /etc/init.d/mysqld-ib status
 * MySQL is not running

起動

$ sudo /etc/init.d/mysqld-ib start
Starting MySQL
. *

停止

$ sudo /etc/init.d/mysqld-ib stop
Shutting down MySQL
. *

3. おためし

とりあえず一通り触ってみる。

$ sudo /etc/init.d/mysqld-ib start
Starting MySQL
. *

接続

$ mysql-ib -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.40 build number (revision)=IB_4.0.7_r16961_17249(ice) (static)
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

初期DB一覧

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| BH_RSI_Repository  |
| mysql              |
| sys_infobright     |
| test               |
+--------------------+
5 rows in set (0.00 sec)

4. 外部アクセス許可+文字コード修正

外部アクセス用ユーザ作成

$ mysql-ib -u root
>GRANT ALL PRIVILEGES ON *.* TO ユーザー名@アクセス元のIP IDENTIFIED BY 'パスワード' WITH GRANT OPTION;
 
$sudo vim /etc/my-ib.cnf
[mysqld]

追加

skip-name-resolve

latin1 から修正

collation_server=utf8_general_ci 
character_set_server=utf8 

InfoBright再起動

$sudo /etc/init.d/mysql-ib restart

別ホストからアクセスしてみるとうまくつながります。 上記の設定をしないと以下のエラーがでてうまくつながらなかった

Lost connection to MySQL server at 'reading initial communication packet', system error: 0

5. 自動起動の設定

sysv-rc-confのインストール

$ sudo apt-get install sysv-rc-conf
$ sudo sysv-rc-conf --list mysqld-ib
mysqld-ib 0:off 1:off 2:on 3:on 4:on 5:on 6:off 

2~5がonになっているため、自動起動の設定は最初からついていたみたいです。

まとめ

これでインストールは終わりです。 deb パッケージがあるためかなり簡単です。 データ分析でMySQLを使っていて遅いなと感じている方は 試してみるといいかもしれません。