ClickHouse使用(十四)-最终篇
- 管理与运维
- 1 用户配置
- 2.权限管理
- 3 熔断机制
- 4 数据备份
- 5 服务监控
管理与运维
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
1 用户配置
(1.1 )用户profile 角色
<yandex>
<profiles>
<default>
<max_memory_usage>10000000000000</max_memory_usage>
<max_uncompressed_catch>0</max_uncompressed_catch>
</default>
<constrains>
<max_memory_usage>
<min>1000</min>
<max>2000000000000</max>
</max_memory_usage>
<>
</constrains>
<test1>
<allow_experimental_live_view>1</allow_experimental_live_view>
</test1>
<test2>
<profile>default</profile>
<profile>test1</profile>
<distributed_product_mode>deny</distributed_product_mode>
</test2>
</profiles>
</yandex>
配置了三个角色,其中 default 会作为为默认配置被加载;
test2,继承了defaut和test1的所有配置,此外还单独增加了一项配置。
(1.2)配置约束
constrains标签可以设置一组约束条件,以保障profile内的参数不会被随意修改
Min:最小值约束,不能小于该阀值
Max:最大值约束,不能大于该阀值
Readonly:只读,不能被修改
在default中做的约束,将作为默认的全局约束,自动被profile继承
(1.3)用户定义
user.xml文件,默认包含default用户;
配置新用户,必须包含的几个属性
(1)username 用于指定登录用户,全局唯一
(2)password 设置登录密码,支持明文,sha256加密和double_sha1加密三种形式,可以任选其中一种进行设置。
(2.1)明文:123 ; 标识不需要密码
(2.2)sha256 <password_sha256_hex>82j2kdjdkdjsskfhfj</password_sha256_hex>,获取加密串指令 echo -n 123 | openssl dgst -sha256
(2.3)double_sha1 <password_double_sha1_hex>82j2kdjdkdjsskfhfj</password_double_sha1_hex>获取加密串指令 echo -n 123 | openssl dgst -sha1 -binary | openssl dgst -sha1
(3)networks
标识被允许登录的网络地址,限制登录的客户端地址
(4)prifile 使用继承定义过的名称
(5)quota 设定用户可以使用的资源限额,理解为熔断机制
2.权限管理
2.1访问权限
2.1.1 网络访问权限
(1)127.0.0.1
(2)主机域名
(1)正则
2.1.2 数据库和字典访问权限
<allow_databases>
<databse></databse>
</allow_databases>
<allow_dictionaries>
<dictionary></dictionary>
</allow_dictionaries>
2.1.3 查询权限
读权限 select exists show describe
写权限 insert optimize
设置权限 set
DDL权限 create drop alter rename attach detach truncate
其他权限 kill use
通过标签 readonly 和 allow_ddl 控制
readonly 0 不限制;1 只读 ;2 读权限和设置权限
allow_ddl 0 不予许ddl;1 允许ddl
2.1.4 数据行级权限
<databases>
<table_name>
<filter>id<10</filter>
</table_name>
</databases>
3 熔断机制
避免资源被过渡占用
1 根据事件周期的累积用量熔断,在一个周期内使用量达到阀值的用户,不能在本周期内再进行操作
<quotas>
<default>(自定义名称,全局唯一)
<interval>
<duration>3600</duration> (时间周期,单位是秒)
<querise>3600</querise> (周期内允许执行的查询次数,0标识不限制)
<errors>3600<errors> (周期内允许发生异常的次数,0标识不限制)
<result_rows>3600<result_rows>(周期内允许查询返回的行数,0标识不限制)
<read_rows>3600<read_rows>(周期内允许远端节点读取的数据行数,0标识不限制)
<execution_times>3600<execution_times>(周期内允许执行的查询时间,单位秒,0标识不限制)
</interval>
</default>
</quotas>
2 典型配置
<max_memory_usage>10000000000</max_memory_usage> 10G 默认;
当一个用户在一次查询中,使用内存大于10G,查询被中断
<max_memory_usage_for_user>单个用户促训是使用的最大内存量
<max_memory_usage_for_all_queries> 所有运行中的查询使用的内存量的总和
<max_memory_partions_per_insert_block> 单次插入分区分布
<max_rows_to_group_by> 执行group by 聚合查询时,限制聚合后Key的最大个数,0,表示不限制
<group_by_overflow_mode> 当max_rows_to_group_by触发时,会有三种结果:throw,异常;break停止返回当前数据;any 根据当前结果集,继续完成查询。
<max_bytes_before_external_group_by> 执行group by 聚合查询时,限制使用的最大内存 0 标识不限制。
4 数据备份
(避免数据被误删)
4.1 导出文件备份
如果数据量较小,可以通过dump的形式将数据导出
clickhouse-client --query =“select * from test_backup” > /chbase/test_back_up.tsv/
导入备份数据:
cat /chbase/test_backup.csv | clickhosue-client --query “insert into test_backup format tsv”
优点:可以通过select 语句筛选 部分数据
如果为整个表的数据,可以复制目录
mkdir -p /chbase/backup/default/ & cp -r /chbase/data/default/test_backup /chbase/backup/default/
4.2通过快照表备份
创建备份表
create table test_back_up_0206 as test_backup
点对点备份数据
insert into table test_back_up_0206 select * from test_backup
4.3 按天分区备份
(1)freeze
alter table table_name freeze partion parttion_expr
恢复需要将shadow 目录下的文件复制到detached 目录下
再使用 attach 命令
(2)fetch
支持ReplicatedMergeTree 表引擎
在副本中下载对应分区下的数据
alter table test_fetch fetch aprtition 2019 from ‘/clickhouse/table/01/test_fetch’
不会备份元数据,值备份 分区数据
元数据在 /data/metadata/ 目录下的 tables.sql 文件中
5 服务监控
5.1 系统表
5.1.1
select * from system.metrics
metrics 正在执行的高层次的概要信息,包括正在执行的查询总次数、正在发生的合并操作总次数等
5.1.2 events
events 用于统计ck服务在运行过程中已经执行的高层次的劣迹概要信息,包含 查询,痛的select次数
select event,value from system.events
5.1.3 asynchronous_metrics
asynchronous_metrics 用于统计ck服务运行过程时,当前正在后台异步运行的高层次的概要信息,包含当前分配的内存,执行队列中的任务数量
select * from system.asynchronous_metrics
5.2.查询日志
查询日志主要六种
5.2.1 query_log 最常用的查询日志
全局配置
<query_log>
<database>system</database>
<database>query_log</database>
<partition_by>toYYYYMM(event_data)</partition_by>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
<query_log>
单独开启某个用户的配置
在user.xml的profile中按照下面配置定义
<log_queries>1</log_queries>
查询方法
select type,concat(substr(query,1,20),’…’)query,read_rows,query_duration_ms as duration from system.query_log limit 6;
5.2.2 query_thread_log 记录了所有线程的执行查询的信息
全局配置
<query_thread_log>
<database>system</database>
<database>query_thread_log</database>
<partition_by>toYYYYMM(event_data)</partition_by>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
</query_thread_log>
单独开启某个用户的配置
<query_thread_log>1</query_thread_log>
查询方法
select thread_name,concat(substr(query,1,20),’…’)query,query_duration_ms as duration,memery_usage as memory form system.query_thread_log limit 6;
5.2.3 part_log
全局配置
<part_log>
<database>system<database>
<table>part_log</table>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
</part_log>
查询方法:
select event_type as type,table,partition_id,event_date from system.part_log
5.2.4
text_log
日志:包含 info,debug和trace;
全局配置
<text_log>
<database>system<database>
<table>text_log</table>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
</text_log>
查询方法
select thread_name,
concat(substr(logger_name,1,20),’…’)logger_name,
concat(substr(message,1,20),’…’)message
from system.text_log limit 5;
5.2.5 metric_log
将sysytem.metrics 和 system.events 中的数据汇聚到一起,全局配置
<metric_log>
<database>system<database>
<table>metric_log</table>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
<collect_interval_milliseconds>7500</collect_interval_milliseconds>
</metric_log>
collect_interval_milliseconds 标识收集metrics和events数据的时间周期,metric-log 开启后,可以查询
5.2.6
查询正在执行的后台命令
show processlist