高级DBA手把手教你解决clickhouse数据库宕机生产事故实战全网唯一

高级DBA手把手教你解决clickhouse数据库宕机生产事故实战演练

一、事故描述

生产环境clickhouse宕机,重启之后,反复重启,重启几秒钟又死了。甲方客户叫天,大老板火冒三丈,天下大乱。老板电话打过来,要求半小时内解决,压力山大,有点慌!!!

二、clickhouse运行日志文件定位

查看clockhouse的运行日志路径默认地址为:
在这里插入图片描述

/var/log/clickhouse-server/clickhouse-server.err.log  #日志的默认路径
cd /var/log/clickhouse-server/
tail -f clickhouse-server.err.log

三、日志中定位核心问题

在这里插入图片描述

permission denied [/var/lib/clickhouse/metadata/system]

综合上述的报错,基本上已经定位了是权限问题导致,应该是运维人员用户组的权限调整了,间接影响到了数据库的文件系统的归属。导致。

ll /var/lib/clickhouse/metadata/system  #翻看当前路径的归属

翻看当前路径文件的归属,缺发现都变成了root。默认应该为clickhouse用户才对。
在这里插入图片描述
解决思路就是先把日志提示的路径的文件的归属改回clickhouse

cd /var/lib/clickhouse/metadata/system
chown -R clickhouse *
clickhouse restart #重启服务

再翻看日志还是一样还是反复重启,报错一致,很奇怪奔溃。

去百度翻看一下国外大神有没有遇到过,翻看了国外的程序员贴吧。
大概的意思是,要把所有的关于clickhouse的文件系统的文件全部重置用户归属。

也就是说,我刚刚执行的重置权限的可能还是有漏掉的文件。
查询所有clickhouse相关路径

find / -iname "clickhouse*"

在这里插入图片描述

通过与其他测试环境文件系统进行层层对比最终定位clickhouse文件系统的路径分布如下:

/var/lib/clickhouse
/var/log/clickhouse-server
/etc/clickhouse-server
/etc/clickhouse-client

执行重置用户组的命令

sudo chown -R clickhouse /var/lib/clickhouse /var/log/clickhouse-server /etc/clickhouse-server /etc/clickhouse-client   #重置所有clickhouse文件系统的用户归属命令

执行重置命令,重启clickhouse服务

clickhouse restart #重启服务

问题成功解决

四、总结问题

总的来说主要是操作系统权限导致的,关键是定位到所以相关的文件归属。linux服务器会经常遇到。这个处理步骤跟分析方法我写的很详细。

五、大招方法把clickhouse删除从装解决

如果上述操作解决不了则可以运用下方法:

解决思路是:将clickhouse全部删除,从装。但是保留数据库的数据文件。覆盖安装的思路解决。

主要要记得保留好数据库的数据文件目录,保留历史数据

/var/lib/clickhouse/data    #clickhouse的数据库文件路径

注意要保留上述的文件路径,并且要确保这个路径下所有文件的归属为clickhouse
在这里插入图片描述

(1)去官方网站下载安装包

https://packages.clickhouse.com/rpm/stable/

需要下载三个包按最新的版本号*代表最新的版本号

1clickhouse-client-*
2clickhouse-server-*
3clickhouse-common-static-*

(2)删除之前的旧版本不如会冲突

rpm -qa | grep clickhouse

在这里插入图片描述

rpm -e clickhouse-client-20.12.5.14-2.noarch
rpm -e clickhouse-server-20.12.5.14-2.noarch
rpm -e clickhouse-common-static-20.12.5.14-2.x86_64
rm -rf /etc/clickhouse-server/                #删除之前的配置文件,不删除也是会冲突,建议提前备份

(3)重新安装新版本的安装包

rpm -ivh clickhouse-common-static-21.4.6.55-2.x86_64.rpm
rpm -ivh clickhouse-server-21.4.6.55-2.noarch.rpm
rpm -ivh clickhouse-client-21.4.6.55-2.noarch.rpm
sudo clickhouse start

(4)重新调整配置设置用户密码、外网访问权限根据之前的备份的配置文件

select version()   #最终检查升级后的版本号

在这里插入图片描述

作者后言

本案例只是举一个简单的经常遇到的宕机案例,而实际的情况会更加复杂,比如掺杂这数据库主从集群数据恢复问题,或者中间的操作过程并没有作者叙述的那么顺利,中间的每个环节都可能被卡住。实际的情况,也根据实际的局面跟以往的经验去尝试解决,本文案例只是举一个毕竟常见的宕机情况。基本上数据库运维人员都会碰到。最好提前部署好HA高可用架构,让数据丢失的可能性降低到最低。但是往往出现生产事故中,是需要DBA迅速马上解决问题的,真实的情况遇到的压力会非常大,时间也非常紧迫,造成的人力物力财力的损失也不可估量,更需要我们的“胆量”,“信心”,“魄力”,‘技术能力’,毕竟真正能处理数据库生产事故的开发是国内开发团队中也是极少数。

作者本人简介:现任国内某大型软件公司大数据研发工程师、MySQL数据库DBA,软件架构师。直接参与设计国家级亿级别大数据项目。并维护真实企业级生产数据库300余个。紧急处理数据库生产事故上百起,挽回数据丢失所操作的灾难损失不计其数。
本文拿一个真正生产案例MYSQL宕机的实际案例做讲解,主要是叙述解决问题的思路跟方法,毕竟真正解决生产数据库事故的研发人员也是极少的。

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
dba数据库管理员)是负责管理和维护数据库系统的专业人士。他们的主要职责是确保数据库的安全性、稳定性和可靠性。下面是一个关于dba数据库管理员的完整程。 1. 学习数据库技术:作为一个dba,你需要掌握数据库的基本技术和概念。这包括数据库的设计原理、结构和组成部分,以及数据库管理系统(DBMS)的功能和特点。 2. 学习SQL语言:SQL(结构化查询语言)是数据库中常用的查询语言。作为dba,你需要熟悉SQL的基本语法和常见的查询操作,以便能够有效地管理和操作数据库。 3. 数据库安装和配置:dba需要学会安装和配置数据库管理系统。这包括选择适当的DBMS软件、配置数据库服务器、设置安全权限和访问控制,以及优化数据库性能。 4. 数据库备份和恢复:作为dba,你需要定期备份数据库以防止数据丢失。你还需要学会如何在数据库发生故障时进行恢复操作,以确保数据完整性和正确性。 5. 性能优化和调优:为了提高数据库的性能和响应速度,dba需要学会分析数据库的瓶颈和性能问题,并采取相应的措施进行优化和调优。 6. 安全管理和权限控制:dba需要确保数据库的安全性。他们需要创建和管理用户账户,并设置适当的权限和访问控制,以防止未经授权的用户对数据库进行操作。 7. 监控和故障排除:dba需要实时监控数据库的运行状况,及时发现和解决故障和问题。他们需要使用监控工具来跟踪数据库的性能指标,并采取必要的措施进行故障排除。 8. 持续学习和更新:dba需要不断学习和更新自己的知识和技能,以跟上数据库技术的发展。他们可以参加培训课程、参与专业社区和阅读相关文献来不断提升自己的能力。 总之,dba数据库管理员是一个专业的角色,需要掌握数据库技术、SQL语言和数据库管理技能。通过学习和实践,dba可以成为数据库领域的专家,并负责管理和维护企业的数据库系统。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术很渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值