MySQL运维15-二进制日志

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

1、二进制日志概述

1.1、内容

  • 二进制日志包含了所有更新了数据或已经潜在更新了数据的语句及执行时间。语句以“事件”(event)的形式保存,它描述了数据的更改信息。
  • 二进制日志不包含没有修改任何数据的语句。如果想要记录所有的语句(例如,为了识别有问题的查询),应该使用通用日志。

1.2、作用

  • 用于恢复数据:二进制日志的主要目的是恢复数据,因为二进制日志包含备份后进行的所有更新。
  • 用于复制数据:二进制日志还用于在主复制服务器上记录所有将要发送给从服务器的语句。

1.3、文件位置

  1. 文件名:如果未给出二进制日志的文件名,那么默认名为主机名-bin。
  2. 目录:如果给出了文件名,但没有包含路径,那么文件将被写入数据目录。
  3. 建议最好指定一个文件名,语句如下:log-bin =/path/to/logmysql-bin
  4. 二进制日志会以在二进制日志名的后面添加一个数字扩展名的方式不断创建新文件,创建新文件有两个时机:时机一、服务器启动或刷新日志时;时机二、当前的日志大小达到了max_binlog_size参数设置的值,那么mysqld会自动创建新的二进制日志。

1.4、日志索引文件

mysqld还将创建一个二进制日志索引文件,其中包含了所有使用二进制日志文件的文件名。默认情况下该索引文件与二进制日志文件的文件名相同,扩展名为“.index”。当mysqld正在运行时,不可手动编辑该文件,这样做可能会使mysqld发生异常。

2、二进制日志相关命令

  • 列出所有二进制日志:SHOW BINARY LOGS
  • 删除所有二进制日志:RESET MASTER
  • 临时禁止语句写入二进制日志:具有SUPER权限的客户端可以通过SET sql_log_bin=0语句禁止将自己的语句记入二进制记录中。这在某些情况下很有用,比如进行数据库的主主切换时,再或者进行数据库的版本升级时。
  • 删除部分二进制日志:可以用PURGE BINARY LOGS命令只删除部分二进制文件。如下的例子将删除历史二进制日志,一直到mysql -bin.000005这个文件为止。
PURGE BINARY LOGS TO 'mysql-bin.000005';
  • 用mysqlbinlog工具查看二进制日志:shell> mysqlbinlog log-file
  • 用二进制日志更新数据库:可以用mysqlbinlog工具检查二进制日志文件。如果想要重新处理日志上的语句,那么这个工具将会很有用。例如,可以用二进制日志更新MySQL数据库,方法如下:
shell> mysqlbinlog log-file | mysql -h host -P port

3、二进制日志的格式

3.1、语句级(binlog_format=statement)

基于语句级的日志记录里包含了原始执行的SQL语句(这会让DBA的维护更方便),还有其他信息,如执行语句的线程ID,语句执行时的时间戳,执行所耗时长等。

3.2、行级(binlog_format=row)

  • 行级日志记录了行的更改信息而不是原始的SQL语句,通过mysqlbinlog会看到行级二进制日志都是一些经过base-64编码的信息。
  • 一般而言,行级日志更健壮,而语句级的日志如果应用了MySQL的一些额外特性,比如存储过程、触发器,则可能会导致复制异常。所以,如果使用的是语句级的复制,那么请务必保持数据库应用的简单性,只用到基本的核心特性即可。
  • mysqlbinlog加参数-verbose(或-v),将会生成带注释的语句,如果连续两次使用这个参数(如-v–v),则会生成字段的类型、长度、是否为NULL等属性信息。

3.3、混合级(binlog_format=mixed)

  • 混合级日志在一般情况下将使用语句级记录日志,但在一些特殊情况下会临时更改为行级记录的形式,以便得到更健壮的复制特性。
  • 建议将记录命令的形式设置为混合模式。

4、二进制日志的解析

如下是使用mysqlbinlog对二进制日志的解析示例:文章来源地址https://www.toymoban.com/news/detail-416913.html

  • #at 141:事件的起始点。
  • #1003099:28:36 server id 123 end_log_pos 245:语句执行的时间,对于复制,这个时间会传输到从库。server id是产生这个事件的MySQL实例的server id参数值。end_log_pos指下一个事件的开始点,其实也就是这个事件的终点+1。
  • Query thread_id=3350 exec_time=11 error_code=0:thread_id指执行这个SQL的线程id。exec_time在主从库中有不同的含义,在主库中,等于执行这个事件所花费的时间;在从库中,等于这个事件结束执行的时间点减去在主库上开始执行的时间点,这个差异可以表征主从之间的滞后程度。error_code为错误状态,等于0时表示状态正常。

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

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

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

