MySQL的binlog日志的简介与查看

这篇具有很好参考价值的文章主要介绍了MySQL的binlog日志的简介与查看。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦
💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通
😁 2. 毕业设计专栏,毕业季咱们不慌忙,几百款毕业设计等你选。
❤️ 3. Python爬虫专栏,系统性的学习爬虫的知识点。9.9元买不了吃亏,买不了上当 。python爬虫入门进阶
❤️ 4. Ceph实战,从原理到实战应有尽有。 Ceph实战
❤️ 5. Java高并发编程入门,打卡学习Java高并发。 Java高并发编程入门

1、binlog日志是什么

binlog主要用于记录MySQL中的数据库操作,它包括DDL和DML语句(除了查询语句)。它以事件的形式记录,它是一个二进制文件。MySQL的二进制日志是事务安全型的。一般来说开启二进制日志大概会有1%的性能损耗(参见MySQL官方中文手册 5.1.24版)。二进制有两个最重要的使用场景:

  1. MySQL Replication在Master端开启binlog,Master把它的二进制日志传递给slaves来达到master-slave数据一致性的目的。
  2. 数据恢复,通过使用 mysqlbinlog 工具来恢复数据。

binlog日志主要包括两类文件:二进制索引文件(文件名后缀为.index)用于记录所有二进制文件,二进制日志文件(文件名后缀为.0000*),记录数据库中所有的DDL和DML语句。

2、binlog日志如何查看

binlog有三种模式

format 定义 优点 缺点
statement 记录的是修改SQL语句 日志文件小,节约IO,提高性能 准确性差,对一些系统函数不能准确复制或不能复制,如now0.uuid0等
row 记录的是每行实际数据变化 准确性强,能准确复制数据的变更 日志文件大,较大的网络10和磁盘lO
mixed statement和row模式的混合 准确性强,文件大小适中 有可能发生主从不一致问题

业内目前推荐使用的是row模式,准确性高,虽然说文件大,但是现在有SSD和万兆光纤网络,这些磁盘IO和网络IO都是可以接受的。mysql默认的也是row模式。

binlog日志文件是二进制文件,不能直接查看。可以通过下面的命令进行查看

mysqlbinlog mysql-bin.00001

如果是row模式的话

mysqlbinlog -vv mysql-bin.00001
2.1. 查看binlog日志是否开启

dbeaver 如何查看binlog日志,Java 并发编程实战,Java,mysql,数据库,java,SpringBoot

mysql> show master status; #查看当前正在写入的binlog文件

如果没有开启的话则可以通过修改 my.ini (windows环境下)或者/etc/my.cnf 配置文件的 log-bin选项。

在配置文件中加入 log-bin 配置,表示启用binlog,如果没有给定值,写成 log-bin=,则默认名称为主机名。(注:名称若带有小数点,则只取第一个小数点前的部分作为名称)

[mysqld]
log-bin=my-binlog-name
2.2. 通过mysqlbinlog命令查看binlog日志

mysqlbinlog 是一个查看mysql二进制日志的工具,可以把mysql上面的所有操作记录从日志里导出,默认的安装路径是 :/usr/local/mysql/bin/mysqlbinlog

可以通过 find / -name "mysqlbinlog" 或者 which mysqlbinlog 命令来查找mysqlbinlog 工具的路径。

如果输入 mysqlbinlog 命令提示找不到命令的话,则可以通过建立软链的方式。比如我的mysqlbinlog命令在 /data/server/mysql/bin/mysqldump 路径下,可以通过如下命令建立软链解决此问题

ln -s /data/server/mysql/bin/mysqldump /usr/bin/mysqldump

如下是使用mysqlbinlog 命令的基本示例

# mysqlbinlog 的执行格式
mysqlbinlog [options] log_file ...
# 查看bin-log二进制文件(shell方式)
mysqlbinlog -v --base64-output=decode-rows /var/lib/mysql/master.000003

# 查看bin-log二进制文件(带查询条件)
mysqlbinlog -v --base64-output=decode-rows /var/lib/mysql/master.000003 \
    --start-datetime="2023-09-11 00:00:00"  \
    --stop-datetime="2023-09-12 00:00:00"   \
    --start-position="5000"    \
    --stop-position="20000"

这里设置了日志查询的开始时间(2023-09-11 00:00:00),结束时间(2023-09-12 00:00:00),开始位置(5000)以及结束位置(20000)。

更多的mysqlbinlog命令的操作参数可以通过 mysqlbinlog --help进行查看。

dbeaver 如何查看binlog日志,Java 并发编程实战,Java,mysql,数据库,java,SpringBoot
dbeaver 如何查看binlog日志,Java 并发编程实战,Java,mysql,数据库,java,SpringBoot

mysqlbinlog 日志的部分内容

#230910 15:38:30 server id 1  end_log_pos 328 CRC32 0x3bb60240 	Query	thread_id=63	exec_time=0	error_code=0
BEGIN
/*!*/;
# at 328
# at 575
#230910 15:38:30 server id 1  end_log_pos 658 CRC32 0x20b2fcd1 	Table_map: `db1`.`table1` mapped to number 197
# has_generated_invisible_primary_key=0
# at 658
#230910 15:38:30 server id 1  end_log_pos 771 CRC32 0xa0d5cf45 	Write_rows: table id 197 flags: STMT_END_F
### INSERT INTO `db1`.`table1`
### SET
###   @1=1
###   @2=2190000159000076193
###   @3=585
###   @4=3
###   @5=4
###   @6=2
###   @7=NULL
###   @8='2020-06-05 17:04:51'
###   @9='2023-09-10 15:38:30'
###   @10='1268831135392108546'
###   @11=0
# at 771
#230910 15:38:30 server id 1  end_log_pos 802 CRC32 0xecd87f75 	Xid = 90733
COMMIT/*!*/;

