FAIRYFAR-INTERNAL
 
  FAIRYFAR-INTERNAL  |  SITEMAP  |  ABOUT-ME  |  HOME  
IB(InfoBright)编译安装

安装boost

进入boost源码目录:

snippet.bash
cd /home/zn/src/boost_1_42_0

执行:

snippet.bash
./bootstrap.sh --prefix='/opt/zn/opt/boost_1_42_0'
./bjam install

编辑用户zn的bash_profile文件:

snippet.bash
vim ~/.bash_profile

加入如下几行:

snippet.bash
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/zn/opt/boost_1_42_0/lib
export BOOST_ROOT=/opt/zn/opt/boost_1_42_0/

使修改生效:

source ~/.bash_profile

执行如下命令:

snippet.bash
sudo /sbin/ldconfig -v

这一步很重要,否则下面的Infobright的安装过程中和启动mysqld-ib会提示找不到很多共享库文件(.so文件)。

infobright

进入ib源码目录:

snippet.bash
$ cd /home/zn/src/infobright-4.0.7

注:如果是要编译 ib3.3.1 的话,则需要在当前目录 infobright-3.3.1-x86_64src 下先执行如下语句(因为 ib3.3.1源码目录下缺少下面这两个文件):

snippet.bash
cp /usr/share/libtool/config/config.sub src
cp /usr/share/libtool/config/config.guess src

而后再执行下面的命令。或者可以参考 ib4.0.7 源码目录下使用的软链接方式亦可。

如果是 ib4.0.7 的话,则可无视上面两条命令,无需拷贝文件,直接执行下面的命令即可。

执行(release版,将debug替换为release即可):

snippet.bash
$ export BOOST_ROOT=/opt/zn/opt/boost_1_42_0/; make -j32 EDITION=community debug PREFIX='/opt/zn/opt/infobright'
$ export BOOST_ROOT=/opt/zn/opt/boost_1_42_0/; make -j32 EDITION=community install-debug PREFIX='/opt/zn/opt/infobright'

基本配置文件

完成之后需要把配置文件(注意各个版本 IB 的原始配置文件的路径可能不同,需用 find 自行查找,而且注意配置文件名字是 my-ib.cnf,而不是 my.cnf)拷贝到相应路径下,如果没有etc目录则需要手动创建:

snippet.bash
$ mkdir /opt/zn/opt/infobright/etc
$ cp ~/src/infobright-4.0.7/src/build/pkgmt/my-ib.cnf /opt/zn/opt/infobright/etc

修改配置文件:

  1. 修改client和mysqld的端口(可选);
  2. 修改client和mysqld的socket路径(可选):
  3. 修改mysqld下的basedir和datadir:
snippet.bash
  basedir = /opt/zn/opt/infobright
  datadir = /opt/zn/opt/infobright/var
  log-error = /opt/zn/opt/infobright/var/bh.err

生成系统数据库

创建成功后数据库就可以正常使用了。

snippet.bash
$ /opt/zn/opt/infobright/bin/mysql_install_db

启动mysqld

snippet.bash
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/zn/opt/boost_1_42_0/lib/; /opt/zn/opt/infobright/libexec/mysqld --gdb

注:如果在启动 mysqld 时报错:

snippet.bash
172 160226 14:51:58 [ERROR] Plugin 'BRIGHTHOUSE' init function returned error.
173 160226 14:51:58 [ERROR] Plugin 'BRIGHTHOUSE' registration as a STORAGE ENGINE failed.
174 160226 14:51:58 [ERROR] Unknown/unsupported table type: brighthouse
175 160226 14:51:58 [ERROR] Aborting

则可能是由于没有 install db 造成的,可以清除 var tmp 目录后重新执行以下 install db 操作。

snippet.bash
./mysqld: Table 'mysql.plugin' doesn't exist
snippet.bash
[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
[ERROR] Fatal error: wrong format of /opt/zn/opt/infobright/var/ib_data_version file.
[ERROR] Plugin 'BRIGHTHOUSE' init function returned error.
[ERROR] Plugin 'BRIGHTHOUSE' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported table type: brighthouse
[ERROR] Aborting

再次install db后,myslqd启动成功:

snippet.bash
$ /opt/zn/opt/infobright/bin/mysql_install_db
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/zn/opt/boost_1_42_0/lib/; /opt/zn/opt/infobright/libexec/mysqld --gdb

加载数据

IB不支持DML语句,需要从文件加载数据:

$ cat ~/tmp/t1.data
1
2
snippet.sql
$ /opt/zn/opt/infobright/bin/mysql -uroot
mysql> CREATE DATABASE a;
mysql> USE a;
mysql> CREATE TABLE t1 (i INT);
mysql> LOAD DATA INFILE '/home/zn/tmp/t1.data' INTO TABLE t1;

详细配置文件

my-ib.cnf配置

snippet.txt
# client和mysqld的端口,socket路径
port = 5029
socket = /tmp/mysql-ib.sock
 
\# basedir和datadir路径
basedir = /opt/zn/opt/infobright
datadir = /opt/zn/opt/infobright/var
log-error = /opt/zn/opt/infobright/var/bh.err
 
\# Log文件路径
log-error = /opt/zn/opt/infobright/var/bh.err
 
\# Log所有查询SQL,存储文件为general_log_file。
general_log=1
general_log_file=/opt/zn/opt/infobright/var/general_query.log
 
\# Log所有查询满的查询,存储文件为general_log_file。
slow_query_log=1
slow_query_log_file=/opt/zn/opt/infobright/var/slow_query.log
 
\# 查询缓存大小(缺省5M)
query_cache_size = 0
 
\# 设置SQL语句大小是否敏感。0(缺省):敏感,1:不敏感。
lower_case_table_names = 1

brighthouse.ini配置

snippet.txt
# CacheFolder目录
CacheFolder = /opt/zn/opt/infobright/cache
 
\# Log Control和Internal trace,可以用于查看IB执行计划,及执行过程信息。输出文件由log-error配置。
ControlMessages = 5
InternalMessages = 1


打赏作者以资鼓励: