MST

星途 面试题库

面试题:MariaDB基于GTID复制配置完成后,如何排查从库同步延迟问题?

假设在MariaDB基于GTID的复制环境搭建好后,发现从库出现同步延迟现象。请阐述排查此问题的详细思路及具体方法,包括涉及到的系统表、命令以及相关参数的检查。
30.5万 热度难度
数据库MariaDB

知识考点

AI 面试

面试题答案

一键面试

1. 检查网络状况

  • 思路:网络延迟或不稳定可能导致主从复制延迟。
  • 方法
    • 使用 ping 命令检查主从服务器之间的网络连通性和延迟。例如:ping 主库IP,查看返回的延迟时间和丢包率。
    • 使用 traceroute 命令查看网络路由路径,检查是否存在网络节点故障。例如:traceroute 主库IP

2. 查看主库状态

  • 思路:主库的性能和配置可能影响从库同步。
  • 方法
    • 在主库执行 SHOW MASTER STATUS\G 命令,重点关注 Seconds_Behind_Master 参数(如果该参数存在且不为0,说明主从存在延迟)。
    • 检查主库的负载情况,使用 top 命令查看CPU、内存、I/O等资源的使用情况。若负载过高,可能影响主库向从库发送二进制日志。

3. 查看从库状态

  • 思路:从库自身的状态和配置是排查重点。
  • 方法
    • 在从库执行 SHOW SLAVE STATUS\G 命令,关注以下关键参数:
      • Seconds_Behind_Master:直观显示从库落后主库的秒数。若数值较大,表明存在延迟。
      • Slave_IO_RunningSlave_SQL_Running:这两个参数必须都为 Yes,若其中一个为 No,说明复制出现问题。如果 Slave_IO_RunningNo,可能是网络问题或主库配置问题导致从库无法连接主库获取日志;如果 Slave_SQL_RunningNo,通常是从库在执行中继日志时出错。
      • Last_IO_ErrnoLast_IO_Error:若 Slave_IO_RunningNo,这两个参数记录了IO线程的错误信息。
      • Last_SQL_ErrnoLast_SQL_Error:若 Slave_SQL_RunningNo,这两个参数记录了SQL线程的错误信息。
    • 查看从库的负载情况,同样使用 top 命令,若从库负载过高,会影响SQL线程执行中继日志的速度。

4. 检查复制过滤配置

  • 思路:不当的复制过滤配置可能导致部分数据不同步,看似出现延迟。
  • 方法
    • 在从库执行 SHOW SLAVE STATUS\G 查看 Replicate_Do_DBReplicate_Ignore_DBReplicate_Do_TableReplicate_Ignore_Table 等参数,确认是否配置了过滤规则导致部分数据未同步。

5. 检查GTID相关配置

  • 思路:GTID配置错误可能导致主从复制异常。
  • 方法
    • 确认主从库的 gtid_mode 参数都为 ON,且 enforce_gtid_consistency 参数都为 ON
    • 检查主从库的 gtid_domain_id 是否一致,若不一致可能导致复制问题。

6. 检查日志相关配置

  • 思路:日志相关配置影响主从复制数据传输和应用。
  • 方法
    • 在主库,确保 log-bin 参数已正确配置且二进制日志功能开启。检查 binlog_format 参数,确保其为 ROWMIXED 模式(基于GTID复制推荐 ROW 模式)。
    • 在从库,确保 relay_log 参数正确配置,中继日志能正常使用。

7. 检查系统表

  • 思路:系统表记录了复制相关的关键信息。
  • 方法
    • 查看 mysql.slave_master_info 表,该表存储了从库连接主库的信息,如主库的IP、端口、账号密码、日志文件名和位置等。确保这些信息正确,若信息错误可能导致连接主库失败,进而出现同步延迟假象。
    • 查看 mysql.slave_relay_log_info 表,该表记录了从库中继日志的相关信息,如当前正在使用的中继日志文件名和位置等。若该表信息异常,可能影响从库SQL线程对中继日志的应用。