ClickHouse 分布式表创建细节
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 分布式表创建细节相关推荐
- waterdrop1.x导入clickhouse分布式表-默认方式
先引用一段官方output clickhouse插件中,对分布式表的说明 官方文档地址:https://interestinglab.github.io/seatunnel-docs/#/zh-cn/ ...
- waterdrop1.x导入clickhouse分布式表-fitersql
接上一篇,最后留下的两个问题, 针对问题2:在不修改源代码的情况下,如何实现分布式表的本地hash方式写入? 现在做一些尝试和验证. 思路: waterdrop是可以进行多数据流程处理的,官方说明文档 ...
- waterdrop1.x导入clickhouse分布式表-修改源码
接上一篇,使用fiter+sql方式进行分布式写表,存在效率低的问题,现在尝试从源码入手,制定clickhouse的分布式表本地写入方案 编译好的class文件: https://download.c ...
- clickhouse 分布式表
分布式表一般用来查询,实际数据写入还是在本地式表 在操作分布式表之前: 1 连接到tutorial数据库. 2 在MergeTree 引擎上创建hits_v1表,该表将位于所有集群主机上:(ON CL ...
- clickhouse分布式表调研
clickhouse分区表调研 文章目录 clickhouse分区表调研 1.搭建本地环境 1.1.搜索镜像是否存在 1.2.下载镜像 1.3.运行容器 1.4.修改密码 1.4.1.进入容器 1.4 ...
- clickhouse删除表的问题
文章目录 前言 测试 解决办法 前言 在日常使用clickhouse的时候,肯定会遇到删除表的操作,删除表的命令:DROP TABLE IF EXISTS test.test.有时候删除后表又想马上重 ...
- 18_clickhouse副本同步与高可用功能验证,分布式表与集群配置,数据副本与复制表,ZooKeeper整合,创建复制表,副本同步机制,数据原子写入与去重,负载平衡策略,案例(学习笔记)
24.副本同步与高可用功能验证 24.1.分布式表与集群配置 24.2.数据副本与复制表 24.3.ZooKeeper整合 24.4.创建复制表 24.5.副本同步机制 24.6.数据原子写入与去重 ...
- ClickHouse MergeTree副本表和分布式表(切片)
在前面的文章中我们详细介绍了 MergeTree 表引擎.MergeTree 家族其他表引擎.MergeTree 二级索引等内容,clickhouse数据库都是在单节点上运行的,作为OLAP处理的大数 ...
- Clickhouse Distributed分布式表引擎的基本介绍和使用说明
目录 1. 分布式的本地表 1.1 分布式的创建本地表 1.2 分布式的更改本地表表名 1.3 分布式的删除本地表 2. Distributed表 2.1 创建Distributed表 2.2 删除分 ...
最新文章
- Error:(17, 0) SDK location not found. Define location with sdk.dir in the local.properties file or w
- C++ 数字、string 简便互转
- python使用input函数时、必须添加提示文字-浅谈python3中input输入的使用
- 关于小型长周期项目的一些建议
- ABAP计算间隔月份
- Java反射,从0开始
- 基于c++的马氏距离算法代码_监控警戒区基于掩码算法的简单实现(附代码)
- golang日期时间格式format()
- json介绍及简单示例
- 董明珠为什么做不好手机?
- 包,logging日志模块,copy深浅拷贝
- C++STL笔记(X):栏位宽度、填充字符、位置调整
- ASP.NET实现数据采集
- bzoj 1069: [SCOI2007]最大土地面积(旋转卡壳)
- Scala:函数和闭包
- 解决hdfs dfs -mkdir input报错`mkdir`:No such file or directory
- [实践篇]13.9 如何使用gcore(ramdump)排查内存黑洞?
- solidworks属性管理器_发现SOLIDWORKS自定义属性(下)
- 服务器电脑增加机械硬盘分区,台式电脑加新、旧机械硬盘分区教程 旧机械硬盘可以装新电脑上吗?...
- 校园网登录界面打不开,远程计算机或设备不接受链连接
热门文章
- 【MCAL_CANDriver】-1.4-Tq与Bit Rate,Sync_Seg,Prop_Seg,Phase_Seg1, Phase_Seg2之间的关系
- error: ...\Windows Kits\8.1\Include\um\combaseapi.h IUnknown is undefined 问题
- Vue开发问题记录:expected indentation of 0 spaces but found 2
- 配置Kafka发送大消息
- openssl漏洞怎么处理_Windows暴露严重安全漏洞CVE-2020-0601,影响关键加密功能
- HP小型机操作系统安装配置指导书
- 【预告】千亿数据的潘多拉魔盒:从分库分表到分布式数据库
- 【高效开发工具系列】Windows 怎么使用 telnet
- 大话设计模式——迭代器模式
- 东软 牛人学院 面试