首页 > 解决方案 > 复制是否在副本的所有成员中运行“创建临时表”命令?

问题描述

我想在 MySQL 数据库中创建一个临时表,它是 Master-Master 复制的成员。我运行查询并创建了临时表,但是,该表是在其中一个服务器中创建的,并且尚未在复制的另一个成员中创建。我的问题是,不应该在两个复制成员中运行所有查询吗?

标签: mysqlreplication

解决方案


一点都不。

引用手册

TEMPORARY 表仅在当前会话中可见,并在会话关闭时自动删除。

这意味着,即使您在同一服务器上打开另一个连接,您也不会看到该表。

因此,在多个服务器上创建临时表是没有意义的,至少当您不在 DML 语句中使用它时。

如果您使用此表执行 UPDATE、DELETE 或 INSERT 语句,它会被复制,但这取决于您复制的方式。

如果您的 binlog 格式为 STATEMENT,则您的临时表将在复制服务器上的磁盘上创建,位于您在 tmp_data 变量中指定的目录中。
如果它是 MIXED 或 ROW,如果我没记错的话,它会以 ROW 格式传输。


推荐阅读