ClickHouse 创建分布式表和本地表并远程同步 MySQL 数据
此处以 MergeTree 引擎举例如果是用于高可用开发,还是需要换成 ReplicatedMergeTree 系列引擎。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546-- tablename 和 clustername 不用提前建立好,会自动建立-- 分布式表和本地表都需要删除DROP TABLE IF EXISTS <database>.<tablename_all> ON CLUSTER <clustername>;DROP TABLE IF EXISTS <database>.<tablename_local> ON CLUSTER <clustername>;-- 先创建本地表(因为同步远程表没办法以集群模式同步,所以可以先同步表结构,不插入数据,然后再使用 INSERT 同步数据到各个节点)CREATE TABLE <database>.<tablename_...
ClickHouse 简述
ClickHouse什么是 ClickHouse?优势是什么,为什么选择 CH?全称:Click Stream Data WareHouse,简称 ClickHouse,是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。 ClickHouse 的核心特性1. 完备的管理功能ClickHouse 拥有完备的管理功能,所以它称得上是一个 DBMS(Database Management System,数据库管理系统),而不仅是一个数据库。 DDL(数据定义语言):可以动态地创建、修改或删除数据库、表和视图,而无须重启服务 DML(数据操作语言):可以动态查询、插入、修改或删除数据 权限控制:可以按照用户粒度设置数据库或者表的操作权限,保障数据的安全性 数据备份与恢复:提供了数据备份导出与导入恢复机制,满足生产环境的要求 分布式管理:提供集群模式,能够自动管理多个数据库节点 2. 列式存储与数据压缩列式存储:想让查询变得更快,最简单且有效的方法是减少数据扫描范围和数据传输时的大小。假设一张数据表 A 拥有 50 个字段 A1~A50,以及 100 行数据。现在需要查询...
ClickHouse 常用函数
group_concat(distinct xxx)1groupUniqArray(toString(xxx)) -- 得到的是数组 列转行1groupArray(xxx) -- 得到的是数组 合并数组成一个字符串1arrayStringConcat(arr, separator) 行转列1arrayJoin(groupArray(xxx)) 去重函数1arrayDistinct(array) 将数组拼接成一行12arrayConcat(array) -- 此函数只有一个数组参数,无法设置分割符-- 可使用 arrayStringConcat(array, '分隔符') 设置分隔符 结果的最后一个1anyLast(xxx) 取出现次数前 N 的值1topK(3)(xxx) -- 取出现次数前 3 的值 复杂函数:过滤数组,取其中不等于 a 的第一个值1arrayElement(arrayFilter(x -> x != 'a', ['a','b','c'...
关于 ClickHouse 分区问题
最近项目在尝试 ClickHouse 集群部署,但是我们在做 ETL 的时候,有个表想着为了加快响应速度,建立了分区,所以对分区知识进行了二次调研。 重要结论首先分区并不能加快查询速度,而更加适用于更新或者删除数据用。 分区数量限制by max_partitions_per_insert_block 控制,默认是 100。当插入数据到 100 以上的时候,会报错: 12345678DB::Exception: Too many partitions for single INSERT block (more than 100). The limit is controlled by 'max_partitions_per_insert_block' setting. Large number of partitions is a common misconception. It will lead to severe negative performance impact, including slow server startup, slow INSERT ...
ELK 常用架构及使用场景
ELK 常用架构及使用场景 摘自创始人 最简单架构在这种架构中,只有一个 Logstash、Elasticsearch 和 Kibana 实例。Logstash 通过输入插件从多种数据源(比如日志文件、标准输入 Stdin 等)获取数据,再经过滤插件加工数据,然后经 Elasticsearch 输出插件输出到 Elasticsearch,通过 Kibana 展示。 Logstash 作为日志搜集器这种架构是对上面架构的扩展,把一个 Logstash 数据搜集节点扩展到多个,分布于多台机器,将解析好的数据发送到 Elasticsearch server 进行存储,最后在 Kibana 查询、生成日志报表等。 这种结构因为需要在各个服务器上部署 Logstash,而它比较消耗 CPU 和内存资源,所以比较适合计算资源丰富的服务器,否则容易造成服务器性能下降,甚至可能导致无法正常工作。 Beats 作为日志搜集器这种架构引入 Beats 作为日志搜集器。目前 Beats 包括四种: Packetbeat:搜集网络流量数据 Topbeat:搜集系统、进程和文件系统级别的 CP...
ELK 配置 SSL【Docker 下操作】
介绍Elasticsearch 程序中提供 elasticsearch-certutil 命令来简化生成证书的过程。 该命令共有 3 种模式: CA 模式:用于生成一个新的证书颁发机构 CERT 模式:用于生成 X.509 证书和私钥 CSR 模式:用于生成证书签名请求,该请求指向受信任的证书颁发机构以获取签名的证书。签名证书必须为 PEM 或 PKCS#12 格式,才能与 Elasticsearch 安全功能一起使用 生成证书certutil 官方文档 如果集群部署,想为每个 node 都配置 SSL,就改 instance.yml 和 extra_hosts 参考:https://www.elastic.co/cn/blog/configuring-ssl-tls-and-https-to-secure-elasticsearch-kibana-beats-and-logstash 注意:证书位置必须写绝对路径 新建 instance.yml 以创建各容器的自签名证书123456789# name会对应到生成证书文件的路径名称# dns可以多个,对应其匹配域名in...
Elastic APM
Elastic Application Performance Management (APM) 是基于 Elastic Stack 构建的应用性能监控系统。 背景目前我们日志系统已经投入生产使用,对于日常开发有了一个方便排查问题的途径。 但是,有些难题不是浮于表面的,下一步需要做的,便是找出这些埋于底层的性能及效率的问题。这便是 Application Performance Management (APM) 出现的目的。 目标 收集有关请求的响应时间、数据库查询 外部 HTTP 请求等的详细性能信息 对应用程序的请求期间发生的其他缓慢操作的跟踪 自动收集未处理的错误和异常,错误主要基于堆栈跟踪进行分组,因此可以识别出现的新错误,并密切关注特定错误发生的次数 价值依靠 APM,过滤出不合格的接口,根据具体情况加以改进,最终实现一个可以满足三高的理想状态。 我们可以对接口的所有信息进行追溯,现在我们已经有了 trace-id,可以反向拿"不合格的接口"的 trace-id 去日志里找原因。 APM ServerAPM Server 是用 Go 编写的...
Filebeat 多实例部署(守护进程方式 systemd)
安装好 Filebeat1站内搜索:记录日志系统的安装-部署-配置-使用文档(1) 复制两个子文件夹12cp -r /etc/filebeat{,1}cp -r /etc/filebeat{,2} 修改各自的 filebeat.yml1234...(省略 inputs 之类的)logging.files: # 这里修改文件夹路径 path: /var/log/filebeat1/2 查看机器 systemd 的 path 我这里是 /usr/lib/systemd/system 添加两份配置文件 vi /usr/lib/systemd/system/filebeat1.service 1234567891011121314151617[Unit]Description=Filebeat sends log files to Logstash or directly to Elasticsearch.Documentation=https://www.elastic.co/bea...
Kibana Dashboard 结合 Filebeat 的使用
利用 Filebeat Module 监听/传输数据到 ES 并通过 Kibana 的面板显示要记得将 modules 功能打开 filebeat 安装完默认会在 /etc/filebeat/modules.d 下放着许多模块的 yml,需要哪个,就执行 filebeat modules enable xxx filebeat.yml 配置: 1234567891011121314151617181920212223filebeat.config: modules: enabled: true path: modules.d/*.yml reload.enabled: true reload.period: 10s# ------------------------------ Kibana Output -------------------------------output.elasticsearch: hosts: ["10.0.2.15:9200"] username: "elastic"...
Kibana 用法
Kibana 查询语法 要搜索一个确切的字符串,即精确搜索,需要使用双引号引起来:path:"/app/logs/nginx/access.log" 如果不带引号,将会匹配每个单词:uid token 模糊搜索:path:"/app/~" * 匹配 0 到多个字符:*oken ? 匹配单个字符:tok?n 匹配是否包含的条件: +:搜索结果中必须包含此项 -:不能含有此项 什么都没有则可有可无:+token -appVersion appCode 运算符 AND/OR/NOT 必须大写:token AND uid;token OR uid;NOT uid 允许一个字段值在某个区间([] 包含该值,{} 不包含):@version:[1 TO 3] 组合查询:(uid OR token) AND version 转义特殊字符 + – && || ! ( ) { } [ ] ^ " ~ * ? : \:转义特殊字符只需在字符前加上符号 \ 查询样例简单查...
