Database JUNKY

MySQL,MariaDBを中心としたブログです

OSSなDWH InfiniDB 2.2.2最新版をインストールしてみる

OSSのDWH InfiniDBが、VER 2.2.2 にアップしたみたいなので改めてインストール手順書を書いてみました。 InfiniDBは、カラム指向のデータベースで、更新の性能は弱いですが、検索の性能は高いです。また、MySQLのストレージエンジンとして提供されているため、MySQLとの親和性に優れており、構成によっては、MySQLレプリケーションの一環として、組み込むことができるかもしれません。

InfiniDBのコミュニティエディションを当方が選択した理由は、前回も記載しましたが、insert,updateができることと、infobrightのコミュニティエディションのような機能の制約が『さほど無い』ところです。では、早速インストールしてみます。左の図は、製品版(エンタープライズ版)とコミュニティ版の位置づけを表しておりますが、サポートとCPU以外の差がないのがわかるかと思います。

▼インストールする

・ダウンロードする http://infinidb.org/ からコミュニティ版をダウンロードします。尚、ダウンロードの際は、事前ユーザー登録が必要になります。

・インストールする 上記サイトより、calpont-infinidb-2.2.2-2.x86_64.rpm.tar.gz をダウンロードしました。あ・・言い忘れたましたが、OS は、CENTOS 5.6 の64bit版です。他にも、Windows用と、Debian用がありますが、そこには触れません。また、コンパイル版が良い人は、ソースをダウンロードしてお試しください。

[shell] [root@dwh01 2.2.2]# pwd /usr/local/src/2.2.2 [root@dwh01 2.2.2]# ll 合計 33124 -rwxrwSrwx 1 root root   382018  9月 20 12:56 CalpontInfiniDBJumpStartGuide_222-1.pdf -rwxrwSrwx 1 root root   292060  9月 20 12:56 CalpontInfiniDBMinSpecifications_222-1.pdf -rwxrwSrwx 1 root root   714249  9月 20 12:56 CalpontInfiniDBSyntaxGuide_222-1.pdf -rwxrwSrwx 1 root root   542671  9月 20 12:56 CalpontInfiniDBTuningGuide_222-1.pdf -rwxrwSrwx 1 root root 17483093  9月 20 12:57 calpont-infinidb-2.2.2-2.x86_64.bin.tar.gz -rwxrwSrwx 1 root root 14389973  9月 20 12:52 calpont-infinidb-2.2.2-2.x86_64.rpm.tar.gz -rwxrwSrwx 1 root root    34617  9月 20 12:54 infinidb_test_scripts_222.tar.gz [root@dwh01 2.2.2]# pwd /usr/local/src/2.2.2 [root@dwh01 2.2.2]# tar zxvf calpont-infinidb-2.2.2-2.x86_64.rpm.tar.gz calpont-2.2.2-2.x86_64.rpm calpont-mysql-2.2.2-2.x86_64.rpm calpont-mysqld-2.2.2-2.x86_64.rpm

[root@dwh01 2.2.2]# mkdir infinidb [root@dwh01 2.2.2]# mv -f .rpm infinidb/ [root@dwh01 2.2.2]# cd infinidb [root@dwh01 infinidb]# pwd /usr/local/src/2.2.2/infinidb [root@dwh01 infinidb]# rpm -ivh calpont-.rpm 準備中...                ########################################### [100%] 1:calpont-mysqld         ########################################### [ 33%] Calpont RPM install completed 2:calpont                ########################################### [ 67%] Calpont RPM install completed 3:calpont-mysql          ########################################### [100%] Calpont RPM install completed [/shell]

utf-8 対応にする my.cnfの編集をし、utf8に対応するように変更しました。テンプレートと修正後のmy.cnfにつきましては、diffで差分をとっておりますので確認をお願いします。あと細かい部分のチューニングは行っておりません。

