ALTER INSTANCE instance_action
instance_action: {
| {ENABLE|DISABLE} INNODB REDO_LOG
| ROTATE INNODB MASTER KEY
| ROTATE BINLOG MASTER KEY
| RELOAD TLS
[FOR CHANNEL {mysql_main | mysql_admin}]
[NO ROLLBACK ON ERROR]
| RELOAD KEYRING
}
ALTER INSTANCE
定义适用于 MySQL 服务器实例的操作。该语句支持以下操作
ALTER INSTANCE {ENABLE | DISABLE} INNODB REDO_LOG
此操作启用或禁用
InnoDB
重做日志记录。默认情况下启用重做日志记录。此功能仅用于将数据加载到新的 MySQL 实例中。该语句不会写入二进制日志。警告不要在生产系统上禁用重做日志记录。 虽然允许在禁用重做日志记录的情况下关闭和重启服务器,但在禁用重做日志记录的情况下意外停止服务器可能会导致数据丢失和实例损坏。
ALTER INSTANCE [ENABLE|DISABLE] INNODB REDO_LOG
操作需要独占备份锁,这会阻止其他ALTER INSTANCE
操作并发执行。其他ALTER INSTANCE
操作必须等待锁释放后才能执行。有关更多信息,请参阅 禁用重做日志记录。
ALTER INSTANCE ROTATE INNODB MASTER KEY
此操作会轮换用于
InnoDB
表空间加密的主加密密钥。密钥轮换需要ENCRYPTION_KEY_ADMIN
或SUPER
权限。要执行此操作,必须安装和配置密钥环插件。有关说明,请参见 第 8.4.4 节,“MySQL 密钥环”。ALTER INSTANCE ROTATE INNODB MASTER KEY
支持并发 DML。但是,它不能与CREATE TABLE ... ENCRYPTION
或ALTER TABLE ... ENCRYPTION
操作同时运行,并且会采取锁定措施以防止因并发执行这些语句而可能发生的冲突。如果其中一个冲突语句正在运行,则它必须在另一个语句可以继续之前完成。ALTER INSTANCE ROTATE INNODB MASTER KEY
语句会写入二进制日志,以便可以在复制服务器上执行它们。有关
ALTER INSTANCE ROTATE INNODB MASTER KEY
的其他使用信息,请参见 第 17.13 节,“InnoDB 静态数据加密”。ALTER INSTANCE ROTATE BINLOG MASTER KEY
此操作会轮换用于二进制日志加密的二进制日志主密钥。二进制日志主密钥的密钥轮换需要
BINLOG_ENCRYPTION_ADMIN
或SUPER
权限。如果binlog_encryption
系统变量设置为OFF
,则无法使用该语句。要执行此操作,必须安装和配置密钥环插件。有关说明,请参见 第 8.4.4 节,“MySQL 密钥环”。ALTER INSTANCE ROTATE BINLOG MASTER KEY
操作不会写入二进制日志,也不会在副本上执行。因此,可以在包含混合 MySQL 版本的复制环境中执行二进制日志主密钥轮换。要在所有适用的源服务器和副本服务器上安排定期轮换二进制日志主密钥,可以在每个服务器上启用 MySQL 事件调度程序,并使用CREATE EVENT
语句发出ALTER INSTANCE ROTATE BINLOG MASTER KEY
语句。如果您怀疑当前或任何以前的二进制日志主密钥可能已被泄露,请在每个适用的源服务器和副本服务器上发出该语句,以便您能够验证是否立即合规。有关
ALTER INSTANCE ROTATE BINLOG MASTER KEY
的其他使用信息,包括如果该过程未正确完成或被意外的服务器停止中断时该怎么做,请参见 第 19.3.2 节,“加密二进制日志文件和中继日志文件”。此操作根据定义上下文的系统变量的当前值重新配置 TLS 上下文。它还会更新反映活动上下文值的 estado 变量。此操作需要
CONNECTION_ADMIN
权限。有关重新配置 TLS 上下文的更多信息,包括哪些系统和状态变量与上下文相关,请参见 加密连接的服务器端运行时配置和监控。默认情况下,该语句会为主连接接口重新加载 TLS 上下文。如果给出了
FOR CHANNEL
子句,则该语句会为指定的通道重新加载 TLS 上下文:mysql_main
用于主连接接口,mysql_admin
用于管理连接接口。有关不同接口的信息,请参见 第 7.1.12.1 节,“连接接口”。更新后的 TLS 上下文属性在 Performance Schematls_channel_status
表中公开。请参见 第 29.12.22.9 节,“tls_channel_status 表”。更新主接口的 TLS 上下文也可能会影响管理接口,因为除非为该接口配置了一些非默认 TLS 值,否则它将使用与主接口相同的 TLS 上下文。
注意重新加载 TLS 上下文时,OpenSSL 会将包含 CRL(证书吊销列表)的文件作为该过程的一部分重新加载。如果 CRL 文件很大,服务器会分配一大块内存(文件大小的十倍),在加载新实例且旧实例尚未释放时,该内存会翻倍。释放大量分配后,进程驻留内存不会立即减少,因此,如果使用大型 CRL 文件重复发出
ALTER INSTANCE RELOAD TLS
语句,则进程驻留内存使用量可能会因此而增加。默认情况下,如果配置值不允许创建新的 TLS 上下文,
RELOAD TLS
操作将回滚并报错,并且没有任何效果。先前的上下文值将继续用于新连接。如果给出了可选的NO ROLLBACK ON ERROR
子句,并且无法创建新的上下文,则不会发生回滚。相反,会生成警告,并且会为语句适用的接口上的新连接禁用加密。ALTER INSTANCE RELOAD TLS
语句不会写入二进制日志(因此不会被复制)。TLS 配置是本地的,并且取决于并非所有相关服务器上都存在本地文件。如果安装了密钥环组件,则此操作会指示组件重新读取其配置文件并重新初始化任何密钥环内存数据。如果在运行时修改组件配置,则新配置在执行此操作之前不会生效。重新加载密钥环需要
ENCRYPTION_KEY_ADMIN
权限。此操作仅允许重新配置当前安装的密钥环组件。它不允许更改安装的组件。例如,如果更改了已安装密钥环组件的配置,则
ALTER INSTANCE RELOAD KEYRING
会使新配置生效。另一方面,如果更改了服务器清单文件中命名的密钥环组件,则ALTER INSTANCE RELOAD KEYRING
不会产生任何效果,并且当前组件将保持安装状态。ALTER INSTANCE RELOAD KEYRING
语句不会写入二进制日志(因此不会被复制)。