19.5.1.19 复制和LOAD DATA
LOAD DATA
在语句基于的日志记录中被认为是unsafe(见第19.2.1.3节,“确定安全和不安全的语句在二进制日志记录中”)。当binlog_format=MIXED
设置时,该语句将以行格式记录。当binlog_format=STATEMENT
设置时,注意LOAD DATA
不生成警告,除非其他不安全语句。
如果您使用LOAD DATA
与binlog_format=STATEMENT
,每个要应用更改的副本都创建一个临时文件,包含数据。然后,该副本使用LOAD DATA
语句应用更改。这临时文件不加密,即使在源端启用了二进制日志加密。如果加密是必要的,使用行格式或混合二进制日志格式,而不是副本创建临时文件。
如果FILE
权限已经用于帮助保护复制通道(见第19.3.3节,“复制权限检查”),强烈建议您使用行格式二进制日志记录LOAD DATA
操作。 如果binlog_format=ROW
设置为通道,行格式二进制日志记录是必需的。使用该记录格式时,不需要为事件授予FILE
权限,因此不要将FILE
权限授予PRIVILEGE_CHECKS_USER
账户。如果您需要从复制错误中恢复LOAD DATA INFILE
操作,且复制事件被信任,您可以临时授予FILE
权限给PRIVILEGE_CHECKS_USER
账户,待复制事件被应用后删除该权限。
当mysqlbinlog读取以语句形式记录的LOAD DATA
语句时,会在临时目录中创建一个生成的本地文件。这些临时文件不会被mysqlbinlog或任何其他MySQL程序自动删除。如果您使用语句形式的二进制日志记录LOAD DATA
语句,您应该在不再需要语句日志时自己删除临时文件。更多信息,请见第6.6.9节,“mysqlbinlog — Utility for Processing Binary Log Files”。