binlog加密介绍
1、Mysql版本8.0.14及之后的版本,binary log 文件和relay log 文件才开始可以进行加密;加密文件的算法是AES(Advanced Encryption Standard)且不能通过配置文件进行配置,该加密算法被编译到Mysql Server中。
2、Mysql Server的加密功能的开启关闭通过系统变量(binlog_encryption)来控制,默认是OFF;为了能使用该加密功能,keyring的插件或者组件必须被安装和配置来支持Mysql Server keyring 服务。
3、当第一次启动开启了加密功能的服务时,在binary log 和relay log 初始化之前,会生成一个新的binary log 加密key;这个key是用来加密binary log文件和relay log文件密码,由该文件密码生成的密码对文件中的数据进行加密;这种正在当前Mysql Server 中使用的binary log 加密key称为master key。这种两层结构的加密key可以让master key在需要的时候进行rotating(用一个新的master key 代替一个旧的key),当进行rotating时,仅仅文件的密码通过新的master key进行重新加密,而不是整个的文件。binary log和relay log的索引文件从不进行加密。
4、当服务正在运行时,如果你启动加密功能,一个新的master key 会同时生成,一种情况除外,当你之前就开启过加密功能,然后有关闭了加密功能,这时你重新开启加密功能的话,之前生成使用master key 会被重新使用。一旦新的master key生成了,新生成的文件、以及随后生成的binary log和relay log文件的文件密码会用这个新的master key 进行加密;之前已经存在Mysql中的binary log 和 relay log 文件不会被加密,一直保留未加密的状态。
5、当你将binlog_encryption=OFF来关闭该加密功能时,binary log 和relay log 文件立即rotating,后续的log 文件 就不会被加密;然而之前加密的文件不会自动的解密,仍然以加密的状态存在且Mysql Server仍然可以读他们。