09 MYSQL 二进制日志的分析和使用

说明:如下操作只包含简单的binglog相关的操作,目的是方便快速对binlog 进行操作,详细的介绍和说明请参见:

常用的操作:

1.查看当前的二进制位置:

show master logs;

2.使用命令flush logs切换二进制日志,如下所示:

flush logs;

3.二进制日志的删除可以通过命令手工删除,也可以设置自动清理。下面简单介绍一下,如何删除二进制日志。

purge binary logs to 'mysqlbin.000002';
以上命令可以删除mysqlbin.000002以前的日志。

清除某个时间点以前的二进制日志文件。

mysql> purge binary logs before '2017-03-10 10:10:00';
Query OK, 0 rows affected (0.00 sec)

 清除7天前的二进制日志文件

mysql> purge master logs before date_sub( now( ), interval 7 day);
Query OK, 0 rows affected (0.00 sec)

清除所有的二进制日志文件(当前不存在主从复制关系)

reset master;

设置expire_logs_days参数,设置自动清理,其默认值为0,表示不启用过期自动删除功能
mysql> show variables like 'expire_logs_days';

一、对于较小的二进制日志文件,我们可以直接使用如下方式查看:

mysql> show binlog events in 'mysql-bin.000025';
+------------------+-----+-------------+-----------+-------------+---------------------------------------+
| Log_name         | Pos | Event_type  | Server_id | End_log_pos | Info                                  |
+------------------+-----+-------------+-----------+-------------+---------------------------------------+
| mysql-bin.000025 |   4 | Format_desc |         1 |         120 | Server ver: 5.6.31-log, Binlog ver: 4 |
| mysql-bin.000025 | 120 | Query       |         1 |         188 | BEGIN                                 |
| mysql-bin.000025 | 188 | Table_map   |         1 |         236 | table_id: 79 (test.t1)                |
| mysql-bin.000025 | 236 | Write_rows  |         1 |         278 | table_id: 79 flags: STMT_END_F        |
| mysql-bin.000025 | 278 | Xid         |         1 |         309 | COMMIT /* xid=175 */                  |
+------------------+-----+-------------+-----------+-------------+---------------------------------------+

二、指定查看的二进制的起始位点信息:

mysqlbinlog  -vv /var/lib/mysql/mysql-bin.000003 --start-position=475;

三、将二进制日志内容导出到指定的文件中:

1.使用如下语法将二进制日志导出到指定的文件:

mysqlbinlog mysql-bin.xxx -vv --base64-output=decode-rows --start-position=a --stop-position=b>/tmp/test.log

2.执行如下语句将日志中的事务导入数据库(应用部分日志):

mysqlbinlog --skip-gtids --start-position=362945607 --stop-position=363101485 mysql-bin000333 |mysql -utest -p -h ip

 对于较大的二进制日志文件可以使用more 查看其详细内容

cat mysqlbin-xxxx|more

 

四、实例:

这里进行一个实例测试,目的是为了模拟主库上日志没有传入到备库时,而出现的部分日志没有应用到备库,而导致的备库不一致问题。

主库执行如下语句:

 

posted @ 2020-09-01 16:10  数据库小白(专注)  阅读(202)  评论(0编辑  收藏  举报