场景一、查询占cpu高的****SQL

运维过ClickHouse都知道,ClickHouse很容易cpu飙高,当ClickHouse的节点cpu飙高时,那么,需要找到对应的SQL,下面的语句可以协助你找到很耗cpu的SQL语句,找到语句后剩下的就是SQL优化了。

#在最近十分钟,消耗cpu top 10的SQL

WITH (

SELECT sum(ProfileEvents['OSCPUVirtualTimeMicroseconds'])

FROM clusterAllReplicas(集群名称, system.query_log)

WHERE event_time > (now() - toIntervalMinute(10))

) AS cpu_total_microseconds

SELECT

normalized_query_hash,

query_kind,

first_value(query),

sum(ProfileEvents['OSCPUVirtualTimeMicroseconds']) AS cpu_microseconds,

(((cpu_microseconds / 1000) / 1000) / 60) / 10 AS kernel_num,

(cpu_microseconds / cpu_total_microseconds) * 100 AS percent

FROM clusterAllReplicas(集群名称, system.query_log)

WHERE event_time > (now() - toIntervalMinute(10))

GROUP BY

normalized_query_hash,

query_kind

ORDER BY cpu_microseconds DESC

LIMIT 10

SETTINGS max_threads = 2

场景二、杀掉具体查询和****MUTATION

如若在生产数据库上,发现某个查询很耗费资源,并且执行时间特别久,经过排查该SQL不重要可以杀掉,那么可以使用KILL语句把这个SQL干掉。

(1)查询耗时很长的SQL

select query_id,elapsed,query from system.processes where elapsed > xxx;

(2)执行KILL语句

KILL QUERY WHERE query_id = ‘xxx’;

有些任务会异步执行的,比如说delete,当执行了后会立即返回结果,任务在后台异步执行的,如若担心mutation影响到数据库的性能了,想kill这个操作,那么可以这么干,先查出相关信息,然后再执行kill。

(1) 查询出具体的mutation_id

select * from system.mutations where database = ‘xxx’ and table = ‘xxx’;

(2)通过KILL语句干掉MUTATION

KILL MUTATION WHERE database = ‘xxx’ AND table = ‘xxx’ AND mutation_id = ‘xxx’;

场景三、修改某个参数

有些时候我们需要对账号进行一些资源限制,比如下面我要对所有账号限制其并发查询最大线程数,那么可以使用如下命令

CREATE SETTINGSPROFILE max_threads_profile SETTINGS max_threads = 10 TO ALL

如若我要对某个账号限制其查询的执行时间,则可以使用如下命令

CREATE SETTINGS PROFILE max_execution_time_profile SETTINGS max_execution_time = 600 TO 账号_A ;注意这个设置了对该账号的insert也生效的

场景四、查看执行计划

查到了占cpu高的或者耗时长的SQL,那么就要看这个SQL的执行计划,分析是否有优化的空间,ClickHouse查看执行计划有很多种方式,这里只介绍最常用的方式。

explain indexes=1 select * from table_a limit 1;

场景五、查询表大小、集群信息、磁盘信息

#查看表在磁盘上的大小,压缩、未压缩的大小、压缩率

SELECT

database,

table,

formatReadableSize(size) AS size,

formatReadableSize(bytes_on_disk) AS bytes_on_disk,

formatReadableSize(data_uncompressed_bytes) AS data_uncompressed_bytes,

formatReadableSize(data_compressed_bytes) AS data_compressed_bytes,

compress_rate,

rows,

days,

formatReadableSize(avgDaySize) AS avgDaySize

FROM

(

SELECT

database,

table,

sum(bytes) AS size,

sum(rows) AS rows,

min(min_date) AS min_date,

max(max_date) AS max_date,

sum(bytes_on_disk) AS bytes_on_disk,

sum(data_uncompressed_bytes) AS data_uncompressed_bytes,

sum(data_compressed_bytes) AS data_compressed_bytes,

(data_compressed_bytes / data_uncompressed_bytes) * 100 AS compress_rate,

max_date - min_date AS days,

size / (max_date - min_date) AS avgDaySize

FROM system.parts

WHERE active AND (database = 'xxx')

GROUP BY

database,

table

)

#查看集群信息

select * from system.clusters 

#查看磁盘信息

select * from system.disks;

场景六、停止****Merge

某些场景下存在需要把表的merge操作临时停掉,避免出现文件不存在的错误,比如迁移数据,下面是停止表merge和启动表merge的命令

(1)停止merge

ALTER TABLE tab_name ON CLUSTER cluster_name MODIFY SETTING max_replicated_merges_in_queue = 0, max_bytes_to_merge_at_max_space_in_pool = 0, max_bytes_to_merge_at_min_space_in_pool = 0

