MySQL/MariaDB 复制:我可以中断这个过程吗?

MySQL/MariaDB replication: Can I interrupt the process?

我这里有一个复制设置,其中数据从固定主机复制到笔记本。

复制分两步进行:复制中继文件,速度相当快,以及将中继日志事件应用到数据库,这往往很慢。

现在我的问题是:假设slave已经从master获取了所有的数据,但是"import process"还在运行。我可以安全地关闭从属主机并恢复复制中仍然挂起的部分而不以任何方式干扰进程吗?

所以我连接到主机,说 "stop slave",关闭笔记本,回家然后再次 "start slave" 没有连接到主机。我可以期待从实例再次恢复导入过程吗?

我已经部分找到了我的问题的答案:

MySQL documentation says:

If the slave stops before the SQL thread has executed all the fetched statements, the I/O thread has at least fetched everything so that a safe copy of the statements is stored locally in the slave's relay logs, ready for execution the next time that the slave starts. This enables the master server to purge its binary logs sooner because it no longer needs to wait for the slave to fetch their contents.

这表明完全有可能恢复导入过程(语句的执行),但是,仍然不清楚

  1. 如果我需要 start slave 在描述的事情发生之前
  2. 如果我start slave.
  3. 奴隶找不到它的主人会怎样

你的笔记本电脑永远是另一台机器的奴隶,对吗?你每天晚上都在断网?

Slave 上有两个线程。 I/O 线程负责从 Master 上的 binlog 中拉取数据,并将这些东西放入 Slave 上的 "relay-log" 中。如果(当)网络消失时,该线程会反复重试。有些设置说明最终放弃的频率和时间。考虑调整它们。

SQL 线程负责应用中继日志中的任何内容。实际上,SQL 线程可以一直 运行。没事的时候"do nothing"挺开心的

I/O 线程根据需要创建新的中继日志文件; SQL 线程在完成时删除日志。

这些年来我和几十个奴隶打过交道;我不记得有任何网络或电源故障问题。您基本上每天晚上至少会导致网络故障。如果您还关闭笔记本电脑,请优雅地进行。 InnoDB(但不​​是 MyISAM)可以很好地从电源故障中恢复,但不要碰运气。

STOP/START SLAVE 似乎没有必要,但不会造成伤害。事情应该 "resume" 并最终 "catch up".

您的引文谈到了 Master 清除二进制日志。那么,这里有一个问题。 Master 不会跟踪 Slave 的存在,因此它无法判断您的 Slave 未连接的时间是否比 Master 保留 binlog 的时间长。

参见 expires_logs_days。建议您将其设置为高于您可能休假的天数。

我对 Slaves 的体验早于 GTID、Galera 等;你会用这样的吗?