[shell] [root@dwh01 infinidb]# cd /usr/local/Calpont/mysql/ [root@dwh01 mysql]# pwd /usr/local/Calpont/mysql [root@dwh01 mysql]# cp my.cnf my.cnf.org [root@dwh01 mysql]# vi my.cnf [root@dwh01 mysql]# diff my.cnf my.cnf.org 48,58d47 < # 秒で指定、指定した秒以上のクエリーが発行された場合、上記のスローログに出力する < long_query_time=1 < # log=/var/lib/mysql/query.log < general-log-file=/var/lib/mysql/query.log < < # デフォルトの文字コードを、UTF-8に設定する < skip-character-set-client-handshake < character-set-server = utf8 < collation-server = utf8_general_ci < init-connect = SET NAMES utf8 < 79c68

< server-id     = 901

> server-id     = 1 [/shell]

・InfiniDB を起動する

[shell] [root@dwh01 mysql]# /usr/local/Calpont/bin/install-infinidb.sh [root@dwh01 mysql]# /sbin/chkconfig infinidb on [root@dwh01 mysql]# /etc/init.d/infinidb start Starting Calpont InfiniDB Database Platform: ...... DONE creating system catalog (be patient): . done. Starting Calpont InfiniDB MySQL: Starting MySQL.                                            [  OK  ] Validate InfiniDB System Catalog: Validation Succesfully Completed Perform Functionality test: InfiniDB Logging check: DONE Platform Process check: DONE MySQL Daemon check: MySQL running (3841)                  [  OK  ] Database check: DONE [/shell]

エイリアスを生成 [shell] [root@dwh01 mysql]# . /usr/local/Calpont/bin/calpontAlias [/shell]

・接続してみる [shell] [root@dwh01 mysql]# idbmysql [/shell]

・設定内容を確認 バージョンは、5.1.39ですね。残念・・5.5であってほしかった・・。

[sql] Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.1.39 MySQL Community / Calpont InfiniDB Community 2.2.2-2 Final (COSS LA)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. [/sql]

・エンジンを確認 InfiniDB ストレージエンジンが格納されております [sql] mysql> show engines; +------------+---------+-----------------------------------------------------------+--------------+------+------------+ | Engine     | Support | Comment                                                   | Transactions | XA   | Savepoints | +------------+---------+-----------------------------------------------------------+--------------+------+------------+ | CSV        | YES     | CSV storage engine                                        | NO           | NO   | NO         | | InfiniDB   | YES     | Calpont InfiniDB storage engine                           | YES          | NO   | NO         | | MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables | NO           | NO   | NO         | | MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance    | NO           | NO   | NO         | | MRG_MYISAM | YES     | Collection of identical MyISAM tables                     | NO           | NO   | NO         | +------------+---------+-----------------------------------------------------------+--------------+------+------------+ 5 rows in set (0.00 sec) [/sql]

文字コードを確認 utf8になっておりますね。

[sql] mysql> show variables like '%char%'; +--------------------------+------------------------------------------------+ | Variable_name            | Value                                          | +--------------------------+------------------------------------------------+ | character_set_client     | utf8                                           | | character_set_connection | utf8                                           | | character_set_database   | utf8                                           | | character_set_filesystem | binary                                         | | character_set_results    | utf8                                           | | character_set_server     | utf8                                           | | character_set_system     | utf8                                           | | character_sets_dir       | /usr/local/Calpont/mysql/share/mysql/charsets/ | +--------------------------+------------------------------------------------+ 8 rows in set (0.00 sec) [/sql]

スキーマの確認 なんか入っています。test以外は必要そうな感じなので、いじらず騒がず

[sql] mysql> show databases; +--------------------+ | Database           | +--------------------+ | information_schema | | calpontsys         | | infinidb_vtable    | | mysql              | | test               | +--------------------+ 5 rows in set (0.00 sec) [/sql]

innodbストレージエンジンのインストール いらない人にはいらないけど、もし必要な場合は、インストールする。

