AIOps 一场颠覆传统运维的盛筵
1200
2022-10-02
clickhouse学习笔记-管理与运维
默认配置文件结构
cat users.xml
参考资料:https://clickhouse.com/docs/zh/introduction/performance/
一. 用户配置
用户profile
# CH使用 etc/clickhouse-server/users.xml 来定义用户相关配置项# profile的作用类似用户角色,可以在users.XML中定义多组profile。每组定义不同的配置项,实现配置复用。# 在所有的profiles中default的profiles默认被加载,必须存在。# profiles配置支持继承。
配置约束
# constaints 标签可以设置一组约束条件,保障profile内的参数不会被随意修改。# default中默认定义的constraints约束,默认被全局其他profile继承。# 约束有三个规则# Min:最小值约束,设置参数不能小于该值。# Max: 最大值约束,不能大于该值。# Readonly:只读约束,该值不能被修改。
用户定义
# users标签可以配置自定义用户# password 支持明文,sha256加密和double_sha1加密三种形式# sha256 配置
二. 权限管理
访问权限
网络访问权限
# 网络访问权限使用networks标签设置,用于限制某个用户登录的客户端地址。# 有ip地址,host主机名称,正则表达式三种形式
数据库与字典访问权限
# allow_databases 指定数据库权限,不定义表示不限制# allow_dictionaries 指定字典权限
查询权限
# 读权限:select,exists,show,describe# 写权限:insert,optimize查询# 设置权限:set# DDL权限:create,drop,alter,rename,attach,detach,truncate# 其他权限:kill,use# 以上权限可以通过如下两个标签控制# readonly:读,写,设置三类均可以控制。0--不限制(默认值)。1--只读。2--三者都有。# allow_ddl:ddl权限控制。0-不允许,1,允许(默认值)
数据行级别权限
# 决定了一个用户能看到什么数据.# 在具体使用场景中进行权衡。
三. 熔断机制
# 使用资源数量达到阈值则会被自动中断,实现自我保护。# 1. 根据时间周期的累计使用量熔断
配置实例
# 创建一个用户wgw,密码使用sha256 加密,只能通过127.0.0.1访问CH# 仅能访问数据库wgw。数据字典test_flat_dictionary。# 引用熔断策略rule1,当15秒内累计查询超过10次则熔断。# 数据库只有可读权限,没有DDL权限。开启log_queries日志权限。# max_memory_usage 设置为700M. 可以在500-1000M之间进行配置。[root@ch5 users.d]# cat wgw.xml
四. 数据备份
副本并必能解决误删数据的问题。
导出文件备份
# 数据量较小导出方式clickhouse-client -u default --password 123456 --query="select * from partition_v2" >test_back.tsvclickhouse-client -u default --password 123456 --query="select * from partition_v2" >test_back.csv # 导入cat test_back.tsv |clickhouse-client -u default --password 123456 --query "insert into partition_v1 FORMAT TSV"# 数据量大的时候,可以指直接cp备份整个目录文件。
通过快照表备份
# 将本地表备份到远程节点去。create table partition_v3 as partition_v2;insert into table partition_v3 select * from remote('10.0.1.205:9000','default','partition_v2','default')
按分区备份
# 使用freeze备份,本质是文件目录的硬链接操作alter table tb_name freeze partition partition_expr# 使用fetch备份alter table tb_name fetch partition partition_id from zk_path# 还原按照装载模式进行。
五. 服务监控
系统表
# metrics,events,asynchronous-metrics# metrics 统计CH运行中的高层次概要信息。select * from metrics limit 5;┌─metric──────────┬─value─┬─description─────────────────────────────────────┐│ Query │ 1 │ Number of executing queries ││ Merge │ 0 │ Number of executing background merges ││ PartMutation │ 0 │ Number of mutations (ALTER DELETE/UPDATE) ││ ReplicatedFetch │ 0 │ Number of data parts being fetched from replica ││ ReplicatedSend │ 0 │ Number of data parts being sent to replicas │└─────────────────┴───────┴─────────────────────────────────────────────────┘# events 统计已经执行过的高层次累计概要信息。select event,value from events limit 5;┌─event─────────────┬─value─┐│ Query │ 34 ││ SelectQuery │ 18 ││ InsertQuery │ 4 ││ FailedQuery │ 5 ││ FailedSelectQuery │ 1 │└───────────────────┴───────┘# asynchronous-metrics 用于统计当前正在后台异步运行的高层次概要信息select * from asynchronous_metrics limit 5;┌─metric───────────────────────────────────┬───────value─┐│ AsynchronousMetricsCalculationTimeSpent │ 0.000931086 ││ jemalloc.arenas.all.muzzy_purged │ 43734642 ││ jemalloc.arenas.all.pmuzzy │ 193455 ││ jemalloc.background_thread.run_intervals │ 0 ││ jemalloc.background_thread.num_runs │ 0 │└──────────────────────────────────────────┴─────────────┘
查询日志
# 查询日志目前主要有6中类型,从不同角度记录CH操作行为。默认配置是关闭的。# 需要在config.xml中进行更改。# 1.query_log:记录了CH服务中所有已经执行的查询记录。select type,concat(substr(query,1,50),'...')query ,read_rows,query_duration_ms as duration from query_log limit 5;┌─type────────┬─query─────────────────────────────────────────────────┬─read_rows─┬─duration─┐│ QueryStart │ SELECT message FROM system.warnings... │ 0 │ 0 ││ QueryStart │ SELECT DISTINCT arrayJoin(extractAll(name, '[\\w_]... │ 0 │ 0 ││ QueryFinish │ SELECT message FROM system.warnings... │ 0 │ 6 ││ QueryFinish │ SELECT DISTINCT arrayJoin(extractAll(name, '[\\w_]... │ 4025 │ 27 ││ QueryStart │ select bar(number,0,4) from numbers(4);... │ 0 │ 0 │└─────────────┴───────────────────────────────────────────────────────┴───────────┴──────────┘# 2. query_thread_log:记录了所有线程执行的查询信息。select thread_ids,concat(substr(query,1,50),'...')query ,query_duration_ms as duration,memory_usage from query_log limit 5;┌─thread_ids──────────────────────┬─query─────────────────────────────────────────────────┬─duration─┬─memory_usage─┐│ [] │ SELECT message FROM system.warnings... │ 0 │ 0 ││ [] │ SELECT DISTINCT arrayJoin(extractAll(name, '[\\w_]... │ 0 │ 0 ││ [3126,3464] │ SELECT message FROM system.warnings... │ 6 │ 0 ││ [3127,3334,3612,3464,3610,3611] │ SELECT DISTINCT arrayJoin(extractAll(name, '[\\w_]... │ 27 │ 4283246 ││ [] │ select bar(number,0,4) from numbers(4);... │ 0 │ 0 │└─────────────────────────────────┴───────────────────────────────────────────────────────┴──────────┴──────────────┘# 3. part_log:记录了MergeTree系列引擎的分区操作日志。select event_type,table,partition_id,event_date from part_log;# 4. text_log:记录了CH运行过程中的一系列打印日志。包括info,debug,trace。select tread_name,concat(substr(logger_name,1,50),'...')logger_name,concat(substr(message,1,50),'...')message from text_log limit 5;# 5.metric_log:将metrics和events中的数据汇聚在一起。
发表评论
暂时没有评论,来抢沙发吧~