infobright是一个基于MySQL数据库的列存储数据库,有收费版和免费版。
在使用infobright创建表时,如果存储引擎为BRIGHTHOUSE,那么指定DATA DIRECTORY='/data/myib' 是无效的--但如果存储引擎为MyISAM,DATA DIRECTORY有效。不知道是不是因为使用免费版的缘故。
举例:
1. 存储引擎为BRIGHTHOUSE: mysql> create table e(id varchar(10)) ENGINE=BRIGHTHOUSE DATA DIRECTORY='/data/myib'; Query OK, 0 rows affected (7.91 sec) mysql> show create table e; +-------+----------------------------------------- --------------------------------------------------- ----+ | Table | Create Table | +-------+----------------------------------------- --------------------------------------------------- ----+ | e | CREATE TABLE `e` ( `id` varchar(10) DEFAULT NULL ) ENGINE=BRIGHTHOUSE DEFAULT CHARSET=latin1 | +-------+----------------------------------------- --------------------------------------------------- ----+ 1 row in set (0.00 sec) 可以看到使用show create table查看建表SQL时,DATA DIRECTORY未出现,而且/data/myib/下也没有e.MYD
2. 存储引擎为MyISAM: mysql> create table f(id varchar(10)) ENGINE=MyISAM DATA DIRECTORY='/data/myib'; Query OK, 0 rows affected (3.90 sec) mysql> show create table f; +-------+----------------------------------------- --------------------------------------------------- ----------------------------+ | Table | Create Table | +-------+----------------------------------------- --------------------------------------------------- ----------------------------+ | f | CREATE TABLE `f` ( `id` varchar(10) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='/data/myib/' | +-------+----------------------------------------- --------------------------------------------------- ----------------------------+ 此时/data/myib/下有f.MYD这个文件
解决方法:
有如下两种方法:
1. 修改infobright的配置文件
通过修改infobright的配置文件来实现,但这会影响到这个数据库实例的其它数据库的存储目录。
修改配置文件的datadir选项,如下: vi /etc/my-ib.cnf [mysqld] basedir = /usr/local/infobright datadir = /data/myib 停止数据库实例,移动/usr/local/infobright/data下的所有文件和目录到/data/myib下即可
2. 在datadir下创建符号链接
这个方式是目录操作,只会影响要改动的数据库。
如果我们要把名为'probe'的数据库的存储目录改为/data/myib,执行下列shell命令即可:
#移动原数据库目录到新目录下
mv /usr/local/infobright/data/probe/ /data/myib/
#在datadir下创建到新存储目录的符号链接
ln -s /data/myib/probe/ /usr/local/infobright/data/probe
在使用infobright创建表时,如果存储引擎为BRIGHTHOUSE,那么指定DATA DIRECTORY='/data/myib' 是无效的--但如果存储引擎为MyISAM,DATA DIRECTORY有效。不知道是不是因为使用免费版的缘故。
举例:
1. 存储引擎为BRIGHTHOUSE: mysql> create table e(id varchar(10)) ENGINE=BRIGHTHOUSE DATA DIRECTORY='/data/myib'; Query OK, 0 rows affected (7.91 sec) mysql> show create table e; +-------+----------------------------------------- --------------------------------------------------- ----+ | Table | Create Table | +-------+----------------------------------------- --------------------------------------------------- ----+ | e | CREATE TABLE `e` ( `id` varchar(10) DEFAULT NULL ) ENGINE=BRIGHTHOUSE DEFAULT CHARSET=latin1 | +-------+----------------------------------------- --------------------------------------------------- ----+ 1 row in set (0.00 sec) 可以看到使用show create table查看建表SQL时,DATA DIRECTORY未出现,而且/data/myib/下也没有e.MYD
2. 存储引擎为MyISAM: mysql> create table f(id varchar(10)) ENGINE=MyISAM DATA DIRECTORY='/data/myib'; Query OK, 0 rows affected (3.90 sec) mysql> show create table f; +-------+----------------------------------------- --------------------------------------------------- ----------------------------+ | Table | Create Table | +-------+----------------------------------------- --------------------------------------------------- ----------------------------+ | f | CREATE TABLE `f` ( `id` varchar(10) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='/data/myib/' | +-------+----------------------------------------- --------------------------------------------------- ----------------------------+ 此时/data/myib/下有f.MYD这个文件
解决方法:
有如下两种方法:
1. 修改infobright的配置文件
通过修改infobright的配置文件来实现,但这会影响到这个数据库实例的其它数据库的存储目录。
修改配置文件的datadir选项,如下: vi /etc/my-ib.cnf [mysqld] basedir = /usr/local/infobright datadir = /data/myib 停止数据库实例,移动/usr/local/infobright/data下的所有文件和目录到/data/myib下即可
2. 在datadir下创建符号链接
这个方式是目录操作,只会影响要改动的数据库。
如果我们要把名为'probe'的数据库的存储目录改为/data/myib,执行下列shell命令即可:
#移动原数据库目录到新目录下
mv /usr/local/infobright/data/probe/ /data/myib/
#在datadir下创建到新存储目录的符号链接
ln -s /data/myib/probe/ /usr/local/infobright/data/probe