我们有一台主服务器和两台VIP从数据库服务器。我们在master上将列的数据类型从VARCHAR(255)更改为TEXT。
该应用程序当前配置为仅使用主设备进行写入操作,而配置了从设备进行读取操作。
使用ALTER TABLE命令更改主服务器上的数据类型后,从服务器将无响应。
我们正在使用Mariadb 10.0
[过程信息]

ID用户主机Db命令时间(秒)状态信息
-------------------------------------------------- ---------------------
203739 repl slave1 Binlog Dump 75,143,121主机已将所有Binlog发送给从机;等待binlog更新

203740 repl slave2 Binlog Dump 75,143,121主机已将所有Binlog发送给从机;等待binlog更新


从属实例由于查询缓慢而变得非常慢。
会话数:1590
thread_pool_max_thread = 500
当前值= 648

在主服务器上执行ALTER TABLE之后,它正在复制到从服务器上,与此同时,从服务器上的会话数也迅速增加。
我认为由于查询速度慢,奴隶变得反应迟钝。

但是我不知道为什么这个查询变得如此缓慢,而奴隶却没有响应。
DBA的说法是,在执行ANALYZE TABLE命令之后,该问题已解决。
但是我不明白为什么会这样,因为ANALYZE TABLE仅更新统计信息。
如果有人对此事发表评论,这将很有帮助?
将来如何避免此类问题。

最佳答案

在一种较小的情况下,TEXTVARCHAR慢。当SELECT需要构建临时表(由于GROUP BYORDER BY经常用于排序)时,它首先尝试构建MEMORY表。但是,TEXTBLOB阻止它使用它,因此它改用MyISAM。这比较慢(但是可以完成工作)。

我说这是“次要情况”,因为用户很少用“非常慢”和“变得无反应”之类的短语来识别它。我猜想SELECT的运行速度可能是它的两倍。

同样,ANALYZE TABLE讨论也没有成功。同样,这可能是巧合,而不是因果关系。

因此,对TEXT的更改可能是“红色鲱鱼”。取而代之的是,让我们通过使用slowlog发现正在变慢的东西。请参阅this了解我的工作方式。

关于mysql - 复制问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47710557/

10-13 02:03