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日志相关推荐

  1. Mysql清理binlog日志

    1.查看binlog日志 mysql> show binary logs;+------------------+------------+ | Log_name | File_size | + ...

  2. 数据采集之解析Mysql的binlog日志发送至Kafka实时消费(转:https://blog.csdn.net/liguohuabigdata/article/details/79472777)

    本文采用Maxwell来实现实时解析mysql的binlog日志发送至kafka 1.开启mysql binlog 环境中mysql是docker容器,所以需要进入容器修改mysql配置.docker ...

  3. mysql通过binlog日志来恢复数据

    简介 在生产的过程中有这么一个业务场景:比如我在2016-11-19 09:30:00 通过mysqldump的方式备份了数据库,但是在2016-11-19 10:30:00的时候数据库崩溃了,如果通 ...

  4. docker开启mysql的binlog日志

    前言 在开发中,需要通过监听mysql的binlog日志文件做到对数据表的监控,由于mysql是部署在docker容器中,还需要解决数据卷的问题 1.通过数据卷的方式开启一个mysql镜像 docke ...

  5. mysql数据库binlog日志截断报错,导致mysql主从同步失败故障排查

    mysql数据库binlog日志截断报错,导致mysql主从同步失败故障排查 Got fatal error 1236 from master when reading data from binar ...

  6. mysql sql_log_bin怎么看_MySQL数据库之开启和查看mysql的bin-log日志

    本文主要向大家介绍了MySQL数据库之开启和查看mysql的bin-log日志 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. [root@VM_0_7_centos data] ...

  7. 记录:mysql的binlog日志开启与数据恢复

    1.测试使用mysql版本: mysql-5.6.43 2.以下为方便学习所以做了记录,除了第一部分是我自己的环境配置,第二部分大家可参考一下博文. <平头哥的技术博文>平头哥的技术博文 ...

  8. Mysql基于binlog日志恢复数据

    Mysql基于binlog日志恢复数据 1.Linux安装mysql https://blog.csdn.net/qq_44981526/article/details/126717005 可能遇到的 ...

  9. mysql slow log损坏_06 : mysql 的 binlog 日志 和slow慢日志 详解

    mysql 的 binlog 日志 和slow慢日志 详解 mysql一般常用的日志有三种: 1:error错误日志 2: binlog日志 3:slow日志 下面将详细解释这三种日志: 1.错误日志 ...

最新文章

  1. 手摸手入门前端--01.webpack4
  2. hdu 3721 树的最小直径
  3. bzoj4514[Sdoi2016]数字配对
  4. 直方图和直条图_绘图专题 | 条形图/直方图傻傻分不清楚
  5. 【转】关于DCMTK中像素存储以及getoutdata()函数的使用
  6. 2020年系统集成项目管理工程师上午真题及答案解析
  7. ZOJ3826 Hierarchical Notation(14牡丹江 H) 树套树
  8. java.util.zip 用法,Java压缩文件工具类ZipUtil使用方法代码示例
  9. GitHub 标星 8w!这个开源面试总结屌爆了!
  10. Hadoop-2.2.0中文文档—— Common - CLI MiniCluster
  11. DELPHI 中 Window 消息大全使用详解
  12. 三大语言关于负数除整数余数和商的总结
  13. js undefined和null区别
  14. Ubuntu 下安装VirtualBox主要步骤及出现的问题的解决方案
  15. 统计学学习日记:L10-假设检验p值
  16. 台式计算机卡拉ok点歌系统,台式机改造歌厅点歌系统几款实用范例
  17. 概率论与数理统计第一章 随机事件与概率 学习总结
  18. 服务器上的 Git - 在服务器上部署 Git
  19. 2018校招笔试真题汇总(java/C++)
  20. Android内存优化(一)

热门文章

  1. PNAS:网络连接的中断预示着中风后多种行为障碍
  2. 【GAMES101】作业6(提高)含BVH与SAH加速查找算法(SVH)和快速排序算法
  3. 「建议收藏」第一人称视角带你走进 Vue 源码世界
  4. 职业高中学计算机高考后能报什么,「新高考」新高考选哪些科目可以报计算机专业?高中生如何提分?...
  5. 求助!PIP安装出问题
  6. 高德地图、百度地图、腾讯地图坐标相互转换
  7. py217-基于Python+django的服装销售商城网站#毕业设计
  8. 北大软件工程 计算机技术,2019年北京大学软件工程细致入微考研经验分享
  9. 人工智能、机器学习、深度学习、神经网络
  10. 传奇私服老师显示服务器维护,传奇私服登陆器登陆时出现的问题