ClickHouse 分布式表创建细节

记录一次创建分布式表的过程。

背景

  • ClickHouse服务器数量:10
  • 需创建本地表(local)与分布式表

问题发现

创建本地表的过程中未出现问题,一切正常。(具体的创表语句简略如下)

CREATE TABLE dbtest.tb_test_local ON CLUSTER cluster_test
(`id` Int32,`date` Date,...
)
ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/{layer}-{shard}/tb_test_local', '{replica}')
PARTITION BY toYYYYMMDD(date)
ORDER BY (date,id)
SETTINGS index_granularity = 8192

创建分布式表示报错,显示权限不够。(具体的创表语句简略如下)

CREATE TABLE dbtest.tb_test ON CLUSTER cluster_test AS dbtest.tb_test_local
ENGINE = Distributed('cluster_test', 'dbtest', 'tb_test_local', intHash64(date,id));

报错信息为:

DB::Exception: user_test: Not enough privileges. To execute this query it’s necessary to have grant REMOTE ON *.*

意思是说缺少REMOTE权限。

排查原因

去ClickHouse官方文档,查看remote权限

如果允许在table engines和table functions中使用外部数据源,则需要授予SOURCES权限。

个人理解:创建分布式表时,Distributed引擎需要指定集群名、远程数据库名、远程表名和数据分片键。分布式表需要去关联集群上所有服务器下的远程表(我们建立的本地local表),因此需要使用外部数据源。

外部数据源:用于连接数据库的一组存储的“源”信息。数据源包含数据库服务器的名称和位置、数据库驱动程序的名称以及在登录到数据库时所需的信息。

查看user_test用户的权限

show grants for user_test;

得到结果为

GRANT SELECT, INSERT, ALTER, CREATE DATABASE, CREATE TABLE, CREATE VIEW, CREATE DICTIONARY ON dbtest.* TO user_test

发现user_test用户确实不存在SOURCES权限。

解决问题

授予用户user_test SOURCES权限

GRANT SOURCES  ON dbtest.* TO user_test;

报错:

Exception on client:
Code: 509. DB::Exception: SOURCES cannot be granted on the database level

原因是由于SOURCES权限不是数据库等级的权限,所以在指定数据库范围时,应全量覆盖。

即:

GRANT SOURCES  ON *.* TO user_test;

再次查看用户user_test权限得到的结果为:

GRANT SOURCES ON *.* TO user_test
GRANT SELECT, INSERT, ALTER, CREATE DATABASE, CREATE TABLE, CREATE VIEW, CREATE DICTIONARY ON dbtest.* TO user_test

执行创建分布式表语句

CREATE TABLE dbtest.tb_test ON CLUSTER cluster_test AS dbtest.tb_test_local
ENGINE = Distributed('cluster_test', 'dbtest', 'tb_test_local', intHash64(date,id));

创建成功!

附一个查询集群服务器数据库下所有表的脚本,方便查看集群上所有服务器是否都创建成功。

for i in { ip段 };
do echo ${i};
clickhouse-client -h i --port 9900 -u 用户名--password 密码-m -d 数据库名称 -q "show tables;";
done

