MST

星途 面试题库

面试题:MariaDB 主从复制延迟场景下的数据一致性恢复策略

假设 MariaDB 主从复制出现了延迟情况,且在此期间主库数据有频繁更新,从库追赶上主库后,如何确保数据一致性?详细描述恢复数据一致性的具体步骤和可能用到的工具或命令。
33.3万 热度难度
数据库MariaDB

知识考点

AI 面试

面试题答案

一键面试
  1. 步骤
    • 步骤一:停止从库复制 在从库上执行以下命令停止复制:
STOP SLAVE;
  • 步骤二:记录主库状态 在主库上执行 SHOW MASTER STATUS; 命令,记录下 FilePosition 的值,这两个值标识了主库当前的二进制日志位置。
  • 步骤三:确保主库数据稳定 为了确保主库数据不再变化(如果可以暂停业务写入的话),可以使用 FLUSH TABLES WITH READ LOCK; 命令,这会锁定所有表,阻止写入操作,但仍允许读取。不过要注意,此操作会阻塞主库的写操作,所以执行时间应尽量短。
  • 步骤四:获取主库二进制日志 从主库导出二进制日志文件。例如,如果主库的二进制日志文件名为 mysql-bin.000001,位置为 1234,可以使用 mysqlbinlog 工具导出相关日志:
mysqlbinlog --start-position=1234 /var/lib/mysql/mysql - bin.000001 > master - log.sql
  • 步骤五:传输日志文件到从库 将导出的 master - log.sql 文件通过安全的方式(如 scp 等工具)传输到从库。
  • 步骤六:在从库应用日志 在从库上,先确保复制停止(如果之前停止后未再次启动),然后使用 mysql 命令应用日志:
mysql < master - log.sql
  • 步骤七:重新配置从库复制 在从库上根据主库记录的 FilePosition 值重新配置复制。执行如下命令:
CHANGE MASTER TO
    MASTER_HOST='主库IP',
    MASTER_USER='复制用户',
    MASTER_PASSWORD='复制用户密码',
    MASTER_LOG_FILE='记录的File值',
    MASTER_LOG_POS=记录的Position值;
  • 步骤八:启动从库复制 在从库上执行 START SLAVE; 命令启动复制。
  • 步骤九:检查复制状态 执行 SHOW SLAVE STATUS \G; 命令,确保 Slave_IO_RunningSlave_SQL_Running 都为 Yes,且 Seconds_Behind_Master0,表明从库已与主库数据一致且复制正常运行。
  1. 可能用到的工具或命令
    • mysql命令:用于执行SQL语句,如停止/启动从库复制、配置从库复制等操作。
    • mysqlbinlog:用于解析和导出主库的二进制日志。
    • scp:用于在主库和从库之间安全传输二进制日志文件。