这个问题不是关于如何解决复制问题,其目的是查找复制速度慢引起的错误。出于性能考虑,我们不希望所有查询都是同步的,而只是我们确定为关键读取的查询。
我们的 galera 集群有时会出现同步问题。例如,我们的 Web 应用程序在写入数据后执行重定向,但在下一页上显示过时的状态。在我们的开发环境上不存在这些问题。在具有一定服务器负载的生产环境中,如果我们读取几毫秒前写入的数据,则另一个节点有时不会同步。
为了解决这个问题,我们使用节点固定进行关键读取,从之前写入的同一节点读取数据,并且我们正在尝试使用 SET SESSION wsrep-sync-wait=6;
进行插入/更新/删除如所描述的here 避免减少这种行为(现在使用像 rick-james 这样的位“1”)。
如何测试复制速度慢引起的错误?
我们的想法是模拟非常慢的同步来测试我们的应用程序的关键读取行为。是否有一些配置选项可以让 galera 集群在重负载下运行? Galera有一个内置的flow control减慢速度,但我找不到可靠的方法来强制集群进行流量控制。该解决方案不必单独依赖 MySQL,缓慢的虚拟卷与“innodb_flush_method”之类的东西相结合也可能会有所帮助。
(更新以希望改善问题)
最佳答案
您需要包含 1
,因为您正在阅读。
SET SESSION wsrep_sync_wait=1; -- or any odd number
SELECT ... ; -- this will wait if necessary
SET SESSION wsrep_sync_wait=0; -- (optional); to avoid slowing down subsequent SQL
关于mysql - 如何使用 galera 集群测试关键读取和慢速同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53477322/