复制问题

时间:2017-12-08 08:43:29

标签: mysql mariadb

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

Id  User    Host    Db  Command Time(sec)   State   Info
-----------------------------------------------------------------------
203739  repl    slave1      Binlog Dump 75,143,121  Master has sent all binlog to slave; waiting for binlog to be updated   

203740  repl    slave2      Binlog Dump 75,143,121  Master has sent all binlog to slave; waiting for binlog to be updated

由于查询速度慢,从属实例变得非常慢。 会议次数:1590 thread_pool_max_thread = 500 当前值= 648

在主服务器上执行ALTER TABLE后,它正在复制到从属服务器,同时在从属服务器上会话数量迅速增加。 我认为由于查询缓慢,奴隶变得没有反应。

但我不知道为什么这些问题变得如此缓慢而奴隶却没有反应。 DBA表示在执行ANALYZE TABLE命令后,问题已经解决。 但我不明白为什么会这样,因为ANALYZE TABLE只更新统计信息。 如果有人评论为什么会发生这种情况会有所帮助吗? 如何在将来避免此类问题。

1 个答案:

答案 0 :(得分:0)

有一个小案例TEXTVARCHAR慢。当SELECT需要构建临时表(通常由于GROUP BYORDER BY进行排序)时,它首先尝试构建MEMORY表。但是,TEXTBLOB阻止它使用此类内容,因此它使用MyISAM代替。这比较慢(但完成工作)。

我说这是一个"小案例"因为用户很少用短语来识别它,而且非常慢......#34;并且"变得没有反应"。我会猜测 SELECT可能会慢两倍。

此外,ANALYZE TABLE讨论并不成立。再次,这可能是巧合,而不是因果关系。

因此,对TEXT 的更改可能是红鲱鱼'。相反,让我们通过使用slowlog来发现什么是缓慢的。有关我的工作内容,请参阅this