Documentation Home

17.5.1.19 复制和加载数据

LOAD DATA对于基于语句的日志记录被认为是不安全的(请参阅 第 17.2.1.3 节,“二进制日志记录中安全和不安全语句的确定”)。设置时 binlog_format=MIXED,语句以基于行的格式记录。设置时 binlog_format=STATEMENT,请注意LOAD DATA不会生成警告,这与其他不安全语句不同。

如果使用LOAD DATAwith binlog_format=STATEMENT,每个要应用更改的副本都会创建一个包含数据的临时文件。副本然后使用 LOAD DATA语句来应用更改。此临时文件未加密,即使源上的二进制日志加密处于活动状态,如果需要加密,请改用基于行或混合二进制日志记录格式,副本不会为其创建临时文件。

如果PRIVILEGE_CHECKS_USER已使用帐户来帮助保护复制通道(请参阅 第 17.3.3 节,“复制权限检查”),强烈建议您LOAD DATA使用基于行的二进制日志记录 ( binlog_format=ROW) 记录操作。如果 REQUIRE_ROW_FORMAT为通道设置,则需要基于行的二进制日志记录。使用这种日志格式,FILE执行事件不需要特权,所以不要给 PRIVILEGE_CHECKS_USER帐户这个特权。如果您需要从涉及 LOAD DATA INFILE以语句格式记录的操作的复制错误中恢复,并且复制的事件是可信的,您可以将FILE权限 授予PRIVILEGE_CHECKS_USER临时帐户,在应用复制的事件后将其删除。

mysqlbinlog读取以 LOAD DATA基于语句的格式记录的语句的日志事件时,会在临时目录中创建一个生成的本地文件。这些临时文件不会被mysqlbinlog或任何其他 MySQL 程序自动删除。如果您确实将LOAD DATA 语句与基于语句的二进制日志记录一起使用,则应在不再需要语句日志后自行删除临时文件。有关详细信息,请参阅 第 4.6.9 节,“mysqlbinlog — 用于处理二进制日志文件的实用程序”