【问题标题】:Replication issue复制问题
【发布时间】:2018-05-22 11:24:09
【问题描述】:

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

Id User Host Db Command Time(sec) 状态信息 -------------------------------------------------- --------------------- 203739 repl slave1 Binlog Dump 75,143,121 Master已将所有binlog发送到slave;等待更新binlog 203740 repl slave2 Binlog Dump 75,143,121 Master已将所有binlog发送到slave;等待更新binlog

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

在主服务器上执行 ALTER TABLE 后,它正在复制到从服务器,同时从服务器上的会话数迅速增加。 我认为 slaves 变得没有响应是因为查询速度慢。

但我不知道为什么这个查询变得如此缓慢并且奴隶没有响应。 DBA 说执行 ANALYZE TABLE 命令后,问题已解决。 但我不明白为什么会这样,因为 ANALYZE TABLE 只更新统计信息。 如果有人对此发表评论会有所帮助,为什么会这样? 以后如何避免此类问题。

【问题讨论】:

    标签: mysql mariadb


    【解决方案1】:

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

    我说这是一个“小案例”,因为用户很少用“非常慢”和“变得无响应”等短语来识别它。我SELECT 的运行速度可能会慢一倍。

    另外,ANALYZE TABLE 的讨论也站不住脚。同样,这可能是巧合,而不是因果关系。

    因此,对TEXT 的更改可能是“红鲱鱼”。相反,让我们通过使用 slowlog 来发现什么是慢的。请参阅 this 了解我喜欢从事的工作。

    【讨论】:

      猜你喜欢
      • 2022-01-25
      • 1970-01-01
      • 2021-08-01
      • 2012-01-09
      • 2019-01-14
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      相关资源
      最近更新 更多