MySQL 8.3 Release Notes
当 MySQL 服务器实例上的二进制日志加密处于活动状态时,加密的范围如下:
-
静态数据,即写入二进制日志文件和中继日志文件的数据,从加密开始的时间点起使用上述双层加密架构进行加密。服务器上存在的二进制日志文件和中继日志文件在加密开始前不被加密。你可以在不再需要时清除这些文件。
-
在复制事件流中的数据,在传输到 MySQL 客户端(包括 mysqlbinlog)时被解密,应该通过使用连接加密(见 第 8.3 节,“使用加密连接” 和 第 19.3.1 节,“设置复制以使用加密连接”)来保护传输。
-
在事务期间在二进制日志事务和语句缓存中的使用数据,在内存缓冲区中是未加密的形式。如果缓存超出内存缓冲区的可用空间,数据将被写入磁盘上的临时文件。当服务器上的二进制日志加密处于活动状态时,用于持有二进制日志缓存的临时文件将使用 AES-CTR(AES 计数器模式)流加密进行加密。因为临时文件是 volatile 的,仅与单个进程相关,使用随机生成的文件密码和初始化向量,它们仅存在于内存中,从不存储在磁盘或密钥环上。在每个事务提交后,二进制日志缓存将被重置:内存缓冲区将被清除,用于持有二进制日志缓存的临时文件将被截断,新的文件密码和初始化向量将被随机生成以供下一个事务使用。这种重置也将在服务器在正常关闭或意外停止后重新启动时发生。
Note
如果你使用 LOAD DATA
时,binlog_format=STATEMENT
被设置,这不是推荐的,因为语句被认为对基于语句的复制不安全。在副本上应用更改时,将创建一个包含数据的临时文件。这些临时文件在服务器上的二进制日志加密处于活动状态时不被加密。请改用基于行的或混合二进制日志格式,它们不会创建临时文件。