MySQL 8.4 发行说明
当 MySQL 服务器实例的二进制日志加密处于活动状态时,加密范围如下:
写入二进制日志文件和中继日志文件的静态数据从开始加密的时间点开始加密,使用上述两层加密架构。启动加密时服务器上存在的现有二进制日志文件和中继日志文件不会被加密。您可以在不再需要这些文件时清除它们。
复制事件流中发送到 MySQL 客户端(包括 mysqlbinlog)的动态数据在传输过程中会被解密,因此应该通过使用连接加密来保护传输中的数据(请参阅 第 8.3 节“使用加密连接” 和 第 19.3.1 节“设置复制以使用加密连接”)。
事务期间保存在二进制日志事务和语句缓存中的使用中的数据采用未加密格式存储在存储缓存的内存缓冲区中。如果数据超过内存缓冲区中可用的空间,则会将其写入磁盘上的临时文件。当服务器上启用了二进制日志加密时,用于保存二进制日志缓存的临时文件将使用 AES-CTR(AES 计数器模式)进行流加密。由于临时文件是易失性的并且绑定到单个进程,因此它们使用单层加密进行加密,使用随机生成的仅存在于内存中且永远不会存储在磁盘或密钥环中的文件密码和初始化向量。每次提交事务后,二进制日志缓存都会重置:内存缓冲区被清除,用于保存二进制日志缓存的任何临时文件都被截断,并为下一个事务随机生成新的文件密码和初始化向量。在正常关闭或意外停止后重新启动服务器时,也会进行此重置。
注意
如果您在设置了 binlog_format=STATEMENT
的情况下使用 LOAD DATA
(不推荐这样做,因为该语句对于基于语句的复制来说被认为是不安全的),则会在应用更改的副本上创建一个包含数据的临时文件。当服务器上启用了二进制日志加密时,这些临时文件不会被加密。请改用基于行或混合的二进制日志记录格式,它们不会创建临时文件。