#### 17.3.2.2二进制日志加密密钥

用于加密日志文件密码的二进制日志加密密钥是256位密钥，这些密钥是使用MySQL服务器的密钥环服务专门为每个MySQL服务器实例生成的（请参阅[第6.4.4节，“MySQL密钥环”](keyring.html))密钥环服务处理二进制日志加密密钥的创建、检索和删除。服务器实例只创建和删除为自身生成的密钥，但如果其他实例的密钥存储在密钥环中，则它可以读取为其他实例生成的密钥，就像通过文件复制克隆的服务器实例一样。

重要的

MySQL服务器实例的二进制日志加密密钥必须包含在备份和恢复过程中，因为如果解密当前和保留的二进制日志文件或中继日志文件的文件密码所需的密钥丢失，则可能无法启动服务器。

密钥环中二进制日志加密密钥的格式如下：

```
MySQLReplicationKey_{UUID}_{SEQ_NO}
```

例如：

```
MySQLReplicationKey_00508583-b5ce-11e8-a6a5-0010e0734796_1
```

`{UUID}`是MySQL服务器生成的真实UUID（[`服务器_uuid`](replication-options.html#sysvar_server_uuid)系统变量）。`{SEQ_NO}`是二进制日志加密密钥的序列号，对于服务器上生成的每个新密钥，该序列号将递增1。

服务器上当前使用的二进制日志加密密钥称为二进制日志主密钥。当前二进制日志主密钥的序列号存储在密钥环中。二进制日志主密钥用于加密每个新日志文件的文件密码，该密码是一个随机生成的32字节文件密码，特定于用于加密文件数据的日志文件。文件密码使用AES-CBC（AES密码块链接模式）加密，使用256位二进制日志加密密钥和随机初始化向量（IV），并存储在日志文件的文件头中。使用AES-CTR（AES计数器模式）对文件数据进行加密，使用文件密码生成的256位密钥和文件密码生成的nonce。如果用于加密文件密码的二进制日志加密密钥已知，则可以使用OpenSSL加密工具包中提供的工具脱机解密加密文件。

如果使用文件复制来克隆加密处于活动状态的MySQL服务器实例，以便对其二进制日志文件和中继日志文件进行加密，请确保也复制了密钥环，以便克隆服务器可以从源服务器读取二进制日志加密密钥。在克隆服务器上激活加密（无论是在启动时还是随后），克隆服务器都会识别与复制的文件一起使用的二进制日志加密密钥包括源服务器生成的UUID。它使用自己生成的UUID自动生成一个新的二进制日志加密密钥，并使用该密钥加密后续二进制日志文件和中继日志文件的文件密码。继续使用源服务器的密钥读取复制的文件。
