OSSなDWH InfiniDB の話 ④ ~InnoDB エンジンと共存する方法
いまさら気づいたのですが、Infinidb には、標準のセットアップでは、InnoDBが入っておりません。標準でインストールされているストレージエンジンはCSV、MRG_MYISAM、MEMORY、 MyISAM、InfiniDBの5つのエンジンのみになります。DWHがメインの利用方法なので、あえてはずしてあるのかと思いますが、やっはり使いたいですよね?Innodbは、プラグイン(Plugin)として実装できるように作られております。そんな手順を掲載します。
[shell] mysql> show engines; + + + + + + + | Engine | Support | Comment | Transactions | XA | Savepoints | + + + + + + + | CSV | YES | CSV storage engine | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | 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 | | InfiniDB | YES | Calpont InfiniDB storage engine | YES | NO | NO | + + + + + + + 5 rows in set (0.00 sec) [/shell]
InnoDBのプラグインは、規定のインストールでは、以下のディレクトリに格納されております。
[shell]
cd /usr/local/Calpont/mysql/lib/mysql/plugin
ll *.so
lrwxrwxrwx 1 mysql mysql 19 11月 19 10:10 ha_archive.so -> ha_archive.so.0.0.0 lrwxrwxrwx 1 mysql mysql 21 11月 19 10:10 ha_blackhole.so -> ha_blackhole.so.0.0.0 lrwxrwxrwx 1 mysql mysql 19 11月 19 10:10 ha_example.so -> ha_example.so.0.0.0 lrwxrwxrwx 1 mysql mysql 21 11月 19 10:10 ha_federated.so -> ha_federated.so.0.0.0 lrwxrwxrwx 1 mysql mysql 18 11月 19 10:10 ha_innodb.so -> ha_innodb.so.0.0.0 lrwxrwxrwx 1 root root 43 11月 19 10:11 libcalmysql.so -> /usr/local/Calpont/lib/libcalmysql.so.1.0.0 [/shell]
InnoDB以外も入っておりますね、フェデレーション、アーカイヴ、ブラックホール等々・・。 ここでは、InnoDBのプラグインのみ設定する方法について記載します。
以下手順になります 1. infinidb にログインする [shell]
idbmysql
[/shell] 2. プラグインのインストールを行う [shell] mysql> INSTALL PLUGIN INNODB SONAME 'ha_innodb.so'; Query OK, 0 rows affected (0.05 sec) [/shell] 3. InnoDBエンジンが入ったか確認する [shell] mysql> 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 | | 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 | | InfiniDB | YES | Calpont InfiniDB storage engine | YES | NO | NO | + + + + + + + 6 rows in set (0.00 sec) [/shell] 4. プラグインが正しく設定されているか確認する [shell] mysql> show plugin; + + + -+ -+ -+ | Name | Status | Type | Library | License | + + + -+ -+ -+ | binlog | ACTIVE | STORAGE ENGINE | NULL | GPL | | CSV | ACTIVE | STORAGE ENGINE | NULL | GPL | | MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL | | MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | InfiniDB | ACTIVE | STORAGE ENGINE | libcalmysql.so | PROPRIETARY | | InnoDB | ACTIVE | STORAGE ENGINE | ha_innodb.so | GPL | + + + -+ -+ -+ [/shell] 7 rows in set, 1 warning (0.00 sec)※LibraryがNULL以外のもの(*.so)は、プラグインで設定されているエンジンです。
以上で、InnoDBが利用できるようになりました。他のサイト様で書かれているような、my.cnfの設定ではなく、MySQLのコマンド一発で入り、DBインスタンスを再起動することなく、即時利用できます。プラグインで便利です。
余談ですが、プラグインをアンインストールしたい場合、同様MySQLのコマンドでアンインストールできます。
[shell] mysql> UNINSTALL PLUGIN INNODB; [/shell]
[shell]