ambari 告警hiveserver2连不上——MySQL连接问题
hiveserver2连不上只是现象,实际上是磁盘空间满了,hive元数据库mysql连不上导致的hiveserver2告警。
背景
新疆集群运行一个月了,今天收到告警,说hiveserver2连接不上了,领导需要看数,需要紧急处理
问题(告警)
原因分析
- 尝试重启Ambari服务器发现无法重启: 尝试重启Ambari服务器时发现无法成功重启,需进一步排查原因。
- 排查MySQL数据库连接问题: 发现无法连接到MySQL元数据库。这是由于MySQL服务器未能正常运行,需检查MySQL服务状态。
- 磁盘空间不足: 通过进一步检查,发现磁盘空间已满。文件系统显示MySQL日志占用了大量空间。
发现是mysql日志造成的。
- 快速解决磁盘空间不足问题: 为了使系统能暂时恢复正常运行,清理部分旧的MySQL日志文件以释放磁盘空间。
- 检查MySQL配置文件(my.cnf) : 打开MySQL配置文件
my.cnf
,查看配置设置。注意到当前配置为主从复制方式。
我这里配置的是主从。
6.关闭主从复制:发现主从挂了,由于系统恢复紧急需求,决定关闭主从复制以减缓日志生成速度。
#查看主从状态
show master status \G
#关闭主从
stop slave;
-
关闭Query日志: 确认日志文件主要由Query日志生成,决定关闭Query日志以完全解决问题。
编辑
my.cnf
文件,找到并修改或添加以下配置项:[mysqld] general_log = 0
-
重新启动MySQL服务: 保存配置文件并重新启动MySQL服务以应用更改。
sudo service mysql restart
general log
在默认情况下,MVSQL是不会打开generallog的,这个og里面会记录MySQL所有的SQL语句,不管是查询语句,还是DML语句,还是DDL语句,还是DCL语句,这些语句统统都会被记录在generallog文件中。就连我们连接和断开MySQL数据库的这些语句。 MVSQL会把它收到的所有SQL语句按照接收的顺序依次记录在generallog中。我们需要注意的是,这里接受的SQL语句的顺序,并不等于SQL语句就是按照这个接受的顺序来执行,因为有的时候,一些SQL可能需要等待其他锁被释放后才会被真正的执行,SQL语句的执行顺序是和binlog中的顺序是相匹配的。 假如我们执行一个 select 查询语句,在binlog中不会记录这样的SQL语句,但是在qeneral log中就会记录这个 select 查询语句。General loq默认不开启的原因有两个: 日志将会非常大,对磁盘是一个很大的压力。因为所有的操作都会被记录下来。 。对MySQL数据的性能有一定的影响。 所以,我们一般不会开启这个general1og记录的功能,只有在排查某些错误的时候,才会临时打开一下,等到debua完成之后,再把它关闭。
解决
#查看general_log日志信息
SHOW VARIABLES LIKE 'general_log'; -- 日志增长过快 可以关闭
SHOW VARIABLES LIKE 'general_log_file'; -- /data1/mysql/mysql_data/hadoop-001.log
SET GLOBAL general_log = 'OFF';
最后恢复mysql主从ok了