我的 mysql_slave 陷入了一个错误,并累积到 200,000+ Seconds_Behind_Master。我应该重建它并从头开始,还是让它自己赶上?
恕我直言
让它赶上。
该的Seconds_Behind_Master读书不是什么我靠,看是否赶上是可能的或值得的。不要害怕报告的数字。
您必须查看服务器的expire_logs_days设置。如果您的从站远远落后于二进制日志文件已被删除,那么您需要重新映像。
Seconds_Behind_Master真是一把双刃剑
当Seconds_Behind_Master
显着增加时,关于 的输出有两种情况需要考虑SHOW SLAVE STATUS\G
:
如果Relay_Log_Space
低于 1G,这表明 Slave 在通过 IO 线程读取其 Master 的 binlog 条目时出现问题。记录的时间戳是中继日志似乎是倾斜的,因为 Master 可能已经快速记录了它的 binlog,但是 Slave 的当前时间与其中继日志中的时间戳之间的差距增加了。寻找这样的事情:
如果Relay_Log_Space
启动超过2G,立即查看Slave_IO_Running
和Slave_SQL_Running
。很有可能,复制被破坏了。在大多数情况下,如果Replication中断,SQL Thread就死了,IO Thread保持运行(Slave_IO_Running
是Yes,Slave_SQL_Running
是No),因为IO Thread还在运行,它可以捕捉到Master发送到Slave中继的新SQL命令日志。那可以成长。如果任其发展,它可能会增长到填满磁盘的程度。如果您的警报方案只是检查是否Seconds_Behind_Master
为 NULL,这应该会提示您快速解决 SQL 错误。如果Seconds_Behind_Master
只是数字增加,这将由于一系列 DML 语句在 Master 上并行运行良好,然后在 Slave 上序列化(就像在场景 #1 中一样)而发生。本质上,来自 IO 线程的 SQL 语句的收集速度比 SQL 线程处理它们的速度要快。
RESET MASTER;
上关闭mysql,在Master上,rsync /var/lib/mysql from Master to Slave,在Slave上启动mysql,设置复制这是我的帖子,可能有助于这些步骤
归档时间: |
|
查看次数: |
14236 次 |
最近记录: |