图文结合带你搞懂MySQL日志之relay log(中继日志)

MYSQL数据库日志 MySQL有不同类型的日志文件,用来存储不同类型的日志,分为 二进制日志 、 错误日志 、 通用查询日志和 慢查询日志 ,这也是常用的4种。MySQL 8又新增两种支持的日志: 中继日志 和 数据定义语句日志 。使用这些日志文件,可以查看MySQL内部发生的事情。 **这6类日志分别为: **除二进制日志外,其他日志都是 文本文件 。默认情况下,所有日志创建于 MySQL数据目录 中。日志功能会 降低MySQL数据库的性能 。 日志会 占用大量的磁盘空间 。通用查询日志用来 记录用户的所有操作 ,包括启动和 阅读详情
  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
  • GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
  • 作者: KAiTO
  • 文章来源:GreatSQL社区原创

什么是中继日志(relay log)

中继日志(relay log)只在主从服务器架构的从服务器上存在。从服务器(slave)为了与主服务器(Master)保持一致,要从主服务器读取二进制日志的内容,并且把读取到的信息写入本地的日志文件中,这个从服务器本地的日志文件就叫中继日志。然后,从服务器读取中继日志,并根据中继日志的内容对从服务器的数据进行更新,完成主从服务器的数据同步。

搭建好主从服务器之后,中继日志默认会保存在从服务器的数据目录下。

文件名的格式是:从服务器名 - relay-bin.序号。中继日志还有一个索引文件:从服务器名 - relay-bin.index,用来定位当前正在使用的中继日志。

file

(主从复制原理图)

从服务器I/O线程将主服务器的二进制日志(binlog)读取过来记录到从服务器本地文件,然后从服务器SQL线程会读取中继日志的内容并应用到从服务器,从而使从服务器和主服务器的数据保持一致。

中继日志的作用

中继日志用于主从服务器架构中,从服务器用来存放主服务器二进制日志内容的一个中间文件。从服务器通过读取中继日志的内容,来同步主服务器上的操作。

中继日志是连接mastert(主服务器)和slave(从服务器)的信息,它是复制的核心,I/O线程将来自master的binlog存储到中继日志中,中继日志充当缓冲,这样master不必等待slave执行完成就可以发送下一个binlog。

查看中继日志

中继日志文件的格式与二进制日志文件相同,并且可以 使用 mysqlbinlog 进行读取

SET TIMESTAMP= 1615352328 /*!*/;
BEGIN
/*!*/;
# at 900
#211413 11:33:46 server id 1 end_log_pos 832 CRC32 0xcc16d651 Table_map:
`kaito`.`test` mapped to number 91
# at 950
#211413 11:33:46 server id 1 end_log_pos 872 CRC32 0x07e4047c Delete_rows: table id
91 flags: STMT_END_F -- server id 1 是主服务器,意思是主服务器删了一行数据
BINLOG '
CD95YBMBAAAAMgAAAEADAAAAAFsAAAAAAAEABGRlbW8ABHRlc3QAAQMAAQEBAFHWFsw=
CD95YCABAAAAKAAAAGgDAAAAAFsAAAAAAAEAAgAB/wABAAAAfATkBw==
'/*!*/;
# at 1000

这一段的意思是,主服务器(“server id 1”)对表 kaito.test 进行了 2 步操作:

  • 定位到表 kaito.test 编号是 91 的记录,日志位置是 832
  • 删除编号是 91 的记录,日志位置是 872

相关参数解析

通过语句:show variables like '%relay%' 查看先骨干的relay的所有相关参数如下:

