我是靠谱客的博主 爱听歌蜜蜂,最近开发中收集的这篇文章主要介绍clickhouse 在集群上增删改查测试环境说明查看集群建库建表插入数据修改数据添加字段删除行删除表,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

测试环境说明

这里测试的是 “1分片1副本” 集群环境,2台服务器( PC1 192.168.100.101 & PC2 192.168.100.102)。集群名字之前在 metrika.xml 里配置的是 ch_1s_1r

查看集群

在任意一台机上,使用 /usr/bin/clickhouse-client --host localhost --port 9000 连接本地服务器
使用 SELECT * FROM system.clusters 打印集群列表
在这里插入图片描述

建库

create database <数据库名> on cluster <集群名>,创建之后会打印受影响的所有主机信息
在这里插入图片描述
在另一台服务器上使用 SHOW DATABASES 查看当前数据库,可以发现数据库已经同步过来了
在这里插入图片描述
使用 SHOW CREATE DATABASE <数据库名> 可以看到建库语句 (但这里不是实际的建库语句)

在这里插入图片描述

建表

CREATE TABLE test.test_1s1r ON CLUSTER ch_1s_1r(id UInt8, name String, date DateTime) ENGINE = ReplicatedMergeTree('/clickhouse/{layer}/tables/{shard}/test_1s1r', '{replica}') PARTITION BY toYYYYMM(date) ORDER BY id

建表后,同样会打印出所有受影响主机信息

注意:只有 DDL 语句需要申明集群,后续插入、查询等语句均不需要
在这里插入图片描述

在另一台服务器上查,可以发现数据表已经同步过来了

# 指明数据库
USE <待查询的数据库>
# 显示该数据库下的所有表
SHOW TABLES

在这里插入图片描述

插入数据

插入数据 INSERT INTO test.test_1s1r (1, 'bob', now())。可以发现:执行命令的那台服务器,数据已经被插入了,而另一台服务器,则查不到数据
在这里插入图片描述
这时候,在未同步的服务器上查询clickhouse的错误日志

  1. 可以使用 tail 命令查看错误日志的倒数100行
    tail -n 100 /var/log/clickhouse-server/clickhouse-server.err.log
  2. 使用 vim 命令编辑错误日志,并使用 / 查询错误
    vim /var/log/clickhouse-server/clickhouse-server.err.log

在这里插入图片描述
错误日志显示:域名无法解析。

注意,之前在配置 metrika.xml 时,我用的都是IP地址,从没用过域名。但是 clickhouse 还是会自动使用域名进行通信。因此必须修改 /etc/hosts 文件,为每台机配置 “域名到IP” 的映射关系。vim /etc/hosts 添加如下内容

192.168.100.101 PC1
192.168.100.102 PC2
192.168.100.103 PC3

在这里插入图片描述
修改好后,无需任何操作,映射立即生效

重新使用 /usr/bin/clickhouse-client --host localhost --port 9000 连接本地服务器,使用查询命令 SELECT * FROM <之前创建的表>,可以发现,之前未同步的数据,在域名IP映射被修复后,就立即自动同步了。
在这里插入图片描述
现在再次插入数据试试 INSERT INTO test.test_1s1r VALUES (2, 'tina', now())。可以看到插入的回显跟单机一样,但在另一个副本上立马就能查询的到了
在这里插入图片描述

修改数据

修改数据的时候要注意一下,“排序键” 和 “分区键” 不能被修改,会报错。

修改成功会打印 ok,但是明明影响了一行,这里却提示 0 行被设置

修改语句:ALTER TABLE test_1s1r UPDATE name = 'unknown' WHERE name = 'bob'
在这里插入图片描述

在这里插入图片描述

添加字段

#打印建表语句
SHOW CREATE TABLE <数据库名>.<表名>
#修改表结构,新增一列字段
ALTER TABLE <数据库名>.<表名> ADD/MODIFY/DELETE COLUMN <字段名> COMMENT <注释内容>
#重新打印建表语句
SHOW CREATE TABLE <数据库名>.<表名>

在这里插入图片描述

删除行

ALTER TABLE <数据库名>.<表名> DELETE WHERE <筛选条件>
在这里插入图片描述

删除表

注意,删除表和创建表一样,必须使用集群的方法。不然,只会删除本机的表,而副本中的表依然存在,这样会造成数据分裂
在这里插入图片描述
正确的做法是 DROP TABLE <数据库名>.<表名> ON CLUSTER <集群名>

这里由于刚刚使用错误的语句,把本机的表删除了,因此这里会报错。与此同时,集群上的其他主机的相应表也被删除了
在这里插入图片描述
也可以使用 DROP TABLE IF EXISTS <数据库名>.<表名> ON CLUSTER <集群名> 跳过不存在的表
在这里插入图片描述

最后

以上就是爱听歌蜜蜂为你收集整理的clickhouse 在集群上增删改查测试环境说明查看集群建库建表插入数据修改数据添加字段删除行删除表的全部内容,希望文章能够帮你解决clickhouse 在集群上增删改查测试环境说明查看集群建库建表插入数据修改数据添加字段删除行删除表所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部