目录
[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. 二进制日志有哪几种记录格式,请详细加以说明。
-
基于行(ROW)
-
记录每一行的数据更改,保证事务可精确重放。
-
默认格式,适合高一致性要求场景。
-
-
基于语句(STATEMENT)
-
记录实际 SQL 语句,日志文件小,可用于审计。
-
对非确定性语句(如
UUID(),USER())可能无法正确重放。
-
-
混合模式(MIXED)
-
默认使用基于语句的日志,当语句不确定时自动切换到基于行的日志。
-
提供灵活性,兼顾性能和一致性。
-
4. 请说明在复制拓扑中,中继日志集和从属服务器状态日志的作用。
-
中继日志:
-
保存从主服务器接收的二进制日志,格式与二进制日志相同。
-
服务器自动管理,重放完成后自动删除。
-
-
从属服务器状态日志:
-
记录从服务器如何连接主服务器,以及最新复制的日志坐标信息。
-
保证故障恢复或重启时复制进度的正确性。
-
5.使用日志坐标进行故障转移与使用 GTID 进行故障转移时各自有哪些注意事项?
- 基于日志坐标的故障转移
-
注意事项:
-
如果新主服务器位于某个从服务器之后,从服务器可能重复应用事件。
-
如果新主服务器位于某个从服务器之前,从服务器可能跳过事件。
-
-
风险:需要人工精确计算和调整,易出现数据不一致。
- 基于 GTID 的故障转移
-
优势:避免同一服务器产生的事件重复应用。
-
注意事项:
-
在复杂拓扑(多源或循环复制)中,GTID 不能自动解决不同服务器间的事务冲突。
-
故障恢复后,应用程序必须谨慎检查可能的冲突操作。
-
总结来看,GTID 提供了更自动化和精确的复制管理方式,但在复杂环境中仍需结合业务逻辑和监控策略。
总结
MySQL 的复制技术已经从传统的日志坐标复制发展到 GTID 复制,结合过滤规则和日志管理,可以实现高可用、可扩展的数据架构:
-
GTID:确保事务唯一性,简化故障恢复。
-
复制过滤规则:精细控制复制数据范围,提升效率。
-
二进制日志格式:ROW、STATEMENT、MIXED 满足不同一致性和性能需求。
-
中继日志和状态日志:保证复制进度和数据一致性。
-
故障转移策略:GTID 更安全,但仍需关注跨服务器冲突。