mysql> show variables like '%relay%';
+---------------------------+---------------------------------------+
| Variable_name             | Value                                 |
+---------------------------+---------------------------------------+
| max_relay_log_size        | 0                                     |
| relay_log                 | kaito-relay-bin                       |
| relay_log_basename        | /var/lib/mysql/kaito-relay-bin        |
| relay_log_index           | /var/lib/mysql/kaito-relay-bin.index  |
| relay_log_info_file       | relay-log.info                        |
| relay_log_info_repository | TABLE                                 |
| relay_log_purge           | ON                                    |
| relay_log_recovery        | OFF                                   |
| relay_log_space_limit     | 0                                     |
| sync_relay_log            | 10000                                 |
| sync_relay_log_info       | 10000                                 |
+---------------------------+---------------------------------------+
11 rows in set (0.00 sec)
  • max_relay_log_size:标记relay log 允许的最大值,如果该值为0,则默认值为max_binlog_size(1G);如果不为0,则max_relay_log_size则为最大的relay_log文件大小;

  • relay_log:定义relay_log的位置和名称,如果值为空,则默认位置在数据文件的目录(datadir),文件名默认为host_name-relay-bin.nnnnnn

  • relay_log_index:同relay_log,定义relay_log的位置和名称;一般和relay-log在同一目录

  • relay_log_info_file:设置relay-log.info的位置和名称(relay-log.info记录MASTER的binary_log的恢复位置和relay_log的位置)

  • relay_log_purge:是否自动清空不再需要中继日志时。默认值为1(启用)。

  • relay_log_recovery:当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。默认情况下该功能是关闭的,将relay_log_recovery的值设置为 1时,可在slave从库上开启该功能,建议开启。

  • relay_log_space_limit:防止中继日志写满磁盘,这里设置中继日志最大限额。

    • **注意!**但此设置存在主库崩溃,从库中继日志不全的情况,不到万不得已,不推荐使用!
  • sync_relay_log:这个参数和sync_binlog是一样的,当设置为1时,slave的I/O线程每次接收到master发送过来的binlog日志都要写入系统缓冲区,然后刷入relay log中继日志里,这样是最安全的,因为在崩溃的时候,你最多会丢失一个事务,但会造成磁盘的大量I/O
    当设置为0时,并不是马上就刷入中继日志里,而是由操作系统决定何时来写入,虽然安全性降低了,但减少了大量的磁盘I/O操作。这个值默认是0,可动态修改,建议采用默认值。

  • sync_relay_log_info:这个参数和sync_relay_log参数一样,当设置为1时,slave的I/O线程每次接收到master发送过来的binlog日志都要写入系统缓冲区,然后刷入relay-log.info里,这样是最安全的,因为在崩溃的时候,你最多会丢失一个事务,但会造成磁盘的大量I/O。当设置为0时,并不是马上就刷入relay-log.info里,而是由操作系统决定何时来写入,虽然安全性降低了,但减少了大量的磁盘I/O操作。这个值默认是0,可动态修改,建议采用默认值。

以上只是简单的介绍了每个参数的作用,这些参数具体的设置还是需要根据每个用户的实际系统情况进行设置的;

