概述
测试环境说明
这里测试的是 “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的错误日志
- 可以使用
tail
命令查看错误日志的倒数100行
tail -n 100 /var/log/clickhouse-server/clickhouse-server.err.log
- 使用
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 在集群上增删改查测试环境说明查看集群建库建表插入数据修改数据添加字段删除行删除表所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复