Infobright列式存储数据库

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

Infobright 是一个非常强大的列式存储数据库,基于MySQL的高效数据仓库。

之所以使用数据仓库,是因为目前MySQL数据库中的数据增长很快,定期会对一些历史记录表进行清除,但后期的统计分析还会用到这些历史数据,随着数据量的增大,查询也越来越慢,而数据库仓库特有的存储格式能够减小磁盘空间内的占用,同时列式的特点使得查询速度大为改观。选择Infobright是因为它锁支持的数据类型更多些,更接近于mysql,更节省磁盘空间,主要的统计查询还不是在数据仓库上,偶尔的查询一下速度倒不是要求最优,作为社区版本(ICE版本)最大麻烦是不能做DML操作的,实际测试也是那么回事,如果插入数据有些不合适的地方,需要删除,只能drop table,然后从新建表和导入数据........

infobright的优势:

1.    数据压缩:适合存放很大的数据量,节约磁盘存储

2.    查询速度:基础的汇总语句,sum avg  min max  count()  groupby 速度比oracle的要快,不用建立索引、不用给大表分区,省很多工作量,适合数据汇总、报表统计

infobright的局限性ICE:

1.    infobright不支持DML(只支持select)

只有select可以支持,update/insert/deltete以及truncate table 都不能使用,插入表数据:用laod data infile

2.只支持单击、单核

由于Infobright官方已经提供好了rpm的包,所以安装起来相对来说较为简单:

rpm -ivh infobright-4.0.7-0-x86_64-ice.rpm --prefix=/usr/local/infobright

这样就会安装到/usr/local/infobright/infobright-4.0.7-0-x86_64

对于整个安装过程,相当的简单,比较繁琐的是对于相关参数的设置:

A、配置内存大小

vim /usr/local/infobright-4.0.7-x86_64/data/brighthouse.ini

修改内存的配置可参加其建议值进行设置:

############  Critical MemorySettings ############

# System Memory   Server Main Heap Size     ServerCompressed Heap Size   Loader Main HeapSize

# 32GB                24000                     4000                       800

# 16GB                10000                     1000                       800

#  8GB                  4000                       500                       800

#  4GB                  1300                       400                       400

#  2GB                  600                        250                       320

B、系统自带配置功能

sh /usr/local/infobright-4.0.7-x86_64/postconfig.sh

这个脚本可以改变datadir,cachedir,socket,port等配置,需要root来执行,执行后返回的信息如下:(如无需修改,则全部N即可)

Infobright post configuration

--------------------------------------

Using postconfig you can:

--------------------------------------

(1) Move existing data directory to other location,

(2) Move existing cachedirectoryto other location,

(3)Configure server socket,

(4)Configure server port,

(5) Relocate datadir pathto an existing data directory.

 

Please type'y'foroption that you want or press ctrl+c for exit.

 

Current configuration:

 

--------------------------------------

Current config file: [/etc/my-ib.cnf]

Current brighthouse.ini file: [/usr/local/infobright-4.0.7-x86_64/data/brighthouse.ini]

Current datadir: [/usr/local/infobright-4.0.7-x86_64/data]

Current CacheFolder in brighthouse.ini file: [/usr/local/infobright-4.0.7-x86_64/cache]

Current socket: [/tmp/mysql-ib.sock]

Current port: [5029]

--------------------------------------

 

(1) Do you want to copy current datadir [/usr/local/infobright-4.0.7-x86_64/data] to a new location? [y/n]:n

(2) Do you want tomovecurrent CacheFolder [/usr/local/infobright-4.0.7-x86_64/cache] to a new location? [y/n]:n

(3) Do you want tochangecurrent socket [/tmp/mysql-ib.sock]? [y/n]:n

(4) Do you want tochangecurrent port [5029]? [y/n]:n

(5) Do you want torelocateto an existing datadir? Current datadir is [/usr/local/infobright-4.0.7-x86_64/data]. [y/n]:n

 

--------------------------------------

--------------------------------------

No changes has been made.

--------------------------------------

C、设置字符集

infobright默认情况下不支持中文,为了更好的支持中文,需要设置默认的字符集。

vim /etc/my-ib.cnf

找到如下内容

collation_server=latin1_bin

character_set_server=latin1

将其修改为:

collation_server=utf8_bin

character_set_server=utf8

D、安装启动脚本

cp /usr/local/infobright-4.0.7-x86_64/share/mysql/mysql.server /etc/init.d/mysqld-ib

vim /etc/init.d/mysqld-ib

找到如下两行代码:

conf=@BH_CONF@

user=@BH_USER@

修改为:

conf=/etc/my-ib.cnf

user=root##这里只能用root启动服务,其他用户需要研究如何启动

相关的其他指令:

/etc/init.d/mysqld-ib stop

/etc/init.d/mysqld-ib restart

添加开机启动:

chkconfig --add mysqld-ib

E、Mysql安全设置

PATH=$PATH:/usr/local/infobright-4.0.7-x86_64/bin

mysql_secure_installation

完成后再给mysql添加一个远程连接的账号,只想如下命令进入mysql client:

mysql -uroot -p