参考文章

  • 《MySQL是怎样运行的–从根儿上理解MySQL》—小孩子4919(https://juejin.cn/book/6844733769996304392)

Enjoy GreatSQL 😃

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

社区博客有奖征稿详情:https://greatsql.cn/thread-100-1-1.html

image-20230105161905827

【MySQL进阶之路 | 高级篇】简述Bin Log日志 binlog即binary log,二进制日志文件,也叫作变更日志(update log)。二进制日志可以通过数据库的全量备份和二进制日志中保存的增量信息,完成数据库的无损失恢复I但是,如果遇到数据量大、数据库和数据表很多(比如分库分表的应用)的场景,用二进制日志进行数据恢复,是很有挑战性的,因为起止位置不容易管理。在这种情况下,一个有效的解决办法是配置主从数据库服务器,甚至是一主多从的架构,把二进制日志文件的内容通过中继日志,同步到从数据库服务器中,这样就可以有效避免数据库故障导致的数据异常等问题。 阅读详情

相关推荐

什么是 Relaylog 技术?

Relaylog 是一种用于 MySQL 数据库的日志记录机制,它允许多个从服务器(Slave)将主服务器(Master)上的数据更改同步到自己的中继日志中。Relaylog 的主要目的是提高数据复制的效率和可靠性。

理论都是虚的,代码才是王道。 476

mysql 启动不见了 计算机管理_MySQL的日志 - relay log

关注我「程序猿集锦」,获取更多分享。前言relay log的作用如何开启relay log验证relay log开启的效果relay log日志相关参数relay log日志的清除最后前言前面介绍了MySQL的binlog日志相关的知识点,接下里这篇文章中,我们来看一下relaylog的相关内容。relay-log是记录什么的?MySQL用它做什么?relay log的作用Relay log,我们...

weixin_39635567的博客 365

波束管理 Beam Management

Beam Management in 5G NR   波束管理,是5G NR中基于信道质量来动态选择每个UE和gNB之间以什么方向和频率的波束beam来进行通信。   背景   5G NR(New Radio)支持非常高的数据速率和更低的延迟。5G NR支持FR1和FR2频段,FR1为亚6 GHz(450至6000 MHz);FR2为毫米波段(24.25 GHz至52.6 GHz)。   由于毫米波频带使用非常高的频率,因此会导致传播损耗和其他损耗。为了补偿损失,在这种频率下定向通信是必不可少的。

最忆是江南的博客 5826

MySQL主从复制之relay_log_info_repository与sync_relay_log_info

realy_log_info_repository用来决定slave同步的位置信息记录在哪里,同样有两个参数。如果relay_log_info_repository=file,就会创建一个realy-log.info,如...

cuiruidu3106的博客 3221

使用模拟工具Modbus poll 和PLC 通讯

使用模拟工具Modbus poll 和PLC 通讯 简介 Modbus Poll 是一个模拟Modbus 主站的工具。不用在现场调试,在家也能使用,方便快捷的调试验证程序。使用它可以和PLC进行Modbus TCP /RTU 通讯等功能,接下来为大家介绍使用Modbus Poll 和 PLC 进行 Modbus TCP 通讯。 组态PLC PLC作为我们的从站和Modbus Poll 通讯,那我们组态一个PLC。 创建通信DB 创建一个DB块,在数据类型处输入:TCON_IP_V4

weixin_61398412的博客 1万+

保姆级教程:在Ubuntu 22.04上用Conda搞定nuPlan数据集环境(Python 3.9 + PyTorch)

本文提供了一份详细的Ubuntu 22.04环境下使用Conda配置nuPlan自动驾驶数据集的保姆级教程,涵盖Python 3.9安装、Conda环境管理、PyTorch配置及数据集可视化验证等关键步骤,帮助开发者高效搭建开发环境。

weixin_29061997的博客 255

MySQL日志 - ​Relay Log中继日志的介绍

MySQL的日志类型很多,而每种类型都有着特殊的作用,了解这些日志,有助于我们更好地理解MySQL数据库的体系,进而更合理地使用数据库。MySQL日志历史文章,《MySQL日志 - Redo Log重做日志》《MySQL日志 - Error Log错误日志》《MySQL日志 - General Query Log》Relay Log是中继日志,为主从同步服务,参考社区的这篇文章《图文结合带你搞懂M...

bisal的专栏 1438

Python爬虫实战:5分钟搞定Boss直聘数据抓取(附完整代理IP配置)

本文详细介绍了如何使用Python爬虫高效抓取Boss直聘的招聘数据,包括环境配置、反爬策略、数据采集与存储、数据分析等完整流程。通过实战案例,帮助开发者快速掌握招聘市场数据抓取技术,为职业决策提供数据支持。

weixin_30832143的博客 346

MYSQL主从复制图文教程

MySQL主从复制通过主库记录binlog,从库通过I/O线程接收并写入relaylog,再由SQL线程执行实现数据同步。配置步骤包括:主库设置server-id、启用binlog并创建同步账号;从库配置server-id并指定主库连接信息。测试时在主库创建表,从库可查看同步结果。主从复制提供数据冗余、读写分离、备份恢复和性能扩展等功能,确保高可用性和负载均衡。

LUWEIDONG123456的博客 317

YOLOv11的多任务学习:检测+分割+姿态估计-(扩展模型头部分支,实现多任务联合训练)

YOLOv11作为Ultralytics团队于2024年9月发布的最新YOLO系列模型,在前代版本基础上进行了多项架构创新,使其成为支持多任务学习的理想框架。其核心改进包括引入C2PSA(跨阶段局部自注意)模块,将跨阶段局部网络和自注意机制优势结合,使模型能够更有效地跨多层捕获上下文信息。C3k2模块取代了之前的C2f模块,作为CSP Bottleneck的自定义实现,使用两个较小卷积核而非一个大卷积核,在保持准确性的同时提高了效率。 多任务学习(Multi-Task Learning, MTL)在YOL

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 655

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案)

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案)

