实时查看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前端网发表,如需转载,请注明页面地址。
code前端网
