mysql之binlog日志
binlog日志(binary log)
1.开启mysql的binlog日志
1.1 查看binlog是否开启
mysql> show variables like '%log_bin%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin | OFF |
| log_bin_basename | |
| log_bin_index | |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+-------+
6 rows in set (0.01 sec)
如果没开启
1.2 编辑my.cnf
vim /etc/my.cnf
增加
#节点Id,注意集群中不能重复,单节点不配置也可以
server-id=123
#开启binlog日志,指定其存放位置
log-bin=/var/lib/mysql/mysql-bin
#开启binlog自动过期
expire_logs_days=3
1.3 重启数据库
service mysqld restart
然后
mysql> show variables like '%log_bin%';
+---------------------------------+--------------------------------+
| Variable_name | Value |
+---------------------------------+--------------------------------+
| log_bin | ON |
| log_bin_basename | /var/lib/mysql/mysql-bin |
| log_bin_index | /var/lib/mysql/mysql-bin.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
/var/lib/mysql/mysql-bin是日志文件
/var/lib/mysql/mysql-bin.index是索引
1.4 查看日志索引和事件位置
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000004 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql-bin是日志文件
000004是索引
pos=154是事件位置也可以叫偏移值
2.binlog的常见命令
2.1 查看所有binlog日志列表
mysql> show master logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 7083 |
| mysql-bin.000002 | 201 |
| mysql-bin.000003 | 201 |
| mysql-bin.000004 | 467 |
| mysql-bin.000005 | 1218 |
+------------------+-----------+
5 rows in set (0.00 sec)
2.2查看master状态
即最后(最新)一个binlog日志的编号名称,及其最后一个操作事件pos结束点(Position)值
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000004 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
2.3flush刷新log日志,自此刻开始产生一个新编号的binlog日志文件
mysql> show master logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 7083 |
| mysql-bin.000002 | 201 |
| mysql-bin.000003 | 201 |
| mysql-bin.000004 | 467 |
| mysql-bin.000005 | 1265 |
| mysql-bin.000006 | 154 |
+------------------+-----------+
6 rows in set (0.00 sec)
注意:每当mysqld服务重启时,会自动执行此命令,刷新binlog日志;在mysqldump备份数据时加 -F 选项也会刷新binlog日志;
2.4重置(清空)所有binlog日志
mysql> reset master;
3.查看binlog日志的内容
3.1:使用mysqlbinlog自带查看命令法:
注意:
–>binlog是二进制文件,普通文件查看器cat、more、vim等都无法打开,必须使用自带的mysqlbinlog命令查看
–>binlog日志位置在my.cnf中配置 log-bin=/var/lib/mysql/mysql-bin
–>在MySQL5.5以下版本使用mysqlbinlog命令时如果报错,就加上 “–no-defaults”选项
mysqlbinlog mysql-bin.000004
mysqlbinlog常见的选项有以下几个:
--start-datetime:从二进制日志中读取指定等于时间戳或者晚于本地服务器的时间--stop-datetime:从二进制日志中读取指定小于时间戳或者等于本地服务器的时间 取值和上述一样--start-position:从二进制日志中读取指定position 事件位置作为开始。--stop-position:从二进制日志中读取指定position 事件位置作为事件截至-vvv 显示sql-d 指定数据库
mysql二进制日志有三种格式:statement、row、mixed
一般我们在主从复制过程中采用的格式都是mixed。这种格式兼具了基于行(row)和基于语句(statement)的优点,速度和效率是最高的。
但是在使用mysqlbinlog查看混合模式的二进制文件时,基于行的部分默认是以base64编码显示的,那么如何对其进行解码呢,方法如下:
--base64-output=decode-rows
例如
[root@iZ2ze316xjjg0mvije7695Z mysql]# mysqlbinlog mysql-bin.000005 -vvv --base64-output=decode-rows -v --start-position 389 --stop-position 485
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 389
#220307 10:53:29 server id 1 end_log_pos 420 CRC32 0x63638b44 Xid = 5568
COMMIT/*!*/;
# at 420
#220307 10:50:21 server id 1 end_log_pos 485 CRC32 0x19318c44 Anonymous_GTID last_committed=1 sequence_number=2 rbr_only=yes
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
BEGIN /*added by mysqlbinlog */ /*!*/;
ROLLBACK /* added by mysqlbinlog */ /*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
[root@iZ2ze316xjjg0mvije7695Z mysql]# mysqlbinlog mysql-bin.000005 --start-position 389 --stop-position 485
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#220307 10:52:58 server id 1 end_log_pos 123 CRC32 0xed4fb7b6 Start: binlog v 4, server v 5.7.37-log created 220307 10:52:58
BINLOG '
inMlYg8BAAAAdwAAAHsAAAAAAAQANS43LjM3LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA
Aba3T+0=
'/*!*/;
# at 389
#220307 10:53:29 server id 1 end_log_pos 420 CRC32 0x63638b44 Xid = 5568
COMMIT/*!*/;
# at 420
#220307 10:50:21 server id 1 end_log_pos 485 CRC32 0x19318c44 Anonymous_GTID last_committed=1 sequence_number=2 rbr_only=yes
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
BEGIN /*added by mysqlbinlog */ /*!*/;
ROLLBACK /* added by mysqlbinlog */ /*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
[root@iZ2ze316xjjg0mvije7695Z mysql]# mysqlbinlog mysql-bin.000005 -vvv --base64-output=decode-rows --start-position 389 --stop-position 485
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 389
#220307 10:53:29 server id 1 end_log_pos 420 CRC32 0x63638b44 Xid = 5568
COMMIT/*!*/;
# at 420
#220307 10:50:21 server id 1 end_log_pos 485 CRC32 0x19318c44 Anonymous_GTID last_committed=1 sequence_number=2 rbr_only=yes
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
BEGIN /*added by mysqlbinlog */ /*!*/;
ROLLBACK /* added by mysqlbinlog */ /*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
server id 1 :服务器id
end_log_pos 123 :当前事务结束时的pos
3.2 mysqlbinlog读取出binlog日志的全文内容比较多,不容易分辨查看到pos点信息
下面介绍一种更为方便的查询命令:
mysql> show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];
参数解释:
IN ‘log_name’ :指定要查询的binlog文件名(不指定就是第一个binlog文件)
FROM pos :指定从哪个pos起始点开始查起(不指定就是从整个文件首个pos点开始算)
LIMIT [offset,] :偏移量(不指定就是0)
row_count :查询总条数(不指定就是所有行)
例1:查询mysql-bin.000001日志
show binlog events
例2:查询mysql-bin.000002日志
\G:可读性好点
show binlog events in 'mysql-bin.000002'\G;
例3:查询mysql-bin.000002日志,从154查起
show binlog events in 'mysql-bin.000002' from 154\G;
例4:查询mysql-bin.000002日志,从154查起,并且 跳过前两个,和sql的limit一样
show binlog events in 'mysql-bin.000002' from 154 limit 2,10\G;
mysql之binlog日志相关推荐
- Mysql清理binlog日志
1.查看binlog日志 mysql> show binary logs;+------------------+------------+ | Log_name | File_size | + ...
- 数据采集之解析Mysql的binlog日志发送至Kafka实时消费(转:https://blog.csdn.net/liguohuabigdata/article/details/79472777)
本文采用Maxwell来实现实时解析mysql的binlog日志发送至kafka 1.开启mysql binlog 环境中mysql是docker容器,所以需要进入容器修改mysql配置.docker ...
- mysql通过binlog日志来恢复数据
简介 在生产的过程中有这么一个业务场景:比如我在2016-11-19 09:30:00 通过mysqldump的方式备份了数据库,但是在2016-11-19 10:30:00的时候数据库崩溃了,如果通 ...
- docker开启mysql的binlog日志
前言 在开发中,需要通过监听mysql的binlog日志文件做到对数据表的监控,由于mysql是部署在docker容器中,还需要解决数据卷的问题 1.通过数据卷的方式开启一个mysql镜像 docke ...
- mysql数据库binlog日志截断报错,导致mysql主从同步失败故障排查
mysql数据库binlog日志截断报错,导致mysql主从同步失败故障排查 Got fatal error 1236 from master when reading data from binar ...
- mysql sql_log_bin怎么看_MySQL数据库之开启和查看mysql的bin-log日志
本文主要向大家介绍了MySQL数据库之开启和查看mysql的bin-log日志 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. [root@VM_0_7_centos data] ...
- 记录:mysql的binlog日志开启与数据恢复
1.测试使用mysql版本: mysql-5.6.43 2.以下为方便学习所以做了记录,除了第一部分是我自己的环境配置,第二部分大家可参考一下博文. <平头哥的技术博文>平头哥的技术博文 ...
- Mysql基于binlog日志恢复数据
Mysql基于binlog日志恢复数据 1.Linux安装mysql https://blog.csdn.net/qq_44981526/article/details/126717005 可能遇到的 ...
- mysql slow log损坏_06 : mysql 的 binlog 日志 和slow慢日志 详解
mysql 的 binlog 日志 和slow慢日志 详解 mysql一般常用的日志有三种: 1:error错误日志 2: binlog日志 3:slow日志 下面将详细解释这三种日志: 1.错误日志 ...
最新文章
- 手摸手入门前端--01.webpack4
- hdu 3721 树的最小直径
- bzoj4514[Sdoi2016]数字配对
- 直方图和直条图_绘图专题 | 条形图/直方图傻傻分不清楚
- 【转】关于DCMTK中像素存储以及getoutdata()函数的使用
- 2020年系统集成项目管理工程师上午真题及答案解析
- ZOJ3826 Hierarchical Notation(14牡丹江 H) 树套树
- java.util.zip 用法,Java压缩文件工具类ZipUtil使用方法代码示例
- GitHub 标星 8w!这个开源面试总结屌爆了!
- Hadoop-2.2.0中文文档—— Common - CLI MiniCluster
- DELPHI 中 Window 消息大全使用详解
- 三大语言关于负数除整数余数和商的总结
- js undefined和null区别
- Ubuntu 下安装VirtualBox主要步骤及出现的问题的解决方案
- 统计学学习日记:L10-假设检验p值
- 台式计算机卡拉ok点歌系统,台式机改造歌厅点歌系统几款实用范例
- 概率论与数理统计第一章 随机事件与概率 学习总结
- 服务器上的 Git - 在服务器上部署 Git
- 2018校招笔试真题汇总(java/C++)
- Android内存优化(一)
热门文章
- PNAS:网络连接的中断预示着中风后多种行为障碍
- 【GAMES101】作业6(提高)含BVH与SAH加速查找算法(SVH)和快速排序算法
- 「建议收藏」第一人称视角带你走进 Vue 源码世界
- 职业高中学计算机高考后能报什么,「新高考」新高考选哪些科目可以报计算机专业?高中生如何提分?...
- 求助!PIP安装出问题
- 高德地图、百度地图、腾讯地图坐标相互转换
- py217-基于Python+django的服装销售商城网站#毕业设计
- 北大软件工程 计算机技术,2019年北京大学软件工程细致入微考研经验分享
- 人工智能、机器学习、深度学习、神经网络
- 传奇私服老师显示服务器维护,传奇私服登陆器登陆时出现的问题