・モジュールの確認 [shell] [root@dwh01 mysql]# cd /usr/local/Calpont/mysql/lib/mysql/plugin [root@dwh01 plugin]# ll 合計 2832 lrwxrwxrwx 1 mysql mysql      19  9月 20 16:37 ha_archive.so -> ha_archive.so.0.0.0 lrwxrwxrwx 1 mysql mysql      19  9月 20 16:37 ha_archive.so.0 -> ha_archive.so.0.0.0 -rwxr-xr-x 1 mysql mysql   70062  8月 31 01:53 ha_archive.so.0.0.0 lrwxrwxrwx 1 mysql mysql      21  9月 20 16:37 ha_blackhole.so -> ha_blackhole.so.0.0.0 lrwxrwxrwx 1 mysql mysql      21  9月 20 16:37 ha_blackhole.so.0 -> ha_blackhole.so.0.0.0 -rwxr-xr-x 1 mysql mysql   43074  8月 31 01:53 ha_blackhole.so.0.0.0 lrwxrwxrwx 1 mysql mysql      21  9月 20 16:37 ha_federated.so -> ha_federated.so.0.0.0 lrwxrwxrwx 1 mysql mysql      21  9月 20 16:37 ha_federated.so.0 -> ha_federated.so.0.0.0 -rwxr-xr-x 1 mysql mysql   69997  8月 31 01:53 ha_federated.so.0.0.0 lrwxrwxrwx 1 mysql mysql      18  9月 20 16:37 ha_innodb.so -> ha_innodb.so.0.0.0 lrwxrwxrwx 1 mysql mysql      18  9月 20 16:37 ha_innodb.so.0 -> ha_innodb.so.0.0.0 -rwxr-xr-x 1 mysql mysql 1354567  8月 31 01:53 ha_innodb.so.0.0.0 lrwxrwxrwx 1 mysql mysql      25  9月 20 16:37 ha_innodb_plugin.so -> ha_innodb_plugin.so.0.0.0 lrwxrwxrwx 1 mysql mysql      25  9月 20 16:37 ha_innodb_plugin.so.0 -> ha_innodb_plugin.so.0.0.0 -rwxr-xr-x 1 mysql mysql 1331692  8月 31 01:53 ha_innodb_plugin.so.0.0.0 lrwxrwxrwx 1 root  root       43  9月 20 16:37 libcalmysql.so -> /usr/local/Calpont/lib/libcalmysql.so.1.0.0 [/shell]

・ストレージエンジンのインストール [shell] [root@dwh01 plugin]# idbmysql -u root -e "INSTALL PLUGIN INNODB SONAME 'ha_innodb.so';" [root@dwh01 plugin]# idbmysql -u root -e "INSTALL PLUGIN BLACKHOLE SONAME 'ha_blackhole.so';" [/shell]

・ストレージエンジンの確認 InnoDB,BLACKHOLE エンジンが追加になったのがわかるかと思います。※フェデレーションは何故かインストールできなかったのですが原因がわからない。

[shell] [root@dwh01 plugin]# idbmysql -u root -e "show engines;" +------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints | +------------+---------+----------------------------------------------------------------+--------------+------+------------+ | CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         | | InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        | | MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         | | BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         | | MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         | | InfiniDB   | YES     | Calpont InfiniDB storage engine                                | YES          | NO   | NO         | | MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         | +------------+---------+----------------------------------------------------------------+--------------+------+------------+ [/shell]

・アカウント/パスワードの設定 [sql] mysql > -- root set password for root@localhost=password('rootpassword'); set password for root@127.0.0.1=password('rootpassword'); grant all privileges on . to root@'192.168.101.0/255.255.255.0' IDENTIFIED BY 'rootpassword';

-- sysadm grant ALTER,ALTER ROUTINE,CREATE,CREATE VIEW,DELETE,DROP,EXECUTE,FILE,INDEX,INSERT,LOCK TABLES,PROCESS,RELOAD,SELECT,TRIGGER,UPDATE,SUPER on . to sysadm@'192.168.101.0/255.255.255.0' IDENTIFIED BY 'sysadmpassword'; grant ALTER,ALTER ROUTINE,CREATE,CREATE VIEW,DELETE,DROP,EXECUTE,FILE,INDEX,INSERT,LOCK TABLES,PROCESS,RELOAD,SELECT,TRIGGER,UPDATE,SUPER on . to sysadm@'localhost' IDENTIFIED BY 'sysadmpassword'; grant ALTER,ALTER ROUTINE,CREATE,CREATE VIEW,DELETE,DROP,EXECUTE,FILE,INDEX,INSERT,LOCK TABLES,PROCESS,RELOAD,SELECT,TRIGGER,UPDATE,SUPER on . to sysadm@'127.0.0.1' IDENTIFIED BY 'sysadmpassword';