(2)开启merge

ALTER TABLE tab_name ON CLUSTER cluster_name MODIFY SETTING max_replicated_merges_in_queue = 16, max_bytes_to_merge_at_max_space_in_pool = 32212254720, max_bytes_to_merge_at_min_space_in_pool = 1048576

场景七、创建外表、分区移动

     ClickHouse支持外表,把数据存储在mysql或者其他存储介质上,通过ClickHouse本地来查询,下面是创建外地表的命令

CREATE TABLE 库名.表名

(

字段1 UInt32,

字段2 String,

字段3 UInt32

)

ENGINE = MySQL('ip:port', '库名', '表名', '账号', '密码')

有时候会有把表的分区移动到另外一个表中的需求,比如把一些不怎么使用的数据移动到另外一个表中,保留一段时间后进行删除,可以使用如下命令进行移动。

ALTER TABLE 库名.表名 MOVE PARTITION 19700120 TO TABLE 库名.表名;

场景八、给表数据设置****TTL

某些场景会给表设置数据生命周期,比如几个月之前的数据可能不需要,就可以删除掉,节省存储,ClickHouse也支持TTL,无需自己去手动删除数据,设置好策略自动帮你清理数据,命令如下:

create table 库名.表名

(字段1 Int32,

字段2 String,

字段3 DateTime

)engine = MergeTree 

Order by 字段3

TTL 字段3 + INTERVAL 3 MONTH

场景九、集群间数据迁移

经常会存在把这个集群的表中的数据迁移到另外一个集群中的表中,我们会使用remote的这个工具来进行迁移,命令如下:

#迁移数据

Insert into 库名.表名 select * from remote(‘ip:port’,’库名’,’表名’,’账号’,’密码’)

场景十、备份与恢复

数据库备份和恢复是最常见的操作,ClickHouse也有原生的备份和恢复工具,分别是backup和restore,这里使用表备份到oss存储上进行举例说明其用法,表格里面是详细的命令,对表的备份和恢复需要了解以下两个知识点

一是backup和restore,只能操作本地表,只在一个节点执行,因为backup和restore可以通过zk分发到各个节点上,所以不需要去每个节点执行。

二是backup和restore不能备份和还原分布式表,备份和还原过程都不会报错,备份的文件大小也跟本地表备份大小无差别,但是恢复后,数据为0。

(1)备份表到oss

BACKUP TABLE  库名.表名 TO S3('oss地址', '账号', '密码')

BACKUP TABLE 库名.表名 PARTITION  202504 TO S3('oss地址', '账号', '密码')

(2)从oss恢复数据

RESTORE TABLE 库名.表名 FROM  S3('oss地址', '账号', '密码') SETTINGS allow_non_empty_tables=true

35岁+运维人员的发展与出路

经常有人问我:干网工、干运维多年遇瓶颈,想学点新技术给自己涨涨“身价”,应该怎么选择?

聪明人早已经用脚投票:近年来,越来越多运维的朋友寻找新的职业发展机会,将目光聚焦到了网络安全产业。

1、为什么我建议你学习网络安全?

有一种技术人才:华为阿里平安等大厂抢着要,甚至高薪难求——白帽黑客。白帽黑客,就是网络安全卫士,他们“低调”行事,同时“身价”不菲。

根据腾讯安全发布的《互联网安全报告》,目前中国**网络安全岗位缺口已达70万,缺口高达95%。**而与网络安全人才需求量逐年递增局面相反的是,每年高校安全专业培养人才仅有3万余人,很多企业却一“将”难求,网络安全人才供应严重匮乏。

这种供求不平衡直接反映在安全工程师的薪资上,简单来说就是:竞争压力小,薪资还很高。

而且安全行业就业非常灵活,既可以就职一家公司从事信息安全维护和研究,也可以当作兼职或成为自由职业者,给SRC平台提交漏洞获取奖金等等。

随着国家和政府的强监管需求,一线城市安全行业近年来已经发展的相当成熟工作机会非常多,二三线城市安全也在逐步得到重视未来将有巨大缺口。

作为运维人员,这几年对于安全的技能要求也将不断提高,现阶段做好未来2到3年的技术储备,有非常大的必要性

2、运维转型成为网络安全工程师,是不是很容易?

