赞
踩
查看MySQL事务隔离级别,默认可重复读,对于数据互联网项目推荐修改成读已提交
SELECT @@transaction_isolation;
设置读已提交
SET global transaction isolation LEVEL read committed
但是,重启之后就不生效了。需要再次设置。
先查询日志是否开启,NO表示已开启
show variables like 'slow_query%';
这些路径都是默认跟着安装的mysql路径下的,slow结尾的就是慢日志的文件
慢日志默认时间10s
show variables like '%long%';
通过命令去设置long_query_time是不行的,找到my.ini
为了测试出效果,写入了三百万左右的数据,long_query_time设置为1s,慢日志已经记录了
两条执行的sql,执行时间、锁时间、查询结果条数、总扫描的条数、执行的sql
在实际开发中是定位sql查询慢的最方便快捷的一种。
show VARIABLES LIKE '%log_bin%'
没开之前
在my.ini文件中添加,重启mysql
开之后
设置好binlog日志后,重启mysql服务,你的log_bin_index的同级目录下就会出现这样的文件
或者使用命令查看所有binlog日志,这里建议:如果发生了误操作,先执行flush logs,这样错误的日志就保留在这一个log文件中了,方便查找。
SHOW MASTER LOGS
查看log日志内容
SHOW BINLOG EVENTS in 'DESKTOP-5U974TL-bin.000009';
每种操作的类型这里都可以很明确,binlog对于查询而言没有太多性能的影响,只是对于增修删是有影响的。
顺道补充一点,binlog的格式查看命令,5.x后都是ROW了,因为Statement存在主从赋值大bug,Statement记录的事务提交的顺序,事务A开启事务,正在操作,此时事务B也进来了,并且比事务A先提交,此时的数据就对不上了。
show variables like '%binlog_format%';
第二种方式:使用命令查找Pos的索引值,每个at都是一次操作,一直回车即可
mysqlbinlog --no-defaults .\DESKTOP-5U974TL-bin.000009 |more
查看binlog中的sql语句
mysqlbinlog --base64-output=decode-rows -v DESKTOP-5U974TL-bin.000013;
找到删除之前的执行号,执行命令恢复即可
mysqlbinlog "C:\ProgramData\MySQL\MySQL Server 8.0\Data\DESKTOP-5U974TL-bin.000034" --start-position 156 --stop-position 555 | mysql -uroot -p
切记,数据库备份一定需要的,binlog日志只是做部分数据的恢复,不可太依赖这种方式。
美团旗下的一款产品,但与mysql兼容有强制限制的条件
binlog格式必须为row,且binlog_row_image=full
仅支持5.6与5.7
只能回滚DML(增、删、改)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。