-- analyst grant SELECT,INSERT,UPDATE,DELETE on . to analyst@'localhost' IDENTIFIED BY 'analystpassword'; grant SELECT,INSERT,UPDATE,DELETE on . to analyst@'127.0.0.1' IDENTIFIED BY 'analystpassword'; grant SELECT,INSERT,UPDATE,DELETE on . to analyst@'192.168.101.0/255.255.255.0' IDENTIFIED BY 'analystpassword';

-- slave grant REPLICATION SLAVE  on . to slave@'192.168.101.0/255.255.255.0' IDENTIFIED BY 'slavepassword'; grant SELECT,INSERT,UPDATE,DELETE on . to slave@'127.0.0.1' IDENTIFIED BY 'analystpassword'; grant SELECT,INSERT,UPDATE,DELETE on . to slave@'192.168.101.0/255.255.255.0' IDENTIFIED BY 'analystpassword';

-- delete delete from mysql.user where user = ''; delete from mysql.user where password = '';

flush privileges; [/sql]

・設定アカウントの確認 さすがにノーパスワードでログインできるのも気が引けるので、アカウント/パスワードを設定します。このあたりは、MySQLと同じですね。

[sql] mysql> select user,host from mysql.user; +--------+-----------------------------+ | user   | host                        | +--------+-----------------------------+ | root   | 127.0.0.1                   | | slave  | 127.0.0.1                   | | sysadm | 127.0.0.1                   | | analyst | 127.0.0.1                   | | root   | 192.168.101.0/255.255.255.0 | | slave  | 192.168.101.0/255.255.255.0 | | sysadm | 192.168.101.0/255.255.255.0 | | analyst | 192.168.101.0/255.255.255.0 | | root   | localhost                   | | sysadm | localhost                   | | analyst | localhost                   | +--------+-----------------------------+ 11 rows in set (0.00 sec) [/sql]

・一旦サービスを再起動します ここだけよくわからないのですが、起動時に以下の確認がでます。 私の場合は、rootのパスワードを入れましたが、いいのかな?うーーー・・。

[shell] *** Enter MySQL password: [/shell]

[shell] [root@dwh01 plugin]# /etc/init.d/infinidb stop Shutting down Calpont InfiniDB MySQL: Shutting down MySQL.                                       [  OK  ] Shutting down Calpont InfiniDB Database Platform:

[root@dwh01 plugin]# /etc/init.d/infinidb start Starting Calpont InfiniDB Database Platform: ....... DONE Starting Calpont InfiniDB MySQL: Starting MySQL.                                            [  OK  ] Validate InfiniDB System Catalog:

*** Enter MySQL password: Validation Succesfully Completed Perform Functionality test: InfiniDB Logging check: DONE Platform Process check: DONE MySQL Daemon check: MySQL running (4762)                  [  OK  ] Database check: DONE [/shell]

スキーマを作成してみる testdbという名前でスキーマを作成し、t1というinfinidbストレージエンジンで作成してみました。 [sql] mysql> use testdb Database changed mysql> create table t1 (id int,detail varchar(10)) engine=infinidb; Query OK, 0 rows affected (1.08 sec)

mysql> show create table t1; +-------+-----------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table                                                                                                                | +-------+-----------------------------------------------------------------------------------------------------------------------------+ | t1    | CREATE TABLE t1 ( id int(11) DEFAULT NULL, detail varchar(10) DEFAULT NULL ) ENGINE=InfiniDB DEFAULT CHARSET=utf8 | +-------+-----------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.05 sec)

mysql> insert into t1 values (1,'テスト'),(2,'TEST2'); Query OK, 2 rows affected (0.71 sec) Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from t1; +------+-----------+ | id   | detail    | +------+-----------+ |    1 | 手テス | |    2 | TEST2     | +------+-----------+ 2 rows in set, 1 warning (0.84 sec) [/sql]

こんな感じで無事インストールは終わりました。次回は、このinfinidbを利用して、MySQLレプリケーションする手法を考えてみたいと思います。

でわでわ