galera集群有多同步
How synchronous is galera cluster
其实我有几个问题。
1) 当我使用 Mysql 连接器从我的应用程序调用插入时,它由其中一个主节点应答,但该主节点是否在插入应用于所有节点之前等待,然后回复客户端。如果它在回复客户端之前等待所有节点插入,那么 wsrep_sst_method=xtrabackup 有什么帮助,它会立即回复客户端还是没有区别。也许我理解错了这个变量。
2) 读呢,我猜它只是由其中一个主节点回答。如果 wsrep_sync_wait 仅在这种情况下设置,它会等待所有节点的回复。
谢谢
"How synchronous"?足够同步,但有一个例外:"Critical read".
"fix"是在读,不是写。
当写时,重量级检查在COMMIT
期间完成。此时,联系所有其他节点以查看是否"this transaction will eventually commit successfully"。也就是说,其他节点说 "yes" 但实际上并没有完成足以让后续 SELECT
看到写入结果的工作。这里的保证是,cluster 处于一致状态并将保持这种状态,即使任何一个节点死亡。
例如,"Critical read" 是当用户发布内容时,立即读取数据库并希望看到发布内容。但是,如果读取 (SELECT
) 命中了一个不同的节点,Galera 的 "almost" 同步特性可能没有将数据提交给读取节点。数据在那里,会成功写入磁盘,但可能还没有。解决方法是在读取 时使用 wsrep_sync_wait
以确保在 SELECT
之前赶上复制。 写入.
时不采取任何行动
(我看不出 wsrep_sst_method=xtrabackup
的相关性。这与从死节点中恢复有关。)
其实我有几个问题。
1) 当我使用 Mysql 连接器从我的应用程序调用插入时,它由其中一个主节点应答,但该主节点是否在插入应用于所有节点之前等待,然后回复客户端。如果它在回复客户端之前等待所有节点插入,那么 wsrep_sst_method=xtrabackup 有什么帮助,它会立即回复客户端还是没有区别。也许我理解错了这个变量。
2) 读呢,我猜它只是由其中一个主节点回答。如果 wsrep_sync_wait 仅在这种情况下设置,它会等待所有节点的回复。 谢谢
"How synchronous"?足够同步,但有一个例外:"Critical read".
"fix"是在读,不是写。
当写时,重量级检查在
COMMIT
期间完成。此时,联系所有其他节点以查看是否"this transaction will eventually commit successfully"。也就是说,其他节点说 "yes" 但实际上并没有完成足以让后续SELECT
看到写入结果的工作。这里的保证是,cluster 处于一致状态并将保持这种状态,即使任何一个节点死亡。
例如,"Critical read" 是当用户发布内容时,立即读取数据库并希望看到发布内容。但是,如果读取 (
SELECT
) 命中了一个不同的节点,Galera 的 "almost" 同步特性可能没有将数据提交给读取节点。数据在那里,会成功写入磁盘,但可能还没有。解决方法是在读取 时使用wsrep_sync_wait
以确保在SELECT
之前赶上复制。 写入. 时不采取任何行动
(我看不出 wsrep_sst_method=xtrabackup
的相关性。这与从死节点中恢复有关。)