[zabbix]解决binlog日志过大 web界面中文乱码问题_zabbix binlog

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

如下图:
在这里插入图片描述
然后再编辑my.cnf文件,修改下binlog日志保存日期即可,如果zabbix没有做主从数据库,禁用掉log_bin这个参数,重启数据库,搞定。
在这里插入图片描述
如果做了主从,则可以缩小binlog自动删除的天数,参数为expire_logs_days,如下图:
在这里插入图片描述
如果‘reset master;’命令跑了很久,都没执行完,可以试下清理掉一部分大的文件跟/tmp下的数据,腾出一部分空间,再运行‘reset master;’

对于zabbix在web界面上出现中文乱码的问题,这个问题比较常见,网上也有很多对应的解决办法,在此说一下个人觉得比较快捷方便的一种。

这是我自己使用lnmp环境搭建的一台zabbix测试机,如下图所示,出现了中文乱码
在这里插入图片描述
处理步骤:

1、 到自己电脑挑选好喜欢的字体。

字体文件路径在:控制面板——查看方式:小图标——字体,如下图:
在这里插入图片描述
在这里我先选好了一种字体‘微软雅黑’,复制到桌面,一种是正常字体,一种是粗体,这里选正常的。
在这里插入图片描述
2、 然后ssh进入我们的zabbix_server,找到我们字体的存放位置,将字体复制进去,我是用xshell的,直接拖进去就好。

我这边是自定义了位置,如下图:
在这里插入图片描述
如果有不清楚自己字体位置在哪里,可以用find命令查找到:
在这里插入图片描述
3、 现在我已经把字体放到zabbix上了,接下来将原有字体备份,把新字体名字改成原字体的,再更改所属用户用户组即可。

#mv DejaVuSans.ttf DejaVuSans.ttf.bak

#mv msyh.ttf DejaVuSans.ttf

#chown zabbix:zabbix DejaVuSans.ttf

在这里插入图片描述
4、 做完上面的步骤,现在要到页面验证结果了,如下图:
在这里插入图片描述

参考链接 :
[zabbix]解决binlog日志过大/web界面中文乱码问题 : https://www.jianshu.com/p/44cace796206

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

<think>好的,用户现在想根据之前生成的binlog_analysis.sql文件找到执行删除操作的账号。之前我已经介绍了如何通过binlog恢复数据,现在需要补充如何追踪操作者账号的信息。首先,我得回忆一下MySQL的binlog中是否记录了执行操作的账号信息。 一般来说,binlog中会记录每个事务的上下文信息,包括时间戳、服务器ID、线程ID等。但是默认情况下,binlog可能不会直接记录用户名和主机信息。不过,如果开启了特定的参数,比如log_bin_trust_function_creators或者binlog_annotate_row_events,可能会有更多的信息。不过这些参数可能不是默认开启的,需要用户确认。 接下来,用户可能需要通过binlog中的信息间接找到账号。比如,通过线程ID(thread_id)结合系统表来查找。在MySQL中,每个连接都有一个线程ID,而performance_schema中的processlist表或者information_schema.processlist可以查看当前连接的线程信息,包括用户和主机。但问题是,binlog中的事件发生时对应的线程ID可能已经不存在了,除非用户当时有记录或者有监控。 另外,用户可能需要检查是否有审计日志(audit log)开启,因为审计日志通常会记录详细的操作信息,包括执行者账号。但如果没有开启审计日志,就需要依赖其他方法。 还有一种情况是,如果数据库使用的是ROW格式的binlog,可能不会直接记录执行者信息,而STATEMENT格式的binlog会记录原始SQL语句,但同样可能不包含用户信息。需要用户确认binlog格式。 总结下来,可能的步骤是:首先检查binlog是否包含用户信息,如果没有,通过线程ID结合历史数据或监控日志找到对应的用户,或者检查是否有审计日志。同时,用户需要确认他们的MySQL配置是否支持记录这些信息,或者是否有其他途径可以追踪账号。 需要注意的是,如果用户的环境没有开启相关日志或监控,可能无法直接通过binlog找到操作账号,这时候可能需要其他方法,比如检查应用程序日志,或者数据库的访问日志等。此外,提醒用户未来如何配置MySQL以便记录这些信息,比如开启审计日志或者调整binlog参数,也是必要的。</think>通过binlog定位操作账号的步骤如下(需满足MySQL特定配置条件): 1. 确认必要信息记录 ```sql SHOW VARIABLES LIKE 'binlog_rows_query_log_events%'; ``` - 若为ON时,binlog会记录原始客户端信息 2. 关键字段解析(在binlog事件头中查找): ```log # at 1234 #240601 14:30:00 server id 1 end_log_pos 1356 CRC32 0xabcd1234 # Thread_id=5 exec_time=0 error_code=0 # User@Host: root[root] @ [192.168.1.100] Id: 5 # Query_time: 0.123 Lock_time: 0.000 Rows_sent: 0 Rows_examined: 0 SET TIMESTAMP=1717216200/*!*/; BEGIN /*!*/; ``` 3. 具体查找步骤: ```bash grep -A 5 "DELETE FROM \`数据库名\`.\`表名\`" binlog_analysis.sql ``` 在找到的DELETE语句上方: - `User@Host` 显示执行账号(格式:用户名[数据库账号] @ 客户端地址) - `Thread_id` 对应连接线程ID 4. 若未直接显示账号: ```sql -- 通过线程ID关联系统表(需在操作发生时存在连接) SELECT * FROM performance_schema.threads WHERE THREAD_ID = [binlog中的thread_id]; -- 或查询历史连接记录(需开启general_log) SELECT * FROM mysql.general_log WHERE thread_id = [thread_id] AND command_type = 'Query'; ``` 5. 审计日志配合查询(需开启审计插件): ```sql SELECT * FROM mysql.audit_log WHERE command_class = 'delete' AND event_time BETWEEN '开始时间' AND '结束时间'; ``` 必要条件说明: 1. 需要满足以下至少一项: - 开启`binlog_rows_query_log_events`(5.6+版本可用) - 启用审计日志(企业版功能) - 开启`init_connect`参数记录登录信息 2. 若使用MySQL 8.0+,可通过以下配置增强追踪: ```ini [mysqld] binlog_metadata=full # 记录完整元数据 log_bin_trust_function_creators=ON ``` 常见限制及解决方法: 1. 若显示`User@Host: root[root] @ localhost []`: - 检查是否通过本地socket连接 - 确认应用使用的数据库账号 2. 若只能获取thread_id: - 结合监控系统(如Zabbix)的历史进程列表 - 检查同一时间段的其他SQL操作特征 3. 若账号显示为`[system user]`: - 可能是后台线程或事件调度程序 - 检查是否有定时任务(`SHOW EVENTS`) 预防性配置建议: ```sql -- 开启连接审计(所有版本可用) SET GLOBAL general_log = 'ON'; -- 创建审计表(社区版替代方案) CREATE TABLE cmd_audit ( id INT AUTO_INCREMENT PRIMARY KEY, user_host VARCHAR(256) NOT NULL, event_time DATETIME(6) NOT NULL, command TEXT ) ENGINE=ARCHIVE; DELIMITER // CREATE TRIGGER audit_trigger AFTER INSERT ON mysql.general_log FOR EACH ROW BEGIN INSERT INTO cmd_audit VALUES (NEW.user_host, NOW(6), NEW.argument); END// DELIMITER ; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值