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とレプリケーションする手法を考えてみたいと思います。
でわでわ