在 MySQL 中,使用基于语句的复制,我假设每个 SQL 语句在从属服务器上的执行方式与在主服务器上的执行方式完全相同。但是,当我运行语句时:
LOAD DATA INFILE 'filename' INTO SomeTable;
我不确定该文件是否需要以与主服务器相同的方式存在于从服务器上。有人可以指点我这个功能的文档吗?
在 MySQL 中,使用基于语句的复制,我假设每个 SQL 语句在从属服务器上的执行方式与在主服务器上的执行方式完全相同。但是,当我运行语句时:
LOAD DATA INFILE 'filename' INTO SomeTable;
我不确定该文件是否需要以与主服务器相同的方式存在于从服务器上。有人可以指点我这个功能的文档吗?
您在主服务器上加载的文件似乎是LOAD DATA INFILE
通过复制日志从主服务器自动传输到副本的。LOAD DATA INFILE
当副本到达基于语句的复制队列中时,它会加载这些文件。
我从文档中的几个陈述中推断出这一点:
16.1:备份复制从站
如果你的 MySQL 服务器是从属复制服务器,那么无论你选择哪种备份方式,在备份从属数据时,你还应该备份 master.info 和 relay-log.info 文件。恢复从属数据后,始终需要这些文件来恢复复制。如果您的从站需要复制 LOAD DATA INFILE 命令,您还应该备份 --slave-load-tmpdir 选项指定的目录中可能存在的任何 SQL_LOAD-* 文件。
16.1.2.3:复制从属选项和变量
当从 SQL 线程复制 LOAD DATA INFILE 语句时,它会将要加载的文件从中继日志中提取到临时文件中,然后将这些文件加载到表中。如果 master 上加载的文件很大,slave 上的临时文件也很大。因此,建议使用此选项来告诉从属设备将临时文件放在位于某个文件系统中的目录中,该目录位于具有大量可用空间的文件系统中。在这种情况下,中继日志也很大,因此您可能还想使用 --relay-log 选项将中继日志放置在该文件系统中。