资讯专栏INFORMATION COLUMN

MySQL general_log日志抓取业务SQL语句

社区管理员 / 675人阅读

一、基本介绍

业务生产环境中,我们经常会遇到一些比较棘手的异常问题,比如,DB频发crash却无法定位到原因;业务库QPS或IO吞吐非常高,但是业务量并未有增长等等情况,今天我将借助general_log日志抓取mysqldump的执行过程,来向大家介绍一下general_log功能的用法。

友情提示:开启general_log会记录MySQL数据库执行的所有SQL语句,会额外增加数据库的性能消耗。对于比较空闲的数据库影响不大,但针对比较繁忙的、IO吞吐量比较大的数据库来说,可能会感知比较明显。请根据业务容忍度,谨慎评估,开启时机和开启时长。

官网地址:https://dev.mysql.com/doc/refman/5.7/en/query-log.html

二、实验操作

2.1 配置general_log

#(1)开启general_log

mysql> set global general_log=on;
mysql> show variables like '%general%';
+------------------+----------------------------+
| Variable_name    | Value                      |
+------------------+----------------------------+
| general_log      | ON                         |
| general_log_file | /data/mysql/log/mysqld.log |
+------------------+----------------------------+
2 rows in set (0.01 sec)

#(2)设置general_log存储格式为FILE

mysql> set global log_output=file;
Query OK, 0 rows affected (0.01 sec)
 
mysql> show variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+
1 row in set (0.01 sec)

注:general_log和slow_log一样,支持两种存储模式,TABLE和FILE,这里我为了方便vim编辑/过滤和查看,就使用了File模式。

2.2 抓取mysqldump在从库备份时的参数特性

官网介绍:https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_dump-slave

  • 注1:根据mysqldump的特性,mysqldump在从库备份时,加入了--dump-slave的参数,这个参数会在备份过程中自动断开sql_thread,这个时候从库是没有新的数据写入的(主库过来的事务无法被写入)

  • 注2:该参数用于在从服务器导出dmp文件的同时,记录主服务器的二进制文件及位置,便于执行时间点恢复操作。

#(1)执行备份操作
[root@blogs-v2 ~]# mysqldump -uroot -h192.168.0.24 -pUcloudcn  --single-transaction --dump-slave=2 --databases starcto > starcto.sql
 
#(2)查看备份期间general_log日志输出
[root@192-168-0-103 ~]# vim /data/mysql/log/mysqld.log
2022-08-08T11:38:42.753759+08:00         1363 Connect   root@10.25.25.25 on  using TCP/IP
2022-08-08T11:38:42.753922+08:00         1363 Query     /*!40100 SET @@SQL_MODE='' */
2022-08-08T11:38:42.754984+08:00         1363 Query     SHOW VARIABLES LIKE 'gtid\_mode'
2022-08-08T11:38:42.756997+08:00         1363 Query     SELECT @@GLOBAL.GTID_EXECUTED
2022-08-08T11:38:42.757109+08:00         1363 Query     SHOW SLAVE STATUS
2022-08-08T11:38:42.757249+08:00         1363 Query     UNLOCK TABLES
2022-08-08T11:38:42.757384+08:00         1363 Query     SELECT LOGFILE_GROUP_NAME, FILE_NAME, TOTAL_EXTENTS, INITIAL_SIZE, ENGINE, EXTRA FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'UNDO LOG' AND FILE_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IN (SELECT DISTINCT LOGFILE_GROUP_NAME FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('starcto'))) GROUP BY LOGFILE_GROUP_NAME, FILE_NAME, ENGINE, TOTAL_EXTENTS, INITIAL_SIZE ORDER BY LOGFILE_GROUP_NAME
2022-08-08T11:38:42.758173+08:00         1363 Query     SELECT DISTINCT TABLESPACE_NAME, FILE_NAME, LOGFILE_GROUP_NAME, EXTENT_SIZE, INITIAL_SIZE, ENGINE FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('starcto')) ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME
2022-08-08T11:38:42.758651+08:00         1363 Query     SHOW VARIABLES LIKE 'ndbinfo\_version'
2022-08-08T11:38:42.760160+08:00         1363 Init DB   starcto
2022-08-08T11:38:42.760252+08:00         1363 Query     SHOW CREATE DATABASE IF NOT EXISTS `starcto`
2022-08-08T11:38:42.760345+08:00         1363 Query     SAVEPOINT sp
2022-08-08T11:38:42.760429+08:00         1363 Query     show tables
2022-08-08T11:38:42.760570+08:00         1363 Query     show table status like 'account'
2022-08-08T11:38:42.760768+08:00         1363 Query     SET SQL_QUOTE_SHOW_CREATE=1
2022-08-08T11:38:42.760863+08:00         1363 Query     SET SESSION character_set_results = 'binary'
2022-08-08T11:38:42.760953+08:00         1363 Query     show create table `account`
2022-08-08T11:38:42.761057+08:00         1363 Query     SET SESSION character_set_results = 'utf8'
2022-08-08T11:38:42.761147+08:00         1363 Query     show fields from `account`
2022-08-08T11:38:42.761373+08:00         1363 Query     show fields from `account`
2022-08-08T11:38:42.761597+08:00         1363 Query     SELECT /*!40001 SQL_NO_CACHE */ * FROM `account`
2022-08-08T11:38:42.761778+08:00         1363 Query     SET SESSION character_set_results = 'binary'
2022-08-08T11:38:42.761865+08:00         1363 Query     use `starcto`
2022-08-08T11:38:42.761951+08:00         1363 Query     select @@collation_database
2022-08-08T11:38:42.762045+08:00         1363 Query     SHOW TRIGGERS LIKE 'account'
2022-08-08T11:38:42.762278+08:00         1363 Query     SET SESSION character_set_results = 'utf8'
2022-08-08T11:38:42.762363+08:00         1363 Query     ROLLBACK TO SAVEPOINT sp
2022-08-08T11:38:42.762452+08:00         1363 Query     RELEASE SAVEPOINT sp
2022-08-08T11:38:42.762535+08:00         1363 Query     SHOW SLAVE STATUS
2022-08-08T11:38:42.762665+08:00         1363 Query     START SLAVE
2022-08-08T11:38:42.763592+08:00         1363 Quit


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128104.html

