我老实说尝试过 left right 仍然发现我的镜像服务器设置为复制从属设备仍然落后。我的应用程序的用户群不断增长,现在我已经达到了无法保持“关闭”的程度。到“重新同步”数据库(甚至在周末都没有。)

无论如何,我的问题是:是否有任何合理的,价格合理的替代binlog复制?我有两个服务器,所以不会考虑购买第三个用于负载平衡,除非它是唯一的选择。

干杯,

/ MP

有帮助吗?

解决方案

您的主服务器并行执行,您的从服务器串行执行。如果你的主人可以在1小时内处理1.5小时的插入/更新/执行,你的奴隶就会落后。

如果您无法找到提高从属设备写入性能的方法(更多内存,更快的磁盘,删除不必要的索引),那么您的应用程序架构就会受到限制。最终,您将无法实时执行更改,因为主服务器可以并行执行更改。

许多大型网站都会对其数据库进行分片:考虑将主服务器/从服务器拆分为多个主服务器+从服务器集群。然后在这些集群中拆分客户群。当奴隶开始落后时,是时候添加另一个集群了。

它并不便宜,但除非您能找到一种方法使并行执行binlog复制执行语句,否则您可能找不到更好的方法。

更新(2017):MySQL现在支持并行从属工作者线程。仍然有许多变量会导致从属设备落后,但是从设备不再需要按顺序写入。选择保留并行从属线程的提交顺序是一个重要的选项,可以查看从属设备在任何时间点的确切状态是否至关重要。

其他提示

你试过了吗? 1)SET innodb_flush_log_at_trx_commit = 0 2)SET sync_binlog = 0

如果您遇到服务器故障,两者都有助于加快您的Slave的风险。

向奴隶添加内存可能会有所帮助。我们从32到128兆,并且滞后或多或少消失了。但它既不便宜也不适合所有情况。

购买第三台服务器可能没那么多,但你很可能只会得到另一个落后的奴隶。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top