我尝试在实时数据库服务器上运行数据迁移查询,但一分钟后,由于“连接太多”,我无法通过命令行连接到 MySQL。我不得不终止查询并重新启动 MySQL。我不会在白天尝试在实时系统上运行这样的查询,再次:)
同样的查询在生产服务器的非常低流量的副本上花费了不到两分钟的时间,完成得很好。
到服务器的流量是否可能导致此查询停止?
我尝试在实时数据库服务器上运行数据迁移查询,但一分钟后,由于“连接太多”,我无法通过命令行连接到 MySQL。我不得不终止查询并重新启动 MySQL。我不会在白天尝试在实时系统上运行这样的查询,再次:)
同样的查询在生产服务器的非常低流量的副本上花费了不到两分钟的时间,完成得很好。
到服务器的流量是否可能导致此查询停止?
我有一种预感,您遇到的问题与 FLUSH TABLES 或 LOCK TABLES 有关,假设您正在使用 mysqldump 或类似的东西来进行迁移。mysqldump 不抛出 --single-transaction 假定 MyISAM 表类型并锁定表以防止在转储时进行任何新写入,以便您获得一致的快照。如果您使用 InnoDB 表并打开 --single-transaction ,那么执行的第一个查询是刷新表,它关闭并重新打开数据库中的所有表,以便您获得跨表的一致快照。任何一种都可能导致传入的查询堆积起来等待释放锁,但在轻负载的复制器上可能不会被注意到。