主库的binlog被删掉了,从库是否可以用对应的Relay_Log_File同步?

  • 回答 (2)
  • 关注 (0)
  • 查看 (94)

(1)从库因为Waiting for Slave Workers to free pending events,Seconds_Behind_Master一直增加

(2)主库设置了expire_logs_days,所以从库的Relay_Master_Log_File被删掉了

(3)问题:是否可以用Relay_Master_Log_File对应的Relay_Log_File进行同步呢?

用户6940558用户6940558修改于
朱明豪从事Oracle、MySQL等数据库工作10年,擅长性能诊断优化、故障处理、SQL优化、业务架构设计、技术培训等。回答于
推荐

1.Waiting for Slave Workers to free pending events,

可能是出现大事务,可能参数slave_pending_jobs_size_max过小

2.“主库设置了expire_logs_days,所以从库的Relay_Master_Log_File被删掉了”

master的binlog被删除了,但是binlog文件应该已经传输到slave了。另外如果binlog未传输到slave,master的binlog不会被删除。

3.“问题:是否可以用Relay_Master_Log_File对应的Relay_Log_File进行同步呢?”

slave的SQL_THREAD线程可以自动识别Relay_Log_File,并重放relaylog的。不过要等你的大事务结束之后。

FesonX爬虫&数据分析爱好者 fesonx@foxmail.com回答于
推荐

binlog 不存在时

Relay_Log_File - 记录当前线程正在读和执行的中继日志名称

Relay_Log_Pos - 当前中继(Relay)日志文件中SQL线程已读取并执行的位置。

利用这两个信息,确实可以继续往下执行同步,但是前提是,后面的 binlog 还在。

这个文件执行完毕后,还是需要重新配置主从节点,才能继续同步

binlog 存在时

Relay_Master_Log_File - Master binlog 的名称,该文件包含由 Slave SQL线程执行的最新事件。就是说从这里可以知道主库目前对应的 binlog 名称

主从同步利用的是从库跟踪主库 binlog 位置,如果这个位置之前的已经同步,你可以利用 Relay_Master_Log_File 得到当前 Master 的 binlog 名称,以及 Exec_Master_Log_Pos 得到具体执行到的位置,重新配置主从节点,再继续主从同步

CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_USER='root', MASTER_PASSWORD='root', MASTER_LOG_FILE='replicas-mysql-bin.000003', MASTER_LOG_POS=154;

所属标签

可能回答问题的人

  • 应用案例分享

    1 粉丝490 提问6 回答
  • o o

    4 粉丝495 提问5 回答
  • 找虫虫

    5 粉丝0 提问5 回答
  • uncle_light

    5 粉丝518 提问4 回答

扫码关注云+社区

领取腾讯云代金券