相关文章

  • 干货 | MySQL数据库安全之审计

    摘要:相比传统数据库,云数据库易于部署管理和扩展,提供数据可靠性安全性运行状态监控等全套解决方案。下面给大家介绍云数据库审计的开启使用关闭等功能。 每家公司都希望业务高速增长,最好能出几个爆款产品或者爆款业务,从而带动公司营收高速攀升。但站在数据库管理员的角度,这却是实实在在的压力,业务高速增长必然带来数据量的暴增。数据库系统的选型和设计是支撑整个业务系统的重要因素。MySQL数据库是基于云...

    tigerZH 评论0 收藏0
  • 实时查看MySQL执行的语句

    摘要:我们在追查问题和性能调优时,有时希望看到当前都有哪些命令正在被执行,让我们迅速找到热点命令。下面我们就来介绍下如何查看当前正在执行的语句。如果不是通过配置文件的方式变更状态,会在重启后失效。参考资料查看实时执行的语句用命令管理启停 我们在追查MySQL问题和性能调优时,有时希望看到当前都有哪些命令正在被执行,让我们迅速找到热点命令。下面我们就来介绍下如何查看当前正在执行的MySQL语句...

    elarity 评论0 收藏0
  • 来吧,了解下mysql有哪些log

    摘要:概述里面有很多,比如用于主从同步的,防止数据丢失的,慢查询日志等等有简称。这样的技术推迟了页面的刷新,从而提升了数据库的吞吐,有效的降低了访问时延。带来的问题是额外的写操作的开销顺序,当然很快,以及数据库启动时恢复操作所需的时间。 概述 mysql里面有很多log,比如用于主从同步的bin_log,防止数据丢失的redo_log,慢查询日志slow_log等等 redo log Inn...

    zorro 评论0 收藏0
  • MySQL日志文件

    摘要:数据恢复某些数据恢复操作需要用到二进制日志文件恢复历史备份后,可以使用二进制文件重新执行备份后所做的操作,达到完全恢复。 MySQL日志文件 日志文件记录了影响MySQL数据库的各种类型活动,MySQL数据库中常见的日志文件有错误日志、二进制日志、慢查询日志。这些日志文件为DBA对数据库优化、问题查找带来了极大的便利。 日志的输出格式 参数log_output指定了慢查询输出的格式...

    jerryloveemily 评论0 收藏0
  • MySQL 日志(错误日志、二进制日志、查询日志、慢查询日志)

    摘要:中有中不同的日志,分别是错误日志二进制日志日志查询日志和,慢查询日志,应该充分利用这些日志对数据库进行各种维护和调优。日志的读取和错误日志查询日志一样,慢查询日志记录的格式也是纯文本,可以被直接读取。 MySQL 中有 4 中不同的日志,分别是错误日志、二进制日志(binlog 日志)、查询日志和,慢查询日志,应该充分利用这些日志对数据库进行各种维护和调优。 一、错误日志 错误日志时 ...

    yeyan1996 评论0 收藏0

发表评论

0条评论

社区管理员

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<