LOAD DATA
对于基于语句的日志记录被认为是不安全的(请参阅
第 17.2.1.3 节,“二进制日志记录中安全和不安全语句的确定”)。设置时
binlog_format=MIXED
,语句以基于行的格式记录。设置时
binlog_format=STATEMENT
,请注意LOAD DATA
不会生成警告,这与其他不安全语句不同。
如果使用LOAD DATA
with
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 — 用于处理二进制日志文件的实用程序”。