其实这里有几个问题。
1)当我使用Mysql连接器从我的应用程序调用insert时,它由一个主节点应答,但该主节点是否在所有节点上应用插入之前等待,然后回复客户端。如果它在回复客户端之前等待所有节点插入,那么wsrep_sst_method = xtrabackup如何帮助,它会立即回复客户端还是没有区别。也许我理解这个变量是错误的。
2)读取怎么样,我猜它只是由一个主节点回答。如果仅在该情况下设置wsrep_sync_wait,则它等待来自所有节点的回复。 感谢
答案 0 :(得分:3)
“如何同步”?同步足够,但有一个例外:“严格阅读”。
“修复”是在阅读期间,而不是写作。
当写时,重量级检查在COMMIT
期间完成。此时,将联系所有其他节点以查看“此事务将最终成功提交”。也就是说,其他节点说“是”但实际上并没有完成足够的工作以使后续的SELECT
看到写入的结果。这里的保证是,集群处于一致状态,即使任何一个节点死亡,也会保持这种状态。
“严重读取”是指,例如,当用户发布内容时,立即读取数据库并期望看到发布。但是,如果读取(SELECT
)遇到不同的节点,则Galera的“几乎”同步性质可能没有将数据提交给读取节点。数据 ,将成功写入磁盘,但尚未。解决方法是在阅读时使用wsrep_sync_wait
,以确保在SELECT
之前捕获复制。 写时不采取任何措施。
(我没有看到wsrep_sst_method=xtrabackup
的相关性。这与从死节点恢复有关。)