Code前端首页关于Code前端联系我们

实时查看mysql数据库日志,查看MySQL日志

terry 2年前 (2023-09-30) 阅读数 53 #Mysql
文章标签 Mysql

本文内容列表:

  • 1.如何查看mysql数据库操作日志
  • 2、MySQL实时日志中查看执行命令和更新日志的教程
  • 3、如何查看mysql数据库操作日志?

如何查看mysql数据库操作日志

1。首先,验证日志中是否启用了 mysqlshow 变量,例如“log_bin”。

2。如果启用,即ON,日志文件将位于mysql安装目录的data目录中。

3。如何通过show master log查看mysql当前状态。

4。要查看二进制日志文件,请使用 mysqlbinlog、shellmysqlbinlog mail-bin.000001 或 shellmysqlbinlog mail-bin.000001 | tail,在Windows下使用类似的东西。

MySQL 协议操作:

1。首先,登录mysql后,运行sql命令:show variables like 'log_bin'。

2。 #错误日志log-errol开启方法:在选项[mysqld] my.ini下:添加代码:log-error=E:\log-error.txt。

内容日志:主要记录启动、运行、停止mysqld时出现的致命问题。这些都是系统级别的错误日志。

3。 #查询日志:log,打开方法:在选项[mysqld] my.ini下:添加代码:log=E:/mysql_log.txt。

4。 #二进制日志:log-bin,开启方式:在[mysqld] my.ini选项下:添加代码:log-bin=E:/mysql_log_bin,日志内容:主要记录所有变化的数据,可以使用mysqlbinlog命令恢复数据。

实时MySQL日志中查看执行命令和更新日志的教程

显示MySQL执行的命令

我想实时显示MySQL执行的SQL命令,类似于mssql中的profiler。设置my.ini文件并打开文件进行编辑:

basedir=E:/MySQL 4.0.12 #bind-address=192.168.15.196 datadir=E:/MySQL 4.0.12/data #language=E:/MySQL 4.0.12/share/你的语言目录#慢查询日志#= Slowqueris.log #tmpdir#= #port=3306 #set-variable=key_buffer=16M

ong_query_time =1 -- 表示执行后多长时间记录SQL,这里是1秒

log-slow-queries= Slowqueris.log --记录返回较慢命令的查询

log-queries-not-using-indexes = nouseindex.log --从字面上看,记录不使用索引的查询

log= mylog.log --记录执行的所有命令

当上述参数打开时,可能会影响MySQL性能。生产环境建议关闭

如何使用新的更新日志

如果只使用一个更新日志,只需删除日志文件,然后将旧的更新日志文件移动到备份,然后启用新的更新日志。

使用以下方法强制服务器启用新的更新日志:

mysqladmin flash-logs

一般情况下,您必须在命令行上指定正在使用的数据库用户:

mysqladmin – u root –plush-logs mysqladmin refresh

一般情况下,您必须在命令行上提供数据库用户:

mysqladmin –u root –pfresh

如果您使用的是 MySQL 3.21 或更早版本,则必须使用刷新mysqladmin。

SQL 语句

FLUSH LOGS

服务器重启

以上方法均具有以下功能:

关闭并重新打开标准和更新日志文件。如果指定不带扩展名的更新日志文件,则新更新日志文件的扩展名相对于前一个文件增加 1。

mysqlFLUSH LOGS;

如何使用新的公共日志

您还可以使用上述方法强制更新公共日志。

要准备定期日志备份,步骤可能会稍微复杂一些:

$ cd mysql-data-directory$ mv mysql.log mysql.old$ mysqladminlush-tables

然后创建备份并删除“mysql.old”。

如何查看mysql数据库操作日志?

有时候我们不小心更新了一张大表,比如当我们把一个条件写错了where...

此时如果我们终止更新线程,那么返回logback时间就会很长。如果你不管它,你不知道更新会持续多久。

可以知道更新进度吗?

实验

我们先创建一个测试数据库:

快速创建一些数据:

连续多次运行同一条SQL,可以快速创建千万条数据:

车行数:

让我们发布一个大更新:

然后启动另一个会话,观察 Performance_schema 中的信息:

可以看到,performance_schema 会列出当前 SQL 从引擎中获取的行数。

SQL执行完毕后,我们看看从引擎中取出的更新有多少行:

可以看到,从引擎中取出的更新总行数是表大小的两倍。那么我们可以估算:更新进度=(rows_examined)/(2*表行数)

? Tips

information_schema.tables提供了表行数的估计,这比使用select count(1)便宜得多,几乎可以忽略。

那么对于所有更新,从引擎检索的行数是否会是表大小的两倍?这个还是需要具体情况具体讨论。上面的 SQL 更新主键。如果只更新内容而不更新主键怎么办?我们来测试一下:

等待更新完成,检查 row_examined 是否正好是表的大小:

如何准确确定这个倍数?

一种方法是依靠经验:update语句时会扫描多少行,主键是否修改,唯一键是否修改,根据这些条件估计系数。

另一种方法是在相同结构的较小桌子上进行实验并获得倍数。

因此我们可以准确地估计主要更新的过程。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门