我们大约在一周前设置了一个数据库复制,但在保持同步方面遇到了问题。
安装程序是mariadb 10.1.35/mysql 5.5.5的主复制。只有一个数据库用于调用。另一个数据库将仅用作备份。我将把这个称为奴隶。我们遇到麻烦的是那个奴隶。复制是基于语句的。
前24小时一切正常。第二天,奴隶越来越落后,直到24小时。24小时后我们检查时,奴隶又回到了轨道上,只比主人落后了几秒钟。
现在又一次,它开始越来越落后(现在超过5小时的数据)。
它仍在同步,因此复制本身正在工作。但是,有些查询在从属服务器上花费的时间太长,这会延迟所有操作。
除了一个update查询外,所有查询的执行速度都非常快。它会在进程列表中停留5、10秒,有时甚至20、30秒。在主服务器上处理查询的时间不到一秒钟,而且当我们在从服务器上手动执行此查询时,所用时间也不超过一秒钟。所以,我们认为它与查询本身无关。两个数据库/表的结构完全相同。表的存储引擎是innodb。
在这一点上,我们不知道是什么导致了这次延误。正在即时处理插入。
在从机上执行查询时,processlist有一个区别;命令保持在“connect”状态,而命令在主服务器上显示“execute”。这种行为正常吗?
如果我需要提供更多的信息,请告诉我。很明显,从机一次只处理一个查询,因此如果在主机上有很多查询,它就可以落后,但该查询不必占用30秒,而手动执行时所用的时间不到一秒。
谢谢您。
p、 我们已经优化了表(optimize),但不幸的是,这并没有带来什么不同。
暂无答案!
目前还没有任何答案,快来回答吧!