王老师青少年编程 3396

MySQL主从复制与读写分离

主从复制:核心是“binlog日志+3个线程”,实现数据异步同步,用于备份、负载均衡、故障转移。读写分离:依赖主从复制,核心是“请求路由”,将读写操作分离,减轻主库压力,提升并发。关键注意点:主从库版本一致、数据初始一致;binlog格式推荐row;同步失败优先排查IO和SQL线程;读写分离需解决延迟导致的一致性问题。应用场景:中小项目用代码层面实现读写分离,中大型项目用中间件(MyCat/Sharding-JDBC)实现,提升扩展性和可维护性。

2601_95032198的博客 360

【数字IC设计】芯片设计中的RDC

在芯片设计中,RDC是的缩写,类似于CDC(clock domain crossing),由于现在SOC芯片是有很多ECUs组成,为了使整个系统能够快速从复位中恢复, 用户希望SOC里面每个ECU模块都可以有自己独立的异步复位信号,这样可以在出问题的时候只复位有错误逻辑的模块,而使其它模块保持正常工作。

qq_40268672的博客 2185

【Docker】搭建MySQL主从复制,详细的图文展示

图文展示docker搭建mysql主从复制全过程,并且挂载数据卷

知识输出、记录学习 501

英飞凌Tricore实战系列导读

笔者结合项目应用经验对Tricore MCU的开发及应用经验进一步总结,成人达己,渡己渡人。

initiallizer的博客 3790

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

mysql 主从_一文详解MySQL主从复制

之前文章详细介绍了MySQL数据库的单机多实例搭建,可参考:《MySQL单机多实例搭建》。本篇文章将在上篇文章的基础上介绍MySQL主从复制过程,其中常见的复制架构有:异步复制,半同步复制及同步复制。常用的复制架构有异步复制及半同步复制!一、常见的复制架构1.1、主主复制结构图:2. 说明主主复制即复制的两个实例互为主从,两个库中都可以同时读和写;优点a、对于读写请求都较...

weixin_39674978的博客 210

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

吃透MariaDB全套SQL、权限、主从同步,告别只会复制命令,底层逻辑彻底理清

哈喽各位Linux小白小伙伴!是不是一接触数据库就一头雾水?网上MariaDB教程要么只贴一堆命令不解释参数,要么跳过关键初始化步骤,跟着敲到一半直接报错;想做主从复制,分不清binlog、relay日志作用,不知道配置完下一步该执行什么,完全理不清实验顺序?📌MariaDB是MySQL创始人分叉开发的开源免费关系型数据库,完全兼容MySQL语法、命令、配置文件、主从复制逻辑;

2301_81987367的博客 522

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

主从复制和读写分离

1.前言2.主从复制2.1MySQL的复制类型2.2MySQL主从复制的过程2.3实现主从复制配置MHA 1.前言 在生产环境中,成熟的业务员通常数据量都非常的大,那么导致了单台MySQL数据库的安全性、高可用性和高并发方面都无法满足数据量很大的实际需求,所以我们可以配置多台主从数据库服务器以实现读写分离。 2.主从复制 2.1MySQL的复制类型 基于语句的复制 基于行的复制 混合类型的复制 2.2MySQL主从复制的过程 1、Master将用户对数据库更新的操作以二进制格式保存到Binary Lo.

