我一直在试验 mysql innodb 集群。我遇到的一个错误我不知道如何补救,或者为什么它会导致任何希望赶上主人的奴隶永久死亡 - 让我解释一下。
创建 3 个 mysql 实例。使用 innodb 集群实用程序将它们组合成一个集群。您可以使用 AdminAPI 来确保集群正常。(使用单主模式,所以只有 1 个作者)
在主 mysql 中,使用 mysql.exe 恢复任何具有 sql_log_bin = 0 的表的转储;
您会注意到这会导致该表不复制到其他数据库实例。现在,如果您放下桌子,其他奴隶就会死亡,并且永远无法赶上主人。
您甚至可以从头开始创建 mysql 实例并将其指向 master,它永远不会赶上。它会说正在恢复,然后就会失败。
在这种情况下你如何修复?而且,在您执行此操作后,即使从头开始也无法同步从站到底是怎么回事?
问题是您拥有无法复制的数据块。当你把它放在 master 上并设置 gtid purged 变量时,它基本上说:我有这个数据,但我不能给你。
您在这里可以做的是使用此转储来配置从属/辅助服务器。所以你可以在 master 中执行这个更新,但是当你在它加入之前添加一个新成员时,你也必须在那里执行转储。然后他们都可以说:我们拥有无法复制的数据块,所以我们是同步的。然后 joiner 可以从 primary 中获取它缺少的任何内容。