mysql日志功_MySQL日志功能详解(2)

二进制日志:(多个线程会争用,可以首先写到缓冲区中)

记录了当前服务器的数据修改和有潜在可能性影响数据修改的语句

默认在数据目录下,通常情况下为mysql-bin[root@redhat7 data]# file mysql-bin.000001

mysql-bin.000001: MySQL replication log  复制日志

可以通过mysqlbinlog命令来查看

时间记录 time

偏移位置 position

485580b6869a846de3421df39d020842.png

MySQL > show master status 显示主服务器状态

查看当前使用的二进制日志和下一个事件开始时的基于的位置

MySQL [(none)]> show master status;

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000003 |      107 |              |                  |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

日志滚动:

1、可以按照大小定义

2、可以按照时间定义

3、重启mysql服务器

4、执行flush logs(手动滚动)

607530d604951168b4a0a388d92e1cdc.png

查看当前正在使用的二进制日志MariaDB [(none)]> show binary logs;

+------------------+-----------+

| Log_name         | File_size |

+------------------+-----------+

| mysql-bin.000001 |      1043 |

| mysql-bin.000002 |       245 |

| ...............3 |       245 |

+------------------+-----------+

2 rows in set (0.00 sec)

二进制日志的功用

即时点(时间点)恢复:

复制:

[root@redhat7 data]# file mysql-bin.index

mysql-bin.index: ASCII text

[root@redhat7 data]# cat mysql-bin.index

./mysql-bin.000001

./mysql-bin.000002

./mysql-bin.000003

./mysql-bin.000004

清除二进制日志Mysql > help purge

PURGE { BINARY | MASTER } LOGS

{ TO 'log_name' | BEFORE datetime_expr(某个时间之前) }

查看MySQL的二进制日志mysql > help SHOW BINLOG EVENTS;

mysql > SHOW BINLOG EVENTS;

MariaDB [(none)]> show binlog events\G

*************************** 1. row ***************************

Log_name: mysql-bin.000001

Pos: 4

Event_type: Format_desc

Server_id: 1

End_log_pos: 245

Info: Server ver: 5.5.36-MariaDB-log, Binlog ver: 4

service-id:服务器身份标识

(避免重复执行mysql二进制日志中'修改'类的语句)

MySQL 记录二进制日志的格式MariaDB [(none)]> show variables like 'binlog_format';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| binlog_format | ROW   |

+---------------+-------+

1 row in set (0.00 sec)

基于语句:statement

基于行(数据):row

update tb1 set salary=salary+1000; --> 数据量很大

混合模式:mixed

指定从那个位置开始读取

MariaDB [(none)]> show binlog events in 'mysql-bin.000001' from 591\G

也可以使用

[root@redhat7 data]# mysqlbinlog --start-position=24223 mysql-bin.000001

mysqlbinlog命令(客户端命令)--start-time

--stop-time

--start-position

--stop-position

二进制日志文件内容格式

事件发生的日期和时间

服务器ID

事件结束位置

事件的类型

原服务器生成此事件时的线程ID号  MySQL [(none)]> show processlist;

语句时间戳和写入二进制文件的时间差,单位为秒

错误代码,0表示正常执行

事件内容

事件位置(相当于下一事件的开始位置)

MySQL [(none)]> show global variables like '%log%';

+-------------------------------------------------------------------------------+

| log_bin = {ON|OFF};还可以是一个文件路径                            |

| log_bin_trust_function_creators  是否阻止任何存储函数                         |

| sql_log_bin = {ON|OFF} 当前会话是否将二进制文件录入进二进制文件  |

| sql_log_off 是否将一般查询日志记入查询日志  |

| sync_binlog 同步缓冲中的二进制到硬盘的时间,0不基于时间同步,只在事件提交时同步 |

| binlog_format = {|statement|row|mixed}  |

| max_binlog_cache_size  mysql二进制日志的缓冲区大小,仅用于缓存事务类的语句     |

| max_binlog_stmt_cache_size 语句缓冲区大小,即事务类和非事务类公用的大小        |

| max_binlog_size 二进制日志文件的上限,单位为字节  (超过上限会滚动)             |                |

+-------------------------------------------------------------------------------+

建议:切勿将二进制日志与数据文件放在同一设备

事先做好规划[root@redhat7 data]# mkdir /mysql/binlog

[root@redhat7 data]# vim /etc/my.cnf

log-bin=/mysql/binlog/master-bin

[root@redhat7 data]# chown -R mysql:mysql /mysql/binlog/

重启mysqld 服务器

[root@redhat7 data]# cd /mysql/binlog/

[root@redhat7 binlog]# ls

master-bin.000001  master-bin.index

可以临时通过sql_log_bin来控制二进制的写入

ea2dcf04934b8ee88b48cc15bcfe55b0.png

31957a838a9d8d890eac0ff655d6f0d5.png

中继日志:(跟主从复制相关)

对于非从服务器,中继日志没有启用

relay_log  指明一个文件路径

relay_log_index

relay_log_purge = {ON|OFF} 是否自动清理不在需要的中继日志

relay_log_space_limit 中继大小是否限制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值