小编Vin*_*ann的帖子

MySQL,优化和复制

我有两个 MySQL(实际上是 MariaDB)服务器,一个主服务器和一个带有标准复制的从属服务器。在不到一个月的时间里,我的奴隶已经有两次无法使用了。

这是我的经历:

  • 使用我的监控工具注意到从站每秒的查询量下降
  • 用mysql客户端连接服务器,运行 SHOW SLAVE STATUS \G
  • 注意一切看起来都很正常(等待主人发送事件,主人后面的秒数 = 0 等)
  • 尝试停止复制 STOP SLAVE
  • STOP SLAVE 挂起
  • 无法使用客户端连接到服务器
  • SHOW SLAVE STATUS \G在另一个已经连接的客户端上执行,它也挂了。

之后,我看到了使用 CPU 的 MySQL 进程,我看到了很多使用 iotop 的磁盘写入,所以我让它做它的东西一段时间。

15 分钟后,我杀死了 MySQL 进程 -9,因为我感到沮丧。然后我重新启动 MySQL,我可以连接和运行查询,很好。

我执行SHOW SLAVE STATUS \G现在可以工作了,它看起来很正常:master 后面的秒数 = 0,等待事件。然后我继续在 master 上执行CREATE DATABASE foobar以查看复制是否有效,但它没有。

同样,那时我看到了很多磁盘写入,所以我认为复制正在赶上。两个小时后,我终于决定检查SHOW PROCESSLIST,我看到执行的只是一个OPTIMIZE TABLE table1 ...,然后我记得我上次遇到了完全相同的问题。

我用那个查询终止了这个进程,然后我重新执行SHOW PROCESSLIST,果然它赶上了主人。SHOW SLAVE STAUTS \G报告落后master 15k 秒,这是连贯的。

无论如何,在那堵文字墙之后,我的问题是:

  • 为什么 OPTIMIZE 查询会阻止复制追赶?
  • 我可以阻止那些 OPTIMIZE …

mysql replication

4
推荐指数
1
解决办法
8963
查看次数

标签 统计

mysql ×1

replication ×1