大连小型网站建设,内部网站开发,做网站的人能看到浏览的人的信息吗,住房城乡建设部网站首页1 概述 在对ClickHouse进行分布表复制表zookeeper保证高可用的情况下进行性能测试时遇到如下坑#xff0c;进行整理
2 分布表join问题Unknown identifier: LO_CUSTKEY, context:…
1.1 问题描述 SQL如下#xff1a;
SELECT count(1)
FROM performance.line_all AS c
LEFT…1 概述 在对ClickHouse进行分布表复制表zookeeper保证高可用的情况下进行性能测试时遇到如下坑进行整理
2 分布表join问题Unknown identifier: LO_CUSTKEY, context:…
1.1 问题描述 SQL如下
SELECT count(1)
FROM performance.line_all AS c
LEFT JOIN performance.customer_all AS l ON l.C_CUSTKEY c.LO_CUSTKEY执行该SQL报错如下
Received exception from server (version 19.4.0):
Code: 47. DB::Exception: Received from 10.0.0.50:9000. DB::Exception: Received from ambari04:9000, 10.0.0.54. DB::Exception: Unknown identifier: LO_CUSTKEY, context: query: LO_CUSTKEY required_names: LO_CUSTKEY source_tables: table_aliases: complex_aliases: masked_columns: array_join_columns: source_columns: .根据报错信息可以不知道LO_CUSTKEY,这个连接字段
1.2 解决 分布表join在on后的连接条件中from后面跟的表的连接字段放在前面。修改SQL如下
SELECT count(1)
FROM performance.customer_all AS c
LEFT JOIN performance.line_all AS l ON l.C_CUSTKEY c.LO_CUSTKEY2 与Zookeeper连接丢失,Unknown status, Cannot allocate block number in ZooKeeper: , ZooKeeper session has been expired…
2.1 问题描述 在执行SQL中如在遇到如下报错
↑ Progress: 157.94 million rows, 6.91 GB (92.63 thousand rows/s., 4.05 MB/s.) Received exception from server (version 19.4.0):
Code: 319. DB::Exception: Received from 10.0.0.50:9000. DB::Exception: Unknown status, client must retry. Reason: Connection loss. ↖ Progress: 94.47 million rows, 4.18 GB (95.07 thousand rows/s., 4.20 MB/s.) Received exception from server (version 19.4.0):
Code: 999. DB::Exception: Received from 10.0.0.50:9000. DB::Exception: Cannot allocate block number in ZooKeeper: Coordination::Exception: Connection loss. lineorder_flat_all.Distributed.DirectoryMonitor: Code: 225, e.displayText() DB::Exception: Received from ambari02:9000, 10.0.0.52. DB::Exception: ZooKeeper session has been expired.. Stack trace:根据报错信息可知是因为与Zookeeper的连接丢失导致不能分配块号等问题。因为clickhouse对zookeeper的依赖非常的重表的元数据信息每个数据块的信息每次插入的时候数据同步的时候都需要和zookeeper进行交互。zookeerper 服务在同步日志过程中会导致ZK无法响应外部请求进而引发session过期等问题
2.2 解决 1加大zookeeper会话最大超时时间在zoo.cfg 中修改MaxSessionTimeout120000修改后重启zookeeper。 注意zookeeper的超时时间不要设置太大在服务挂掉的情况下会反映很慢 2zookeeper的snapshot文件存储盘不低于1T注意清理策略 3在zookeeper中将dataLogDir存放目录应该与dataDir分开可单独采用一套存储设备来存放ZK日志。 4在ZOO.CFG中增加forceSyncno。默认是开启的为避免同步延迟问题ZK接收到数据后会立刻去将当前状态信息同步到磁盘日志文件中同步完成后才会应答。将此项关闭后客户端连接可以得到快速响应。关闭forceSync选项后会存在潜在风险虽然依旧会刷磁盘log.flush()首先被执行但因为操作系统为提高写磁盘效率会先写缓存当机器异常后可能导致一些zk状态信息没有同步到磁盘从而带来ZK前后信息不一样问题。 5clickhouse建表的时候添加use_minimalistic_part_header_in_zookeeper参数对元数据进行压缩存储但是修改完了以后无法再回滚的。
3 分布表只读Table is in readonly mode
3.1 问题描述 如SQL在执行插入数据时遇到如下错误
2020.05.28 10:59:11.048910 [ 47 ] {} Error lineorder_flat_all.Distributed.DirectoryMonitor: Code: 242, e.displayText() DB::Exception: Received from ambari04:9000, 10.0.0.54. DB::Exception: Table is in readonly mode. Stack trace:是因为zookeeper压力太大表处于“read only mode”模式导致插入失败
3.2 解决 1在zookeeper中将dataLogDir存放目录应该与dataDir分开可单独采用一套存储设备来存放ZK日志。 2做好zookeeper集群和clickhouse集群的规划可以多套zookeeper集群服务一套clickhouse集群。
4 Clickhouse 集群zookeeper数据丢失,Can’t get data for node /clickhouse/tables/…
4.1 问题描述 如在日志中发现如下报错
Cannot create table from metadata file /var/lib/clickhouse/metadata/xx/xxx.sql, error: Coordination::Exception: Can’t get data for node /clickhouse/tables/xx/cluster_xxx-01/xxxx/metadata: node doesn’t exist (No node), stack trace:是因为zookeeper数据丢失从而使clickhouse数据库无法启动
4.2 解决 1将/var/lib/clickhouse/metadata/ 下的SQL与/var/lib/clickhouse/data/ 下的数据备份之后删除 2启动数据库 3创建与原来表数据结构的MergeTree表 4将之前分布式表的数据文件夹复制到新表的数据目录中。 5重启数据库 6重新创建原结构本地表 7重新创建原结构分布式表 8insert into [分布式表] select * from [MergeTree表]