weixin_56422027的博客 493

MySQL--中继日志(Relay Log)

中继日志(Relay Log)是MySQL复制过程中的一个关键组成部分,主要用于主从复制架构中。在这种架构下,数据从一个MySQL服务器(主服务器)复制到一个或多个MySQL服务器(从服务器)。中继日志在从服务器上扮演着重要角色,下面详细解释其工作原理、作用和管理方法。

Timebro的博客 1962

mysql relay_log_info_repository和master_info_repository

relay_log_purge = 1   relay_log_recovery = 1   这两个是启用relaylog的自动修复功能,避免由于网络之类的外因造成日志损坏,主从停止。   master_info_repository = TABLE   relay_log_info_repository = TABLE   这两个参数会将master.info和relay.info保存

zhaoyangjian724的专栏 5396

MySQL的中继日志是干什么的?底层原理是什么?

需要注意的是,中继日志并不是持久化存储的,它在从数据库执行完相应的复制事件后就会被删除。如果从数据库断开连接,重新连接后可能会丢失中继日志中尚未执行的部分。为了避免数据丢失,可以使用主从数据库的日志位置(Log Position)来记录复制的位置,以便在重新连接时从正确的位置继续复制。MySQL的中继日志(Relay Log)是MySQL复制过程中使用的一种日志类型。它用于在主数据库(master)和从数据库(slave)之间传递和存储复制事件,以实现数据的复制和同步。

长风破浪会有时的博客 1824

再深入一点|binlog和relay-log到底长啥样?

上一篇mysql面试的文章之后收到不少朋友的意见,希望深入讲讲复制、日志的格式这些,今天,我们就来深挖一下mysql的复制机制到底有哪一些,以及binlog和relay-log的结构到底是什么样子的。 binlog作用 binlog的主要作用是记录数据库中表的更改,它只记录改变数据的sql,不改变数据的sql不会写入,比如select语句一般不会被记录,因为他们不会对数据产生任何改动。 用一个实际的场景看下binlog产生的过程,准备sql: create table test(text varchar(2

艾小仙的专栏 4482

MySQL主从不一致的几种故障总结分析、解决和预防

(1).主从不一致故障,从库宕机,从库启动后重复写入数据报错 解决与预防: relay_log_info_repository=TABLE (InnoDB) 参数解释说明: 若relay_log_info_repository为FILE,当设置为0,交由OS刷新磁盘,受参数sync_relay_log_info的影响,默认为10000次刷新到磁盘; 若relay_log_info_repository为TABLE,且为INNODB存储,则无论为任何值,则都每次event都会更新表。 relay_log_in

大鹏 647

mysql relay-log简介

假设当从库意外宕机后,同时从库的relay log也一起损坏了,而主库的日志已经传到了从库,只是从库还没有来得及应用这些日志,那么从库该如何处理?master.info 记录了上一次读取到master同步过来的binlog的位置,以及连接master和启动复制必须的所有信息。relay-log.info 记录了文件复制的进度,下一个事件从什么位置开始,由sql线程负责更新。relay-log 为主从配置后,从库的一个特性。默认情况这个参数默认值是 off。主库到从库的复制过程。

坚持做正确的事情! 644

详解中继日志(Relay Log)

当主服务器(Master)发生故障时,从服务器(Slave)可以通过中继日志快速恢复到故障前的状态,保证主从数据的一致性,从而降低数据丢失的风险,提高系统的可靠性。例如,原本频繁地将整个数据页落盘会带来大量的随机 IO,而有了中继日志,只需要将中继日志文件顺序落盘,就可以将随机 IO 转换为顺序 IO,提高写入效率,使数据库能够更好地处理大量的写入请求。当主服务器不可用时,从服务器可以根据中继日志中的数据变更记录,快速恢复并接管主服务器的服务,确保系统的持续运行,减少业务中断时间。

weixin_57024726的博客 1173
上一篇: 可以同时解析多个binlog吗
下一篇: MySQL通过 XtraBackup 备份恢复单个库
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值