通过MySQL日志实时查看执行语句以及更新日志的教程

通过 MySQL 日志实时查看执行语句和更新日志可以帮助我们更好地了解数据库的运行状态,发现和解决潜在的问题。下面是详细的攻略:

1. 开启 MySQL 的日志功能

要开启 MySQL 的日志功能,可以在 MySQL 的配置文件中添加以下代码(这里以 CentOS 7 下的 MySQL 5.7 为例):

# 在 [mysqld] 的下面添加以下三行
log_error=/var/log/mysql/error.log
log-bin=/var/log/mysql/mysql-bin.log
expire_logs_days=7

其中,log_error 指定错误日志的路径,log-bin 指定二进制日志的路径,expire_logs_days 指定日志过期时间。

配置文件默认的位置为 /etc/my.cnf 或者 /etc/mysql/my.cnf,如果不存在可以自行创建。修改完配置文件后,需要重启 MySQL 服务才能生效。可以通过以下命令重启 MySQL:

sudo systemctl restart mysqld

2. 查看更新日志

MySQL 的更新日志记录了所有对数据库进行的增删改操作,可以通过以下命令实时查看:

sudo tail -f /var/log/mysql/mysql-bin.index

该命令将实时输出 binlog 日志的名字和位置,例如:

/var/log/mysql/mysql-bin.000001
/var/log/mysql/mysql-bin.000002
/var/log/mysql/mysql-bin.000003

然后可以使用 mysqlbinlog 命令来查看某个日志文件的内容,例如:

mysqlbinlog /var/log/mysql/mysql-bin.000002

该命令将输出 MySQL 在该日志文件中记录的所有更新语句。可以通过管道符 | 将输出内容分页,例如:

mysqlbinlog /var/log/mysql/mysql-bin.000002 | less

3. 查看执行语句日志

MySQL 的执行语句日志记录了所有对数据库进行的查询语句以及其它操作,可以通过以下命令实时查看:

sudo tail -f /var/log/mysql/error.log

该命令将实时输出 error.log 文件的内容,可以看到 MySQL 执行的所有语句。如果你希望记录更详细的信息,可以在配置文件中添加以下代码:

# 在 [mysqld] 的下面添加以下三行
general_log=on
general_log_file=/var/log/mysql/mysql-general.log
log-output=file

这样,MySQL 将会把所有的查询语句和其它操作都记录在 mysql-general.log 文件中。同样可以使用 tail 命令和 less 命令来查看日志文件的内容。

例如:

sudo tail -f /var/log/mysql/mysql-general.log | less

这样,我们就可以通过 MySQL 的日志实时查看执行语句以及更新日志了。

示例

假设我们现在有一个 test 数据库,里面有一个 users 表,结构如下:

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '',
  `age` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

我们现在需要向 users 表中插入一条数据,可以通过以下命令:

INSERT INTO test.users (name, age) VALUES ('张三', 18);

如果开启了 MySQL 的日志功能,可以通过上述步骤来查看执行和更新日志。

此外,还可以使用 UPDATEDELETE 命令来测试更新日志。

例如,我们现在需要将 id 为 1 的数据从 users 表中删除,可以通过以下命令:

DELETE FROM test.users WHERE id = 1;

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:通过MySQL日志实时查看执行语句以及更新日志的教程 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • 低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限

    前言 Druid是阿里巴巴开源的一个高效、可靠的数据库连接池。但是,在使用低版本的Druid连接MySQL数据库时,如果使用MySQL8.0的驱动程序会出现线程阻塞、性能受限等问题,导致无法正常使用。 原因分析 在Druid的低版本中,存在一个锁机制,对于每个数据库连接,都会为其分配一个“真正的物理连接”来执行SQL。这会导致在多线程环境下出现别的线程一直在…

    database 2023年5月22日
    00
  • 最强IDE微软Visual Studio 2017正式版新功能详细汇总(附官方下载地址)

    最强IDE微软Visual Studio 2017正式版是一款非常强大的开发工具,它为开发者提供了许多实用的功能和工具。下面我们来详细讲解一下Visual Studio 2017的新功能。 Visual Studio 2017新功能汇总 支持多种语言 Visual Studio 2017支持多种语言,包括C ++, C#, F#, Visual Basic和…

    database 2023年5月22日
    00
  • 在麒麟V10服务器上编译安装Storm的详细过程

    下面是在麒麟V10服务器上编译安装Storm的详细过程的完整攻略: 准备工作 在开始之前,需要做好以下准备: 安装Java Development Kit(JDK):Storm是用Java编写的,需要JDK才能进行编译和执行。在麒麟V10服务器上,可以通过以下命令安装JDK: sudo apt-get install default-jdk 安装Maven:…

    database 2023年5月22日
    00
  • Express作者TJ告别Node.js奔向Go

    Express作者TJ告别Node.js奔向Go 最近,Express.js的作者TJ Holowaychuk宣布放弃Node.js,改为使用Go语言来开发后端应用程序。这个消息一出,立刻引起了广泛关注和讨论。在本篇文章中,我们将详细讲解TJ向Go转换的完整攻略。 为什么TJ要放弃Node.js? 首先,我们需要了解TJ放弃Node.js背后的原因。在TJ发…

    database 2023年5月21日
    00
  • MySQL 视图的基础操作(五)

    下面我将为您详细讲解“MySQL 视图的基础操作(五)”的完整攻略。 什么是 MySQL 视图 MySQL 视图是一种虚拟的表,它是通过一个预定义的 SQL 查询语句来创建的。视图可以使用表的下标,而不是使用实际的数据表。也就是说,使用视图时,我们实际上是在使用一个包含了指定行和列的 SELECT 语句的结果集。 创建视图 创建视图的语法如下所示: CREA…

    database 2023年5月22日
    00
  • mysql优化 慢查询(一)

    1.显示慢查询的一些参数的命令:show variables like ‘%slow%’;结果如图 2.上面四个参数的意思是:   log_slow_queries  off    表示“慢查询”是“关闭的状态”   slow_launch_time  2     表示“查询时间超过2秒就记录到慢查询日志中”;   slow_queries_log  off…

    MySQL 2023年4月13日
    00
  • 简单的ASP中经常用到的代码[推荐]

    简单的ASP中经常用到的代码 简介 ASP (Active Server Pages) 是一种可以动态生成HTML页面的服务器端脚本语言,常用于编写Web应用程序。在ASP的开发中,会用到一些常见的代码片段,下面将对这些代码片段进行详细讲解。 ASP程序的基本结构 在ASP程序中,通常会包含页面头部、页面主体和页面底部三个部分。 <!– #inclu…

    database 2023年5月21日
    00
  • MySQL limit分页大偏移量慢的原因及优化方案

    MySQL的LIMIT语句在分页查询时非常常见,我们可以使用LIMIT语句来返回一个数据集的子集。但是,当我们使用大偏移量的LIMIT语句时,查询性能会明显下降,导致慢查询,这是因为数据集太大,需要进行大量的查询才能得到结果。下面,我们将讨论原因,并提供一些优化方案。 1. 问题原因 当我们使用大偏移量的LIMIT语句时,如LIMIT 5000000, 10…

    database 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部