大家好,又见面了,我是全栈君。
binlog 顾名思义就是一种二进制日志,是一种与innodb引擎中redo/undo log完全不同的日志。它主要是用来记录对mysql数据更新或潜在发生更新的SQL语句,并以”事务”的形式保存在磁盘中。
开启binlogmy.cnf配置中设置:log_bin=”存放binlog路径目录”。binlog信息查询binlog开启后,可以在配置文件中查看其位置信息,也可以在myslq命令行中查看:
1 2 3 4 5 6 7 8 9 10 11 | show variables like '%log_bin%'; +---------------------------------+-------------------------------------+ | Variable_name | Value | +---------------------------------+-------------------------------------+ | log_bin | ON | | log_bin_basename | /var/lib/mysql/3306/mysql-bin | | log_bin_index | /var/lib/mysql/3306/mysql-bin.index | | log_bin_trust_function_creators | OFF | | log_bin_use_v1_row_events | OFF | | sql_log_bin | ON | +---------------------------------+-------------------------------------+ |
---|
binlog文件开启binlog后,会在数据目录(默认)生产host-bin.n(具体binlog信息)文件及host-bin.index索引文件(记录binlog文件列表)。当binlog日志写满(binlog大小max_binlog_size,默认1G),或者数据库重启才会生产新文件,但是也可通过手工进行切换让其重新生成新的文件(flush logs);另外,如果正使用大的事务,由于一个事务不能横跨两个文件,因此也可能在binlog文件未满的情况下刷新文件。
查看binlog文件列表的SQL语句如下:
1 2 3 4 5 6 7 8 9 10 11 12 | mysql> show binary logs; +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000001 | 177 | | mysql-bin.000002 | 177 | | mysql-bin.000003 | 10343266 | | mysql-bin.000004 | 10485660 | | mysql-bin.000005 | 53177 | | mysql-bin.000006 | 2177 | | mysql-bin.000007 | 1383 | +------------------+-----------+ |
---|
show master status语句可以显示binlog的状态,包含当前二进制日志文件的状态,正在写入的二进制文件,及当前position等信息。
1 2 3 4 5 6 | mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000007 | 120 | | | | +------------------+----------+--------------+------------------+-------------------+ |
---|
reset master语句用于清空binlog日志文件。
默认情况下binlog日志是二进制格式,无法直接查看。可使用两种方式进行查看,下面我分别列举一下!
第一种是使用mysqlbinlog工具,用法:mysqlbinlog: /usr/bin/mysqlbinlog mysql-bin.000007。
mysqlbinlog是mysql官方提供的一个binlog查看工具,也可使用–read-from-remote-server从远程服务器读取二进制日志,还可使用–start-position –stop-position、–start-time= –stop-time精确解析binlog日志。
第二种是直接使用命令行解析。语法如下:
1 2 3 4 | SHOW BINLOG EVENTS [IN 'log_name'] //要查询的binlog文件名 [FROM pos] [LIMIT [offset,] row_count] |
---|
下面看一个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | mysql> show binlog events in 'mysql-bin.000007' from 1190 limit 2\G *************************** 13. row *************************** Log_name: mysql-bin.000007 Pos: 1190 Event_type: Query //事件类型 Server_id: 123 End_log_pos: 1352 //结束pose点,下个事件的起点 Info: use `test`; insert into tb_person set name="name__2", address="beijing", sex="man", other="nothing" *************************** 14. row *************************** Log_name: mysql-bin.000007 Pos: 1352 Event_type: Xid Server_id: 123 End_log_pos: 1383 Info: COMMIT /* xid=51 */ |
---|
Mysql binlog日志有ROW,Statement,MiXED三种格式;可通过my.cnf配置文件及 ==set global binlog_format=’ROW/STATEMENT/MIXED’== 进行修改,命令行 ==show variables like ‘binlog_format’== 命令查看binglog格式。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112063.html原文链接:https://javaforall.cn