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 @   数据库小白(专注)  阅读(216)  评论(0编辑  收藏  举报
编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示