MySQL日志分析(必要)

mysqlbinlog->解析mysql的binlog日志
mysql的binlog日志是什么?
数据目录下的如下文件就是mysql的binlog日志
-rw-rw---- 1 mysql mysql 143 Apr 29 15:11 log-bin.000001
-rw-rw---- 1 mysql mysql 1481 Apr 29 17:11 log-bin.000002
-rw-rw---- 1 mysql mysql 143 Apr 29 17:14 log-bin.000003
-rw-rw---- 1 mysql mysql 4317 Apr 29 17:55 log-bin.000004
-rw-rw---- 1 mysql mysql 143 Apr 29 18:07 log-bin.000006
-rw-rw---- 1 mysql mysql 120 Apr 29 18:07 log-bin.000007
MySQL的binlog日志作用是什么?
用来记录mysql内部增删改查等对mysql数据库有更新的记录
转化MySQL日志
mysqlbinlog log-bin.000007>mysql.sql

参数:
-d 指定数据库
–start-position=nuim 指定mysql bin-log开始节点
–stop-opsition=num 指定mysql bin-log结束节点
PS:at num
例子# at 381
#200429 19:30:14 server id 1 end_log_pos 459 CRC32 0x09ea9a50 Query thread_id=2940 exec_time=0 error_code=0
SET TIMESTAMP=1588159814/!/;
COMMIT
/!/;

at 459

例子:
mysqlbinlog --start-position=2968 --stop-position=3120 log-bin.000004
–start-datetime=string 指定mysql bin-log开始时间
–stop-datetime=string 指定mysql bin-log结束时间
mysqlbinlog --start-datetime=“2020-4-29 17:15:53” --stop-datetime=“2020-4-29 17:16:00” log-bin.000004
-r 等于重定向 >

–master-data=1
作用:CHANGE MASTER TO MASTER_LOG_FILE=‘log-bin.000007’, MASTER_LOG_POS=568;
–master-data=2
–CHANGE MASTER TO MASTER_LOG_FILE=‘log-bin.000007’, MASTER_LOG_POS=568;

错误日志(error log):记录MySQL服务进程mysqld在启动/关闭或运行进程中遇到的错误信息
查询日志(general query log):
普通查询日志(general query log):记录客户端连接信息和执行的SQL语句信息
慢查询日志(slow query log):记录执行时间超出指定值(long_query_time)的SQL语句
二进制日志(biunary log):记录数据被修改的相关信息

普通查询日志参数;
mysql> show variables like “general_log”;
±--------------±------+
| Variable_name | Value |
±--------------±------+
| general_log | OFF |
±--------------±------+
1 row in set (0.00 sec)

mysql>

慢查询
long_query_time = 1
log-slow-queries = /var/lib/mysql/slow.log

log_queries_not_using_indexes

二进制日志:
mysql> show variables like “%log_bin%”;
±--------------------------------±----------------------------+
| Variable_name | Value |
±--------------------------------±----------------------------+
| log_bin | ON |
| log_bin_basename | /var/lib/mysql/binlog |
| log_bin_index | /var/lib/mysql/binlog.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
±--------------------------------±----------------------------+
6 rows in set (0.00 sec)

binlog日志的三种模式
1.statement Level模式
每一条会修改数据的sql都会记录到master的bin-log中。slave在复制的时候sql进程会解析成和原来master端执行过的相同的sql来再次执行。
优点:statement level 下的优点首先解决了row level下的缺点,不需要记录每一行数据的变化,减少bin-log日志量,节约IO,提高性能。
缺点:由于他是记录的执行语句,需要记录上下文信息,。
2.Row Level模式
日志中会记录成每一行数据被修改的形式,然后再slave端再对相同的记录进行修改。
优点:在row level模式下,bin-log中可以不记录执行的sql语句的上下文相关的信息。
缺电:row level下,所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容。
3.Mixed模式
实际上就是前两种模式的结合,在Mixed模式下,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志,也就是Statement和Row之间选择一种。
mysql> show variables like “%binlog_format%”;
±--------------±----------+
| Variable_name | Value |
±--------------±----------+
| binlog_format | STATEMENT |
±--------------±----------+
1 row in set (0.00 sec)
在配置文件中参数如下:
log-bin=mysql-bin
#binlog_format=“STATEMENT”
#binlog_format=“ROW”
#binlog_format=“MIXED”

mysql内部修改
set global binlog_format = MIXED;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值