目前我正在研究 Percona 的 xtrabackup。在“在复制环境中进行备份”段落中的手册中,它说--safe-slave-backup
始终建议使用该选项,我理解其背后的原因。
我现在只是想知道,当我不使用此选项时,结果是否真的有所不同。在备份上应用日志后,我不明白为什么使用或不使用此选项进行的备份会有区别。
我在问,因为在我们的生产环境中我们不使用这个选项。备份在午夜运行,但今晚失败了。备份是在从服务器上进行的,我对现在停止 SQL 线程来进行备份有一种不好的感觉。
目前我正在研究 Percona 的 xtrabackup。在“在复制环境中进行备份”段落中的手册中,它说--safe-slave-backup
始终建议使用该选项,我理解其背后的原因。
我现在只是想知道,当我不使用此选项时,结果是否真的有所不同。在备份上应用日志后,我不明白为什么使用或不使用此选项进行的备份会有区别。
我在问,因为在我们的生产环境中我们不使用这个选项。备份在午夜运行,但今晚失败了。备份是在从服务器上进行的,我对现在停止 SQL 线程来进行备份有一种不好的感觉。
正如手册所说:
这样做的原因是因为 Percona Xtrabackup 基本上模仿了服务器的受控崩溃/关闭,而临时表会使从服务器不一致,正如您在 MySQL 手册上看到的那样。这本身不是一致性问题(buckups 将与给定的时间戳/二进制日志一致),但它可能会使从服务器在与主服务器重新同步时丢失一些事务(典型用法 - 克隆一个从服务器以创建另一个从服务器)。
如果您使用基于行的复制,则不会发生这种情况,因此我建议您使用它。但有些人不能或不想使用它,所以这是 100% 确保新奴隶工作良好的方法。在典型的复制场景中,使用
--safe-slave-backup
可能不会有太大问题,假设没有创建很多临时表,但这是解决方法(通常添加这些选项是因为过去有人遇到过问题)。我建议您始终使用
--slave-info
,除非您使用 GTID 复制。正如自己的手册所说,使用
pt-table-checksum
来测试备份是一个很好的建议。