添加完远程用户方法如下:

GRANT ALL PRIVILEGESON *.* TO'infobright'@'%'IDENTIFIEDBY'password'WITHGRANTOPTION;
FLUSHPRIVILEGES;

mysql数据导入到infobright中

CREATE TABLE `ricci_var` (

  `id`int(11) DEFAULT NULL,

 `name` varchar(20) DEFAULT NULL,

 `c_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATECURRENT_TIMESTAMP

) ENGINE=InnoDB

select * from ricci_var into outfile'/tmp/var.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\n'

###红色部分在导入的数据设置的分隔符等信息,导入也要相同

#导出数据的时候需要存放在数据库目录下或者/tmp目录下,MySQL5.7是没有权限导出需要设置

secure_file_priv配置对数据导入导出的影响:

secure_file_priv  mysqld 用这个配置项来完成对数据导入导出的限制

1、限制mysqld 不允许导入 | 导出

 mysqld --secure_file_prive=null

2、限制mysqld 的导入 | 导出只能发生在/tmp/目录下

 mysqld --secure_file_priv=/tmp/

3、不对mysqld 的导入| 导出做限制

 /etc/my.cnf
    [mysqld]
    secure_file_priv

把数据导入infobright库里

在inf库里添加相同类型的表在导入数据:

load data infile "/tmp/var.csv"into table var fields terminated by ',' optionally enclosed by '"' linesterminated by '\n'

文本数据导入inf里:

[root@localhost home]# cat aa.txt 

1,"noe,two or three",2222

2,3,4

create table aa(id int,textfiedl varchar(40),number int)

load data infile "/home/aa.txt" into table aa fields terminated by ',' enclosed by '"';

mysql> select * from aa;

+------+------------------+--------+

| id   | textfiedl        | number |

+------+------------------+--------+

|    1 | noe,two or three |   2222 |

|    2 | 3                |      4 |

+------+------------------+--------+

(1)“”是为了将列区分开

(2)每行写好后必须回车,不然导不进去

##自己验证正确性把

导数据库的时候不建议使用客户端工具来搞,总感觉好多坑的。


本文转自 DBAspace 51CTO博客,原文链接:http://blog.51cto.com/dbaspace/1885668


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
存储 关系型数据库 MySQL
MySQL——数据库备份上传到阿里云OSS存储
MySQL——数据库备份上传到阿里云OSS存储
74 0
|
11天前
|
存储 NoSQL 关系型数据库
可以存储文件的数据库有哪些?
可以存储文件的数据库有哪些?
17 6
|
27天前
|
存储 缓存 负载均衡
带你认识DM 共享存储数据库集群
带你认识DM 共享存储数据库集群
36 3
|
7天前
|
存储 NoSQL 关系型数据库
可以存储文件的数据库有哪些?
可以存储文件的数据库有哪些?
51 0
|
19天前
|
存储 C# 关系型数据库
“云端融合:WPF应用无缝对接Azure与AWS——从Blob存储到RDS数据库,全面解析跨平台云服务集成的最佳实践”
【8月更文挑战第31天】本文探讨了如何将Windows Presentation Foundation(WPF)应用与Microsoft Azure和Amazon Web Services(AWS)两大主流云平台无缝集成。通过具体示例代码展示了如何利用Azure Blob Storage存储非结构化数据、Azure Cosmos DB进行分布式数据库操作;同时介绍了如何借助Amazon S3实现大规模数据存储及通过Amazon RDS简化数据库管理。这不仅提升了WPF应用的可扩展性和可用性,还降低了基础设施成本。
41 0
|
1月前
|
存储 数据库
如何在数据库中存储小数:FLOAT、DECIMAL还是BIGINT?
【8月更文挑战第7天】在数据库中存储小数时,需谨慎选择数据类型:FLOAT、DECIMAL 或 BIGINT。FLOAT 存储空间小,适于非关键性小数如温度;但精度有限,可能产生误差。DECIMAL 能精确表示小数,适合货币金额等需要高度准确性的场景,不过占用空间较大。BIGINT 用于整数,若存储小数需额外转换处理。根据精度需求及应用场景选择合适类型至关重要。
|
1月前
|
存储 SQL 运维
“震撼发布!PolarDB-X:云原生分布式数据库巨擘,超高并发、海量存储、复杂查询,一网打尽!错过等哭!”
【8月更文挑战第7天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
87 1
|
1月前
|
存储 小程序 关系型数据库
原生小程序 获取手机号并进行存储到mysql数据库
原生小程序 获取手机号并进行存储到mysql数据库
|
2月前
|
存储 关系型数据库 分布式数据库
PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题
【7月更文挑战第3天】PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题。此架构让存储层专注数据可靠性,计算层专注处理SQL,提升性能并降低运维复杂度。通过RDMA加速通信,多副本确保高可用性。资源可独立扩展,便于成本控制。动态添加计算节点以应对流量高峰,展示了其灵活性。PolarDB的开源促进了数据库技术的持续创新和发展。
262 2
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之 MySQL数据库中,执行delete命令删除数据后,存储空间通常不会立即释放,该如何优化
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。