1

我在多主复制设置中配置了两台 MySQL 服务器。每个人都是对方的奴隶和主人。我的应用程序要求在后台运行一些大型查询,这些查询的结果将用于填充表。我想,我可以让这些大型查询在一台服务器上运行,而应用程序前端使用另一台服务器。这样,当服务器运行这些查询时,应用程序就不会变慢。

这些查询非常大INSERT .... SELECT。使用我的复制设置,似乎当一台服务器完成查询时,它不仅仅是将 INSERT 发送到从属服务器,而是让从属服务器运行原始的大型 INSERT/SELECT。

这真的发生了吗?或者有没有办法查看从主机发送到从机的命令来验证这是行为?我能说的唯一方法是从 CPU 负载。

有没有办法让奴隶只从一个 INSERT... SELECT 得到结果 INSERT 在主人身上运行?

4

2 回答 2

5

这真的发生了吗?

大概。

或者有没有办法查看从主机发送到从机的命令来验证这是行为?

好吧,您可以 解构 binlog,但我希望阅读复制格式选项不会那么令人头疼。

您可能处于基于语句的模式,这是多年来的默认模式。如果这些语句很痛苦,您希望处于基于行的模式混合模式。INSERT INTO ... SELECT这些选项仅在 MySQL 5.1 或更高版本中可用。

于 2011-03-13T21:20:14.893 回答
0

运行实际查询。解决您 INSERT...SELECT 的唯一方法是自己分解它们。运行选择,将结果存储在内存中,然后进行批量插入。

于 2011-03-13T21:21:10.633 回答