老实说,我左右尝试过 , 但仍然发现我的镜像服务器设置为复制从属服务器仍然落后。我的应用程序的用户群不断增长,现在我已经到了无法继续“关闭”以“重新同步”数据库的地步(即使在周末也不行)。
无论如何,我的问题是:是否有任何合理的、负担得起的替代二进制日志复制的方法?我有两台服务器,所以暂时不会考虑购买第三台用于负载平衡,除非它是唯一的选择。
干杯,
/mp
你的主人并行执行,你的奴隶串行执行。如果您的 master 可以在 1 个真实小时内处理 1.5 小时的插入/更新/执行,那么您的 slave 将落后。
如果您找不到提高从属设备写入性能的方法(更多内存、更快的磁盘、删除不必要的索引),那么您的应用程序架构就遇到了限制。最终你会遇到一个点,你不能像你的主人可以并行执行它们那样快速地实时执行更改。
许多大型站点将其数据库分片:考虑将您的主+从分成多个主+从集群。然后将您的客户群拆分到这些集群中。当一个奴隶开始落后时,是时候添加另一个集群了。
这并不便宜,但除非你能找到一种方法让 binlog 复制并行执行语句,否则你可能找不到更好的方法。
更新(2017 年):MySQL 现在支持并行从属工作线程。仍然有很多变量会导致从机落后,但是从机不再需要按串行顺序写入。选择保留并行从属线程的提交顺序是查看从属在任何时间点的确切状态是否至关重要的重要选项。
您是否尝试过:1) SET innodb_flush_log_at_trx_commit=0 2) SET sync_binlog=0
如果您的服务器出现故障,两者都将有助于加速您的从站,但增加的风险很小。
向从站添加内存可能会有所帮助。我们从 32 到 128 兆,滞后或多或少消失了。但它既不便宜,也不在所有情况下都足够。
购买第三台服务器可能不会有太大帮助,您很可能只会得到另一个滞后的奴隶。