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 {启用 | 禁用} INNODB REDO_LOG
此操作启用或禁用
InnoDB
重做日志记录。默认情况下启用重做日志记录。此功能仅用于将数据加载到新的 MySQL 实例中。该语句不会写入二进制日志。Warning请勿在生产系统上禁用重做日志记录。 虽然在禁用重做日志记录时允许关闭并重新启动服务器,但在禁用重做日志记录时意外停止服务器可能会导致数据丢失和实例损坏。
ALTER INSTANCE [启用|禁用] INNODB REDO_LOG
操作需要独占备份锁,这将阻止其他ALTER INSTANCE
操作同时执行。其他ALTER INSTANCE
操作必须等待锁释放才能执行。有关更多信息,请参阅 禁用重做日志记录。
-
此操作轮转用于
InnoDB
表空间加密的主加密密钥。密钥轮转需要ENCRYPTION_KEY_ADMIN
或SUPER
权限。要执行此操作,必须安装和配置密钥环插件。有关说明,请参阅 第 8.4.4 节“MySQL 密钥环”。ALTER INSTANCE 轮转 INNODB 主密钥
支持并发 DML。但是,它不能与CREATE TABLE ... 加密
或ALTER TABLE ... 加密
操作同时运行,并且会获取锁以防止可能由这些语句并发执行引起的冲突。如果其中一个冲突语句正在运行,则它必须在另一个语句继续之前完成。ALTER INSTANCE 轮转 INNODB 主密钥
语句写入二进制日志,以便它们可以在复制服务器上执行。有关更多
ALTER INSTANCE 轮转 INNODB 主密钥
的使用信息,请参阅 第 17.13 节“InnoDB 静态数据加密”。 -
此操作会旋转用于二进制日志加密的二进制日志主密钥。二进制日志主密钥的密钥轮换需要
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 上下文。它还更新了反映活动上下文值的状态变量。此操作需要
CONNECTION_ADMIN
权限。有关重新配置 TLS 上下文的更多信息,包括哪些系统和状态变量与上下文相关,请参阅 加密连接的服务器端运行时配置和监控。默认情况下,该语句会为主连接接口重新加载 TLS 上下文。如果给出了
FOR CHANNEL
子句,则该语句会为指定的通道重新加载 TLS 上下文:mysql_main
用于主连接接口,mysql_admin
用于管理连接接口。有关不同接口的信息,请参阅 第 7.1.12.1 节,“连接接口”。更新后的 TLS 上下文属性会在 Performance Schema 的tls_channel_status
表中公开。请参阅 第 29.12.22.9 节,“tls_channel_status 表”。更新主接口的 TLS 上下文也可能会影响管理接口,因为除非为该接口配置了一些非默认的 TLS 值,否则它会使用与主接口相同的 TLS 上下文。
Note重新加载 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
语句不会写入二进制日志(因此不会被复制)。