运维转安全,因为本身有很好的Linux基础,相对于其他人来说,确实有一定的优势,入门会快一些。
系统管理经验
运维对服务器、网络架构的深度理解,可直接迁移到安全防护场景。例如,熟悉Linux/Windows系统漏洞修补、权限管控,能快速上手安全加固工作。
网络协议与架构知识
运维日常接触TCP/IP、路由协议等,有助于分析网络攻击路径(如DDoS防御、流量异常检测)。
自动化与脚本能力
运维常用的Shell/Python脚本技能,可无缝衔接安全工具开发(如自动化渗透脚本、日志分析工具)。
平滑过渡方向
从安全运维切入,逐步学习渗透测试、漏洞挖掘等技能,利用现有运维经验快速上手。
学习资源丰富
可复用运维工具(如ELK日志分析、Ansible自动化)与安全工具(如Nessus、Metasploit)结合学习,降低转型成本。

3. 转型可以挖漏洞搞副业获取收益挖SRC漏洞

  1. 合法挖洞:在合法的平台上挖掘安全漏洞,提交后可获得奖励。这种方式不仅能够锻炼你的技能,还能为你带来额外的收入。

  2. 平台推荐:

补天:国内领先的网络安全漏洞响应平台。

漏洞盒子:提供丰富的漏洞挖掘任务。

CNVD:国家信息安全漏洞共享平台。

关于我

有不少阅读过我文章的伙伴都知道,笔者曾就职于某大厂安全联合实验室。从事网络安全行业已经好几年,积累了丰富的技能和渗透经验。

在这段时间里,我参与了多个实际项目的规划和实施,成功防范了各种网络攻击和漏洞利用,提高了互联网安全防护水平。

在这里插入图片描述

运维转行学习路线

在这里插入图片描述

(一)第一阶段:网络安全筑基

1. 阶段目标

你已经有运维经验了,所以操作系统、网络协议这些你不是零基础。但要学安全,得重新过一遍——只不过这次我们是带着“安全视角”去学。

2. 学习内容

**操作系统强化:**你需要重点学习 Windows、Linux 操作系统安全配置,对比运维工作中常规配置与安全配置的差异,深化系统安全认知(比如说日志审计配置,为应急响应日志分析打基础)。

**网络协议深化:**结合过往网络协议应用经验,聚焦 TCP/IP 协议簇中的安全漏洞及防护机制,如 ARP 欺骗、TCP 三次握手漏洞等(为 SRC 漏扫中协议层漏洞识别铺垫)。

**Web 与数据库基础:**补充 Web 架构、HTTP 协议及 MySQL、SQL Server 等数据库安全相关知识,了解 Web 应用与数据库在网安中的作用。

**编程语言入门:**学习 Python 基础语法,掌握简单脚本编写,为后续 SRC 漏扫自动化脚本开发及应急响应工具使用打基础。

**工具实战:**集中训练抓包工具(Wireshark)、渗透测试工具(Nmap)、漏洞扫描工具(Nessus 基础版)的使用,结合模拟场景练习工具应用(掌握基础扫描逻辑,为 SRC 漏扫工具进阶做准备)。

(二)第二阶段:漏洞挖掘与 SRC 漏扫实战

1. 阶段目标

这阶段是真正开始“动手”了。信息收集、漏洞分析、工具联动,一样不能少。

熟练运用漏洞挖掘及 SRC 漏扫工具,具备独立挖掘常见漏洞及 SRC 平台漏扫实战能力,尝试通过 SRC 挖洞搞钱,不管是低危漏洞还是高危漏洞,先挖到一个。

2. 学习内容

信息收集实战:结合运维中对网络拓扑、设备信息的了解,强化基本信息收集、网络空间搜索引擎(Shodan、ZoomEye)、域名及端口信息收集技巧,针对企业级网络场景开展信息收集练习(为 SRC 漏扫目标筛选提供支撑)。

漏洞原理与分析:深入学习 SQL 注入、CSRF、文件上传等常见漏洞的原理、危害及利用方法,结合运维工作中遇到的类似问题进行关联分析(明确 SRC 漏扫重点漏洞类型)。

工具进阶与 SRC 漏扫应用:

  • 系统学习 SQLMap、BurpSuite、AWVS 等工具的高级功能,开展工具联用实战训练;

  • 专项学习 SRC 漏扫流程:包括 SRC 平台规则解读(如漏洞提交规范、奖励机制)、漏扫目标范围界定、漏扫策略制定(全量扫描 vs 定向扫描)、漏扫结果验证与复现;

  • 实战训练:使用 AWVS+BurpSuite 组合开展 SRC 平台目标漏扫,练习 “扫描 - 验证 - 漏洞报告撰写 - 平台提交” 全流程。
    SRC 实战演练:选择合适的 SRC 平台(如补天、CNVD)进行漏洞挖掘与漏扫实战,积累实战经验,尝试获取挖洞收益。

