【MySQL知识点问答题】高级复制技术

目录

[1. 相对于坐标位置,使用 GTID 配置复制时都具备哪些优势?](#1. 相对于坐标位置,使用 GTID 配置复制时都具备哪些优势?)

[2. 在对复制应用过滤规则时,给出你所知道的方法并说明各自的适用场合。](#2. 在对复制应用过滤规则时,给出你所知道的方法并说明各自的适用场合。)

[3. 二进制日志有哪几种记录格式,请详细加以说明。](#3. 二进制日志有哪几种记录格式,请详细加以说明。)

[4. 请说明在复制拓扑中,中继日志集和从属服务器状态日志的作用。](#4. 请说明在复制拓扑中,中继日志集和从属服务器状态日志的作用。)

[5.使用日志坐标进行故障转移与使用 GTID 进行故障转移时各自有哪些注意事项?](#5.使用日志坐标进行故障转移与使用 GTID 进行故障转移时各自有哪些注意事项?)

总结


在 MySQL 高可用架构中,复制技术是核心组成部分。通过复制,我们可以实现数据冗余、负载分担以及快速故障恢复。

1. 相对于坐标位置,使用 GTID 配置复制时都具备哪些优势?

GTID(全局事务标识符)是 MySQL 用于标识复制中每个事务的唯一标识符。

  • 格式<source-uuid>:<transaction-id>
    例如:0ed18583-47fd-11e2-92f3-0019b944b7f7:338

  • 优势

    • 每个事务的日志 ID 及其来源服务器都被唯一记录。

    • 当主服务器发生故障时,从服务器可以精准识别每个事务,确保数据一致性和完整性。

    • 对复杂复制拓扑(如多级或多源复制)尤其有效,极大降低故障恢复的风险。

相比传统的基于日志坐标的复制,GTID 使复制管理更加简洁和可靠。

2. 在对复制应用过滤规则时,给出你所知道的方法并说明各自的适用场合。

  • 主服务器过滤 :使用 binlog-* 系列过滤器控制哪些数据库和表写入二进制日志。
  • 从属服务器过滤 :使用 replicate-* 系列过滤器控制从服务器从二进制日志中读取哪些事件。

应用场景

  • 当不同服务器承担不同业务或分析任务时,可以只复制需要的数据,降低网络和存储压力。

3. 二进制日志有哪几种记录格式,请详细加以说明。

  1. 基于行(ROW)

    • 记录每一行的数据更改,保证事务可精确重放。

    • 默认格式,适合高一致性要求场景。

  2. 基于语句(STATEMENT)

    • 记录实际 SQL 语句,日志文件小,可用于审计。

    • 对非确定性语句(如 UUID(), USER())可能无法正确重放。

  3. 混合模式(MIXED)

    • 默认使用基于语句的日志,当语句不确定时自动切换到基于行的日志。

    • 提供灵活性,兼顾性能和一致性。

4. 请说明在复制拓扑中,中继日志集和从属服务器状态日志的作用。

  • 中继日志

    • 保存从主服务器接收的二进制日志,格式与二进制日志相同。

    • 服务器自动管理,重放完成后自动删除。

  • 从属服务器状态日志

    • 记录从服务器如何连接主服务器,以及最新复制的日志坐标信息。

    • 保证故障恢复或重启时复制进度的正确性。

5.使用日志坐标进行故障转移与使用 GTID 进行故障转移时各自有哪些注意事项?

  1. 基于日志坐标的故障转移
  • 注意事项

    • 如果新主服务器位于某个从服务器之后,从服务器可能重复应用事件。

    • 如果新主服务器位于某个从服务器之前,从服务器可能跳过事件。

  • 风险:需要人工精确计算和调整,易出现数据不一致。

  1. 基于 GTID 的故障转移
  • 优势:避免同一服务器产生的事件重复应用。

  • 注意事项

    • 在复杂拓扑(多源或循环复制)中,GTID 不能自动解决不同服务器间的事务冲突。

    • 故障恢复后,应用程序必须谨慎检查可能的冲突操作。

总结来看,GTID 提供了更自动化和精确的复制管理方式,但在复杂环境中仍需结合业务逻辑和监控策略。

总结

MySQL 的复制技术已经从传统的日志坐标复制发展到 GTID 复制,结合过滤规则和日志管理,可以实现高可用、可扩展的数据架构:

  • GTID:确保事务唯一性,简化故障恢复。

  • 复制过滤规则:精细控制复制数据范围,提升效率。

  • 二进制日志格式:ROW、STATEMENT、MIXED 满足不同一致性和性能需求。

  • 中继日志和状态日志:保证复制进度和数据一致性。

  • 故障转移策略:GTID 更安全,但仍需关注跨服务器冲突。

相关推荐
weelinking1 小时前
【2026】08_Claude与版本控制:Git协作技巧
数据库·人工智能·git·python·数据挖掘·交互·cloudera
黄焖鸡能干四碗5 小时前
固定资产管理系统建设方案和源码(Java源码)
大数据·数据库·人工智能·物联网·区块链
JoneBB6 小时前
ABAP Webservice连接
运维·开发语言·数据库·学习
解决问题no解决代码问题6 小时前
从乱码到脱敏导出:TiDB CSV 导出实战全指南
数据库
未若君雅裁6 小时前
MySQL高可用与扩展-主从复制读写分离分库分表
java·数据库·mysql
2401_867623986 小时前
CSS Flex布局中如何设置子元素间距_掌握gap属性的现代用法
jvm·数据库·python
月落归舟7 小时前
一篇文章了解Redis内存淘汰机制与过期Key清理
数据库·redis·mybatis
phltxy7 小时前
Redis 事务
数据库·redis·缓存
康乾隆7 小时前
SQL Server Always On 重新添加从库步骤
数据库·sqlserver
环流_8 小时前
redis核心数据类型在java中的操作
java·数据库·redis