LOAD DATA
在基於陳述式的日誌記錄中被認為是不安全的(請參閱第 19.2.1.3 節,「二進位日誌中安全和不安全陳述式的判斷」)。當設定 binlog_format=MIXED
時,該陳述式會以基於列的格式記錄。當設定 binlog_format=STATEMENT
時,請注意 LOAD DATA
不會產生警告,這與其他不安全的陳述式不同。
如果您使用 LOAD DATA
和 binlog_format=STATEMENT
,則要套用變更的每個副本都會建立一個包含資料的暫存檔案。然後,副本會使用 LOAD DATA
陳述式來套用變更。即使來源上啟用了二進位日誌加密,此暫存檔案也不會加密。如果需要加密,請改用基於列或混合的二進位日誌記錄格式,這樣副本就不會建立暫存檔案。
如果已使用 PRIVILEGE_CHECKS_USER
帳戶來協助保護複製通道的安全(請參閱第 19.3.3 節,「複製權限檢查」),強烈建議您使用基於列的二進位日誌記錄 (binlog_format=ROW
) 來記錄 LOAD DATA
操作。如果為通道設定了 REQUIRE_ROW_FORMAT
,則必須使用基於列的二進位日誌記錄。使用此日誌記錄格式,執行事件不需要 FILE
權限,因此請不要給予 PRIVILEGE_CHECKS_USER
帳戶此權限。如果您需要從涉及以陳述式格式記錄的 LOAD DATA INFILE
操作的複製錯誤中復原,且複製的事件是可信任的,您可以暫時將 FILE
權限授予 PRIVILEGE_CHECKS_USER
帳戶,並在套用複製的事件後將其移除。
當 mysqlbinlog 讀取以語句式格式記錄的 LOAD DATA
語句的日誌事件時,會在暫存目錄中建立一個產生的本機檔案。這些暫存檔案不會由 mysqlbinlog 或任何其他 MySQL 程式自動移除。如果您確實使用以語句式二進制日誌記錄的 LOAD DATA
語句,您應該在不再需要語句日誌後自行刪除暫存檔案。如需更多資訊,請參閱 第 6.6.9 節,「mysqlbinlog — 用於處理二進制日誌檔案的工具」。