上面的输出包括信息

position: 位于文件中的位置,即第一行的(# at 230910),说明该事件记录从文件第230910 个字节开始
timestamp: 事件发生的时间戳,即第二行的(#190308 15:38:30)
server id: 服务器标识(1)
end_log_pos 表示下一个事件开始的位置(即当前事件的结束位置+1)
thread_id: 执行该事件的线程id (thread_id=63)
exec_time: 事件执行的花费时间
error_code: 错误码,0意味着没有发生错误
type:事件类型Query

增加 --base64-output=decode-rows –v 选项解析

(base64-output,可以控制输出语句输出base64编码的BINLOG语句;decode-rows:选项将把基于行的事件解码成一个SQL语句)

mysqlbinlog --no-defaults --database=db1 --base64-output=decode-rows -v  mysql-bin.000269>/data/server/binlog.sql

通过这个命令可以将mysql-bin.000269二进制文件的内容写到binlog.sql文件中。

删除binlog

删除binlog 可以通过 reset master 命令来实现。文章来源地址https://www.toymoban.com/news/detail-774179.html

到了这里,关于MySQL的binlog日志的简介与查看的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开启MySQL的binlog日志

    查看MySQL的binlog模式   几个关于binlog常用的命令   binlog 就是binary log,二进制日志文件,这个文件记录了mysql所有的dml操作。通过binlog日志我们可以做数据恢复,做主住复制和主从复制等等。对于开发者可能对binlog并不怎么关注,但是对于运维或者架构人员来讲是非常重要的

    2024年01月21日
    浏览(85)
  • Mysql之binlog日志浅析

      Binlog是MySQL数据库中的二进制日志,用于记录数据库中所有修改操作,包括增删改等操作。binlog以二进制格式保存,可以通过解析binlog文件来查看数据库的操作历史记录。binlog日志可以用于数据恢复、数据备份、数据同步等场景。在MySQL数据库中,binlog有两种模式:state

    2024年02月02日
    浏览(58)
  • MySQL:binlog启动与查看

    Mysql binlog,即二进制日志,是MySQL最重要的日志,它记录了所有的DDL和DML语句(除了数据查询语句select、show等),以数据形式记录,还包含语句执行所消耗的时间。 binlog的主要目的是复制和恢复。 如何查看MySQL是否开启了binlog? 登录MySQL后,输入: 显示off则未开启,显示o

    2024年02月12日
    浏览(36)
  • mysql binlog 日志详解及恢复

    一、binlog概述 binlog是Mysql sever层维护的一种二进制日志,与innodb引擎中的redo/undolog是完全不同的日志; 其主要是用来记录对mysql数据更新或潜在发生更新的SQL语句,并以\\\"事务\\\"的形式保存在磁盘中; 作用主要有: 复制:MySQL Replication在Master端开启binlog,Master把它的二进制日志传

    2024年02月12日
    浏览(47)
  • mysql关闭binlog日志,删除binlog数据(win和linux通用)

    打开 mysql 命令窗口,查询 binlog 是否开启   (ON)为开启状态 (OFF)为关闭状态 若开启状态则需要修改配置文件,反之不需要任何操作 在 C:ProgramDataMySQLMySQL Server 8.0 路径下打开 my.ini 并注释掉 bin-log 配置项然后在其后面加入skip-log-bin   重启mysql服务   打开 mysql 命令窗口,

    2024年02月07日
    浏览(40)
  • Mysql-binlog的查看

    MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。一般来说开启二进制日志大概会有1%的性能损耗(参见MySQL官方中文手册 5.1.24版)。二进制有

    2024年02月11日
    浏览(40)
  • 开启MySQL二进制日志(binlog)

    前言 binlog即二进制日志 Binary Log,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。一般来说开启二进制日志大概会有一定的性能损耗。 二进制日志有两个最重要的使用场景: Mysql主从复制

    2023年04月09日
    浏览(63)
  • MySQL日志保留策略:设置binlog日志保存天数、文件大小限制

    在MySQL中,有三种主要类型的日志记录:二进制日志(binlog)、错误日志和查询日志。这些日志记录对于MySQL数据库的管理和维护非常重要。在本文中,我们将重点讨论如何设置binlog日志的保留策略。 默认情况下,MySQL会自动将binlog日志文件保存在主目录或指定目录下,并且不

    2024年02月04日
    浏览(48)
  • MySQL的binlog日志存储在哪个位置?

    MySQL的binlog日志文件默认存储在MySQL服务器的数据目录下,具体位置和命名规则取决于MySQL服务器的配置。 在Linux操作系统中,通常默认的MySQL数据目录为 /var/lib/mysql ,而binlog日志文件名的命名规则为 mysql-bin.xxxxxx ,其中 xxxxxx 代表一个连续递增的数字。例如,第一个binlog文件

    2024年02月11日
    浏览(47)
  • mysql binlog 日志自动清理及手动删除

    1、查看日志文件的文件名以及在那里 show binary logs; 2、手动清除binlog文件 以文件为参考物 purge master logs to \\\'mysql-bin.009\\\';    ‘mysql-bin.009’之前的全部被清除,不包含mysql-bin.009 以时间为参考物 PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY); //删除10天前的MySQL binlog日志 删除所

    2024年02月07日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包