ClickHouse 分布式表创建细节相关推荐

  1. waterdrop1.x导入clickhouse分布式表-默认方式

    先引用一段官方output clickhouse插件中,对分布式表的说明 官方文档地址:https://interestinglab.github.io/seatunnel-docs/#/zh-cn/ ...

  2. waterdrop1.x导入clickhouse分布式表-fitersql

    接上一篇,最后留下的两个问题, 针对问题2:在不修改源代码的情况下,如何实现分布式表的本地hash方式写入? 现在做一些尝试和验证. 思路: waterdrop是可以进行多数据流程处理的,官方说明文档 ...

  3. waterdrop1.x导入clickhouse分布式表-修改源码

    接上一篇,使用fiter+sql方式进行分布式写表,存在效率低的问题,现在尝试从源码入手,制定clickhouse的分布式表本地写入方案 编译好的class文件: https://download.c ...

  4. clickhouse 分布式表

    分布式表一般用来查询,实际数据写入还是在本地式表 在操作分布式表之前: 1 连接到tutorial数据库. 2 在MergeTree 引擎上创建hits_v1表,该表将位于所有集群主机上:(ON CL ...

  5. clickhouse分布式表调研

    clickhouse分区表调研 文章目录 clickhouse分区表调研 1.搭建本地环境 1.1.搜索镜像是否存在 1.2.下载镜像 1.3.运行容器 1.4.修改密码 1.4.1.进入容器 1.4 ...

  6. clickhouse删除表的问题

    文章目录 前言 测试 解决办法 前言 在日常使用clickhouse的时候,肯定会遇到删除表的操作,删除表的命令:DROP TABLE IF EXISTS test.test.有时候删除后表又想马上重 ...

  7. 18_clickhouse副本同步与高可用功能验证,分布式表与集群配置,数据副本与复制表,ZooKeeper整合,创建复制表,副本同步机制,数据原子写入与去重,负载平衡策略,案例(学习笔记)

    24.副本同步与高可用功能验证 24.1.分布式表与集群配置 24.2.数据副本与复制表 24.3.ZooKeeper整合 24.4.创建复制表 24.5.副本同步机制 24.6.数据原子写入与去重 ...

  8. ClickHouse MergeTree副本表和分布式表(切片)

    在前面的文章中我们详细介绍了 MergeTree 表引擎.MergeTree 家族其他表引擎.MergeTree 二级索引等内容,clickhouse数据库都是在单节点上运行的,作为OLAP处理的大数 ...

  9. Clickhouse Distributed分布式表引擎的基本介绍和使用说明

    目录 1. 分布式的本地表 1.1 分布式的创建本地表 1.2 分布式的更改本地表表名 1.3 分布式的删除本地表 2. Distributed表 2.1 创建Distributed表 2.2 删除分 ...

最新文章

  1. Error:(17, 0) SDK location not found. Define location with sdk.dir in the local.properties file or w
  2. C++ 数字、string 简便互转
  3. python使用input函数时、必须添加提示文字-浅谈python3中input输入的使用
  4. 关于小型长周期项目的一些建议
  5. ABAP计算间隔月份
  6. Java反射,从0开始
  7. 基于c++的马氏距离算法代码_监控警戒区基于掩码算法的简单实现(附代码)
  8. golang日期时间格式format()
  9. json介绍及简单示例
  10. 董明珠为什么做不好手机?
  11. 包,logging日志模块,copy深浅拷贝
  12. C++STL笔记(X):栏位宽度、填充字符、位置调整
  13. ASP.NET实现数据采集
  14. bzoj 1069: [SCOI2007]最大土地面积(旋转卡壳)
  15. Scala:函数和闭包
  16. 解决hdfs dfs -mkdir input报错`mkdir`:No such file or directory
  17. [实践篇]13.9 如何使用gcore(ramdump)排查内存黑洞?
  18. solidworks属性管理器_发现SOLIDWORKS自定义属性(下)
  19. 服务器电脑增加机械硬盘分区,台式电脑加新、旧机械硬盘分区教程 旧机械硬盘可以装新电脑上吗?...
  20. 校园网登录界面打不开,远程计算机或设备不接受链连接

热门文章

  1. 【MCAL_CANDriver】-1.4-Tq与Bit Rate,Sync_Seg,Prop_Seg,Phase_Seg1, Phase_Seg2之间的关系
  2. error: ...\Windows Kits\8.1\Include\um\combaseapi.h IUnknown is undefined 问题
  3. Vue开发问题记录:expected indentation of 0 spaces but found 2
  4. 配置Kafka发送大消息
  5. openssl漏洞怎么处理_Windows暴露严重安全漏洞CVE-2020-0601,影响关键加密功能
  6. HP小型机操作系统安装配置指导书
  7. 【预告】千亿数据的潘多拉魔盒:从分库分表到分布式数据库
  8. 【高效开发工具系列】Windows 怎么使用 telnet
  9. 大话设计模式——迭代器模式
  10. 东软 牛人学院 面试