常规的关系数据库已经不能满足现有业务需求,于是,装了一个ck玩玩,结果,妥妥的跳坑!
安装,首页就是一行语句,curl就可以安装了,确实很简单。
写了一个小工具,把整个sqlserver数据导入到ck,速度还不错,每秒2w+,然后做了几个报表的查询脚本,sqlserver 291s,ck不到1s,这个差异吓我一跳,快得有点过分!
好吧,往里搬运更多的查询功能,打算整个读写分离,结果,导入数据时候默认使用MargeTree,在实际中,需要用Order By的时候,非常非常非常慢!看了很多文章,说是要用ReplicatedReplacingMergeTree,于是快速写了一个create table脚本,直接报zookeeper连接错误。
好吧,下载了一个zookeeper,安装上了,也在/etc/clickhouse-server/config.xml中配置了zookeeper的连接,结果,还是不行!很气人的好不好。
在官网找了一堆文档,从头看起,里边有install的说明
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
sudo yum install -y clickhouse-server clickhouse-client
sudo systemctl enable clickhouse-server
sudo systemctl start clickhouse-server
sudo systemctl enable clickhouse-keeper
sudo systemctl start clickhouse-keeper
这样就好了!
我记住了,把原来的先停掉,然后再安装。安装yum install clickhouse-server的时候,会自动把keeper安装好,安装好后,不要着急启动服务,先配置好ck的config.xml,包括访问地址
<zookeeper>
<node>
<host>127.0.0.1</host>
<port>9181</port>
</node>
</zookeeper>
<listen_host>0.0.0.0</listen_host>
<timezone>Asia/Shanghai</timezone>
这三个地方重点改一下
然后就启动两个服务吧。一切成功!
值得高兴的是,之前导入的数据,全部还在。太好了,省了不少时间。
既然入坑了,就继续踩坑,头破血流也在所不惜!
另外一个巨坑,flink-cdc还想没有现成的sqlserver-clickhouse,有没有帮忙弄弄的,谢谢大侠们
注意时区的设置,这个很重要,clickhouse写入日期时间数据,默认是按utc写入的,也就是说
insert into table (dt) values('2023-01-01 20:00:00')
查询出来
select dt from table
结果出来是
2023-01-01 12:00:00
把查询改为
SELECT itoTimezone(dt,timezone()) dt from table
这样出来的结果就是正确的+8数据,当然也可以不管这么多,直接+8
select date_add(hour,8, dt) from table
看起来是对的,到程序里边怎么样,还不知道,估计直接查dt就可以了,类似json一样。
遇到一个问题,删除表后,竟然无法再创建,提示
REPLICA_IS_ALREADY_EXIST
事情是这样的,创建表,使用了order by (datetimefield,field2),后续要对datetimefield这个字段更新,竟然提示不能修改,没办法,想去掉这个字段,看文档,是没有办法的。只能重建表,反正都是测试用的数据,无所谓了。
创建表的配置是:
ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/dbname/tablename',
'dbname.tablename',
datetimefield,field2) PRIMARY KEY (`id`)
ORDER BY (`id`)
drop table 后,再用相同的配置,只是减少了一个datetimefield字段,就报上述错误。
网上找了很多,都没有说清楚解决办法,这里补充一下,前提是使用clickhouse-keeper,在Linux输入以下命令,进入到keeper的命令模式
clickhouse keeper-client
默认安装都没有密码,且这个服务只能127.0.0.1访问的
然后就像linux一样操作即可
ls列出所有的目录
然后找到删除表的那个目录
cd clickhouse
cd tables
cd dbname
rmr tablename
exit
好了,这样就把原来的节点删除掉了,再去创建表,没有再报错了。文章来源:https://www.toymoban.com/news/detail-798092.html
至于keeper具体使用,自己慢慢摸索吧!文章来源地址https://www.toymoban.com/news/detail-798092.html
到了这里,关于入门clickhouse的坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!