复制位点与延迟与读写一致性

共 19 题
#

1. MySQL 中 Seconds_Behind_Master 的局限?

A 当从库 SQL 线程空闲时该值会变为 0,即使从库实际仍有未追平的数据(主库暂时无新写入时) ✓ 正确答案
B 它能精确反映从库落后主库的绝对字节数
C 该指标不依赖主从时钟,因此时钟不同步不影响其准确性
D 在多线程复制下它能精确反映每个 worker 的独立进度
#

2. PostgreSQL 中 replication lag 的监控,pg_stat_replication?

A 它通过比较主从时钟来计算复制延迟,所以时钟不同步会导致结果偏差
B 其中 replay_lag 反映的是从库到主库的网络往返耗时
C 该视图只能显示同步复制的从库状态
D write_lag、flush_lag、replay_lag 分别反映 WAL 在从库的写入、刷盘、回放三个阶段的延迟 ✓ 正确答案
#

3. 主从复制的实现,WAL 归档(PG)、binlog 复制(MySQL)?

A MySQL 的 binlog 是物理日志,记录页面级别的变更
B MySQL 复制只支持基于语句的复制,不支持行级复制
C PostgreSQL 的 WAL 归档和流复制是同一回事,没有区别
D PostgreSQL 的 WAL 是物理日志,从库通过流复制协议实时接收并重放 ✓ 正确答案
#

4. 复制延迟(Replication Lag)的成因,大事务、长 DDL、网络?

A 复制延迟只会由网络问题引起,与主库写入量无关
B 长 DDL 在主库执行后会立即完成,不会影响从库
C 主库并发写入越高,从库回放越快,永远不会出现延迟
D 大事务在从库需要逐行回放,耗时长,是导致回放延迟的常见原因 ✓ 正确答案
#

5. 逻辑复制槽(Replication Slot)的作用与失效风险?

A 复制槽在主库上保留下游所需的 WAL,防止被提前回收,但可能造成 WAL 无限堆积 ✓ 正确答案
B 复制槽用于加速从库的查询性能
C 复制槽一旦创建就永久生效,不会带来任何磁盘风险
D 复制槽只在逻辑复制中使用,物理复制不需要
#

6. 半同步复制在从库不可用时的降级(rpl_semi_sync_master_timeout)与数据丢失窗口

A 半同步复制保证事务提交后绝不丢失,RPO 恒为 0
B 当从库应答超时,主库等待 rpl_semi_sync_master_timeout 后降级为异步复制继续服务,期间存在数据丢失窗口 ✓ 正确答案
C rpl_semi_sync_master_timeout 设置越大,数据丢失窗口越小
D 半同步复制从库故障时主库会直接停止服务,不会降级
#

7. GTID 与 binlog 位点(file:pos)在故障恢复上有何本质差异?为什么 GTID 模式能避免找错位点或重复执行?

A 位点复制基于全局唯一事务标识,能自动对齐已执行事务
B GTID 模式从库通过已执行事务集合自动跳过重复事务,避免找错位点或重复执行 ✓ 正确答案
C GTID 与位点复制在故障恢复上没有任何区别
D 位点复制比 GTID 更安全,因为位点永不变化
#

8. MySQL 并行复制(MTS)如何通过事务依赖分析(writeset)提升从库回放吞吐?相比单线程 SQL 线程延迟降低的原理是什么?

A 基于 writeset 的并行复制通过判断事务写集合是否相交,让无冲突事务并发回放以提高吞吐 ✓ 正确答案
B 并行复制只支持按数据库并行,无法在单个库内并行
C 并行复制会降低从库吞吐,通常不推荐开启
D 并行复制没有依赖分析,任何事务都能随意并行
#

9. 会话亲和性(Session Affinity),同一会话路由同一从库?

A 会话亲和性把同一会话的请求固定路由到同一从库,避免会话内读到不一致数据 ✓ 正确答案
B 会话亲和性要求每个请求都轮询到不同的从库
C 会话亲和性只适用于同步复制,不适用于异步复制
D 会话亲和性能完全消除跨会话的复制延迟
#