恭喜你,如果学到这里,你基本可以下班搞搞副业创收了,并且具备渗透测试工程师必备的「渗透技巧」、「溯源能力」,让你在黑客盛行的年代别背锅,工作实现升职加薪的同时也能开创副业创收!

如果你想要入坑黑客&网络安全,笔者给大家准备了一份:全网最全的网络安全资料包需要保存下方图片,微信扫码即可前往获取!在这里插入图片描述

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

(三)第三阶段:渗透测试技能学习

1. 阶段目标

全面掌握渗透测试理论与实战技能,能够独立完成渗透测试项目,编写规范的渗透测试报告,具备渗透测试工程师岗位能力,为护网红蓝对抗及应急响应提供技术支撑。

2. 学习内容

渗透测试核心理论:系统学习渗透测试流程、方法论及法律法规知识,明确渗透测试边界与规范(与红蓝对抗攻击边界要求一致)。

实战技能训练:开展漏洞扫描、漏洞利用、电商系统渗透测试、内网渗透、权限提升(Windows、Linux)、代码审计等实战训练,结合运维中熟悉的系统环境设计测试场景(强化红蓝对抗攻击端技术能力)。

工具开发实践:基于 Python 编程基础,学习渗透测试工具开发技巧,开发简单的自动化测试脚本(可拓展用于 SRC 漏扫自动化及应急响应辅助工具)。

报告编写指导:学习渗透测试报告的结构与编写规范,完成多个不同场景的渗透测试报告撰写练习(与 SRC 漏洞报告、应急响应报告撰写逻辑互通)。

(四)第四阶段:企业级安全攻防(含红蓝对抗)、应急响应

1. 阶段目标

掌握企业级安全攻防、护网红蓝对抗及应急响应核心技能,考取网安行业相关证书。

2. 学习内容

护网红蓝对抗专项:

  • 红蓝对抗基础:学习护网行动背景、红蓝对抗规则(攻击范围、禁止行为)、红蓝双方角色职责(红队:模拟攻击;蓝队:防御检测与应急处置);

  • 红队实战技能:强化内网渗透、横向移动、权限维持、免杀攻击等高级技巧,模拟护网中常见攻击场景;

  • 蓝队实战技能:学习安全设备(防火墙、IDS/IPS、WAF)联动防御配置、安全监控平台(SOC)使用、攻击行为研判与溯源方法;

  • 模拟护网演练:参与团队式红蓝对抗演练,完整体验 “攻击 - 检测 - 防御 - 处置” 全流程。
    应急响应专项:

  • 应急响应流程:学习应急响应 6 步流程(准备 - 检测 - 遏制 - 根除 - 恢复 - 总结),掌握各环节核心任务;

  • 实战技能:开展操作系统入侵响应(如病毒木马清除、异常进程终止)、数据泄露应急处置、漏洞应急修补等实战训练;

  • 工具应用:学习应急响应工具(如 Autoruns、Process Monitor、病毒分析工具)的使用,提升处置效率;

  • 案例复盘:分析真实网络安全事件应急响应案例(如勒索病毒事件),总结处置经验。
    其他企业级攻防技能:学习社工与钓鱼、CTF 夺旗赛解析等内容,结合运维中企业安全防护需求深化理解。

证书备考:针对网安行业相关证书考试内容(含红蓝对抗、应急响应考点)进行专项复习,参加模拟考试,查漏补缺。

运维转行网络攻防知识库分享

网络安全这行,不是会几个工具就能搞定的。你得有体系,懂原理,能实战。尤其是从运维转过来的,别浪费你原来的经验——你比纯新人强多了。

但也要沉得住气,别学了两天Web安全就觉得自己是黑客了。内网、域渗透、代码审计、应急响应,要学的还多着呢。

如果你真的想转,按这个路子一步步走,没问题。如果你只是好奇,我劝你再想想——这行要持续学习,挺累的,但也是真有意思。

关于如何学习网络安全,笔者也给大家整理好了全套网络安全知识库,需要的可以扫码获取!在这里插入图片描述

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

1、网络安全意识
在这里插入图片描述

2、Linux操作系统
在这里插入图片描述

3、WEB架构基础与HTTP协议
图片

4、Web渗透测试
在这里插入图片描述

5、渗透测试案例分享
图片

6、渗透测试实战技巧
图片

7、攻防对战实战
图片

8、CTF之MISC实战讲解
图片

关于如何学习网络安全,笔者也给大家整理好了全套网络安全知识库,需要的可以扫码获取!在这里插入图片描述

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