ClickHouse使用(十四)--基础知识 最终篇

管理与运维

你好! 这是你第一次使用 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值