相关文章

  • MySQL物理文件----日志文件(错误日志、通用查询日志、二进制日志、慢查询日志)

    MySQL 错误日志记录 MySQL 运行过程中较为严重的警告和错误信息,以及 MySQL 每次启动和关闭的详细信息。 MySQL 错误日志默认是开启的。可以通过 MySQL 配置文件中的 log-error=/var/log/mysqld.log 配置,修改错误日志的配置信息。 可以通过如下 SQL 查看错误日志的详细信息: show vari

    2024年02月15日
    浏览(40)
  • Mysql错误日志、通用查询日志、二进制日志和慢日志的介绍和查看

    目录 一.日志 1.日志和备份的必要性 2.mysql的日志类型 (1)错误日志 (2)通用查询日志 (3)二进制日志 (4)慢日志   在数据库保存数据时,有时候会因为误删除数据库,意外断电或程序意外终止,由于病毒造成的数据库损坏或丢失,文件系统损坏后,系统进行自检操作,

    2024年02月15日
    浏览(27)
  • 第81讲:清理MySQL Binlog二进制日志的方式

    Binlog日志非常重要,但是占用的磁盘空间也很大,我们也需要定期的去清理二进制日志,在MySQL数据库中,提供了自动清理Binlog日志的参数,根据指定的天数,保留n天内的Binlog日志,也可以手动人为删除。 在手动删除Binlog日志时,要切记不要使用rm -rf直接删除Binlog,会导致主

    2024年02月04日
    浏览(38)
  • MySQL主从复制基于二进制日志的高可用架构指南

    在现代数据库架构中,MySQL主从复制技术扮演着重要角色。它不仅可以提升数据库性能和可扩展性,还赋予系统卓越的高可用性和灾难恢复能力。本文将深入剖析MySQL主从复制的内部机制,同时通过一个实际案例,展示其在实际场景中的强大作用。 MySQL主从复制基于二进制日志

    2024年02月13日
    浏览(45)
  • 图文结合带你搞懂MySQL日志之Binary log(二进制日志)

    往期回顾 图文结合带你搞定MySQL日志之Undo log(回滚日志) 图文结合带你搞懂InnoDB MVCC 图文结合带你搞懂MySQL日志之Redo Log(重做日志) 图文结合带你搞懂MySQL日志之Error Log(错误日志) 图文结合带你搞懂MySQL日志之Slow Query Log(慢查询日志) 图文结合带你搞懂MySQL日志之relay log(中

    2024年02月07日
    浏览(43)
  • 第78讲:截取MySQL Binlog二进制日志中特定部分内容的技巧

    我们通过Binlog二进制日志恢复数据时,一般都会先用备份恢复全库的数据,然后再使用Binlog恢复备份中不存在的数据,因此再使用Binlog进行数据恢复时,并不是直接恢复整个Binlog日志中的数据,只是恢复Binlog中的部分数据。 根据特定的情况以及需求去恢复Binlog日志中的数据时

    2024年02月03日
    浏览(37)
  • linux第三阶段--第三方软件(一)MySQL的概述和二进制安装(官网版)

    DB2 POSTGRE-SQL RDBMS(relational database management system),既关系型数据库管理系统。 简单来说,关系型数据库,是指采用了 二维表格 来组织数据的数据库。 扩展:数据库在行业内一般会有两种情况,关系型数据库与非关系型数据库。非关系型数据库并不是通过二维表格来维护数

    2024年02月12日
    浏览(33)
  • 第77讲:二进制方式搭建MySQL数据库5.7版本以及错误日志管理

    前面是使用的yum的方式安装的MySQL数据库,在企业生产环境中大多数都用二进制方式安装。 本次使用二进制方式搭建MySQL 5.7.36版本。 1.1.下载MySQL5.7版本的二进制文件 1.2.创建mysql用户管理MySQL服务

    2024年02月03日
    浏览(42)
  • 【MySQL 数据宝典】【磁盘结构】- 006 bin log 二进制日志的基本模式和参数设置

    binlog是一个二进制格式的文件,用于记录 用户对数据库更新的SQL 语句信息,例如更改数据库表和更改内容的SQL语句都会记录到binlog里,但是不会记录SELECT和SHOW这类操作。 binlog在MySQL的Server层实现(引擎共用) binlog为逻辑日志,记录的是一条SQL语句的原始逻辑 binlog不限制大小,追

    2024年04月24日
    浏览(25)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包