6.4.4.7 在密钥环密钥库之间迁移密钥

从 MySQL 5.7.21 开始,MySQL 服务器支持一种操作模式,该模式允许在基础密钥环密钥库之间迁移密钥,从而允许 DBA 将 MySQL 安装从一个密钥环插件切换到另一个密钥环插件。迁移服务器(即,以密钥迁移模式启动的服务器)不接受 Client 端连接。相反,它仅运行足够长的时间来迁移密钥,然后退出。迁移服务器将错误报告给控制台(标准错误输出)。

可以执行离线或在线密钥迁移:

密钥迁移操作的结果是,目标密钥库包含其在迁移之前拥有的密钥,以及源密钥库中的密钥。源密钥库在迁移前后是相同的,因为密钥是复制的,而不是移动的。如果目标密钥库中已经存在要复制的密钥,则会发生错误,并且目标密钥库将还原到其预迁移状态。

以密钥迁移方式调用服务器的用户不能是rootos 用户,并且必须具有读写密钥环文件的权限。

要执行密钥迁移操作,请确定需要哪些密钥迁移选项。迁移选项指示涉及哪些密钥环插件,以及执行离线还是在线迁移:

这些选项告诉服务器以密钥迁移模式运行。这两个选项对于所有关键迁移操作都是必需的。源插件和目标插件必须不同,并且迁移服务器必须同时支持这两个插件。

Warning

不要执行涉及正在运行的服务器正在使用的密钥库的脱机迁移。

使用以下任何选项均 table 示在线迁移:

有关密钥迁移选项的其他详细信息,请参见第 6.4.4.10 节,“密钥环命令选项”

使用刚刚确定的关键迁移选项(可能还有其他选项)启动迁移服务器。请记住以下注意事项:

为避免此问题,请以rootos 用户身份启动迁移服务器并提供--user=user_name选项,其中* user_name *是通常用于运行 MySQL 的系统帐户。

离线密钥迁移的示例命令行:

mysqld --defaults-file=/usr/local/mysql/etc/my.cnf
  --keyring-migration-source=keyring_file.so
  --keyring-migration-destination=keyring_encrypted_file.so
  --keyring_encrypted_file_password=password

在线密钥迁移的示例命令行:

mysqld --defaults-file=/usr/local/mysql/etc/my.cnf
  --keyring-migration-source=keyring_file.so
  --keyring-migration-destination=keyring_encrypted_file.so
  --keyring_encrypted_file_password=password
  --keyring-migration-host=localhost
  --keyring-migration-user=root
  --keyring-migration-password=root_password

密钥迁移服务器执行迁移操作如下:

如果在密钥迁移期间发生错误,则将删除复制到目标插件的所有密钥,从而使目标密钥库保持不变。

Important

对于联机迁移操作,迁移服务器负责在运行的服务器上启用和禁用keyring_operations。但是,如果迁移服务器异常退出(例如,如果有人强行终止了迁移服务器),则可能无法在运行的服务器上重新启用keyring_operations,从而使其无法执行密钥环操作。在这种情况下,可能需要连接到正在运行的服务器并手动启用keyring_operations

成功完成在线密钥迁移操作后,可能需要重新启动运行中的服务器:

Note

MySQL 服务器密钥迁移模式支持暂停单个正在运行的服务器。如果多个密钥服务器正在使用所涉及的密钥库,则要执行密钥迁移,请使用以下过程:

  • 手动连接到每个正在运行的服务器,并设置keyring_operations=OFF

  • 使用迁移服务器执行脱机密钥迁移。

  • 手动连接到每个正在运行的服务器,并设置keyring_operations=ON

所有正在运行的服务器必须支持keyring_operations=ON系统变量。

首页