10. 复制延迟超过业务容忍阈值时的路由降级(读主)与告警设计?

A 延迟超标时应把该从库继续保留在路由池中,以保证读扩展性
B 读主会显著提升从库压力,应尽量避免
C 延迟超过阈值时把高风险读请求降级读主,并配合分级告警 ✓ 正确答案
D 告警只需记录一次,不需要分级
#

11. 强制读主(Read Master)的应用,支付、库存强一致?

A 强制读主用于所有读请求,以保证最终一致
B 强制读主会降低一致性,只在低并发场景使用
C 支付、库存等强一致场景强制读主,避免读到从库的过期数据导致超卖或重复操作 ✓ 正确答案
D 强制读主与读从库没有区别,只是命名不同
#

12. 读写分离(Read-Write Splitting)的路由策略?

A 事务内的读操作也可以路由到从库,不影响一致性
B 读写分离不需要任何路由策略,主从自动分配
C 写操作路由到主库,读操作按类型路由到从库;事务内和强一致读应走主库 ✓ 正确答案
D 所有读请求都必须走主库,否则无法保证性能
#

13. 读写分离的延迟应对,等 GTID、读已提交延迟窗口?

A 等 GTID 会降低从库的复制速度,通常不推荐
B 延迟窗口读要求所有读都必须等待窗口结束,性能极差
C 等 GTID 通过等待指定事务在从库执行完毕,保证读己之所写 ✓ 正确答案
D 读写分离无法应对复制延迟,只能读主
#

14. 半同步复制,after_commit 与 after_sync 的区别?

A 两者没有区别,只是叫法不同
B after_sync 模式在主库提交事务之前等待从库 ACK,消除了主库崩溃时丢失已确认事务的窗口 ✓ 正确答案
C after_commit 模式延迟更低,但数据丢失窗口更大
D after_sync 只适用于异步复制,不适用于半同步
#

15. 复制中断的常见原因与恢复(SQL 线程报错、跳过事务的风险、GTID 模式下的处理)

A 跳过事务可能导致主从不一致,应确认事务可安全忽略后再处理 ✓ 正确答案
B 遇到 SQL 线程报错应无条件跳过事务,越早跳过越好
C GTID 模式下不需要核对已执行事务,可直接重连
D 复制中断只能通过重建从库解决,没有其他方式
#

16. Seconds_Behind_Master 在从库空闲或时钟不同步时为何不准?pt-heartbeat 如何用心跳表实现精确延迟测量?

A pt-heartbeat 通过比较主从时钟计算延迟,时钟不同步时不准
B pt-heartbeat 在主库写入带时间戳的心跳行,从库读取该行与本地时间比较,从而精确测得复制延迟 ✓ 正确答案
C Seconds_Behind_Master 在从库空闲时依然精确
D pt-heartbeat 会干扰业务数据,不适合生产环境
#

17. 级联复制(A→B→C)为何会放大延迟?中间节点故障或重启对下游复制位点与数据追平的影响是什么?

A 级联复制中下游从库延迟会逐级叠加放大,且中间节点故障会同时影响下游所有从库 ✓ 正确答案
B 级联复制不会放大延迟,因为每级复制互不影响
C 级联复制主要用于降低读取延迟
D 中间节点重启不会影响下游复制位点
#

18. 主从数据一致性校验(pt-table-checksum 等)如何发现复制漂移并修复?

A pt-table-checksum 按主键切分块计算校验和并对比,定位差异后可用 pt-table-sync 以主库为基准修复 ✓ 正确答案
B pt-table-checksum 直接修改从库数据来修复漂移
C 复制漂移只能通过重建从库解决,无法校验
D pt-table-checksum 会全表加锁,不适用于生产
#

19. 在从库执行备份(逻辑/物理)的 IO 影响与调度

A 从库备份不会影响从库的复制回放
B 备份只能在主库执行,从库无法备份
C 从库备份会与复制回放争抢 IO,应错峰调度并适当限速 ✓ 正确答案
D 物理备份不会占额外空间,总比逻辑备份好