15.1.5 更改实例语句
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
redo日志记录。redo日志记录默认是启用的。这一特性仅供加载数据到新 MySQL 实例使用。该语句不写入二进制日志。Warning不要在生产系统上禁用 redo 日志记录。虽然可以在 redo 日志记录被禁用时关机重启服务器,但突然关机可能会导致数据丢失和实例损坏。
一个
ALTER INSTANCE [ENABLE|DISABLE] INNODB REDO_LOG
操作需要独占备份锁,防止其他ALTER INSTANCE
操作同时执行。其他ALTER INSTANCE
操作需要等待锁释放后才能执行。更多信息,请参见禁用 redo 记录。
-
ALTER INSTANCE ROTATE INNODB MASTER KEY
该操作旋转用于
InnoDB
表空间加密的主密钥。需要ENCRYPTION_KEY_ADMIN
或SUPER
权限。要执行该操作,需要安装和配置密钥ring插件。详见第8.4.4节,“MySQL密钥ring”。ALTER INSTANCE ROTATE INNODB MASTER KEY
支持并发DML操作。但是,它不能与CREATE TABLE ... 加密
或ALTER TABLE ... 加密
操作同时执行,并且会锁定以防止冲突。如果有冲突的语句正在运行,必须先完成再继续。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
时使用。要执行该操作,需要安装和配置密钥ring插件。详见第8.4.4节,“MySQL 密钥ring”。ALTER INSTANCE ROTATE BINLOG MASTER KEY
操作不会写入二进制日志,也不会在复制服务器上执行。因此,可以在包含不同 MySQL 版本的复制环境中对二进制日志主密钥进行轮换。要在所有适用源服务器和副本服务器上定期轮换二进制日志主密钥,可以在每个服务器上启用 MySQL 事件调度器,并使用CREATE EVENT
语句执行ALTER INSTANCE ROTATE BINLOG MASTER KEY
语句。如果你旋转二进制日志主密钥是因为怀疑当前或之前的二进制日志主密钥可能已经被 compromised,需要在每个适用源服务器和副本服务器上执行该语句,以便立即验证。关于
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上下文属性在性能chema中的tls_channel_status
表中可见。请参见第29.12.22.9节,“tls_channel_status表”.重新加载主接口的TLS上下文也可能影响管理接口,因为除非为该接口配置了非默认的TLS值,它将使用同样的TLS上下文。
Note当你重新加载TLS上下文时,OpenSSL会作为过程的一部分重新加载包含证书撤销列表(CRL)的文件。如果CRL文件很大,服务器将分配一个大块内存(文件大小的十倍),而且在新实例被加载时旧实例还没有释放,这个过程驻留内存不会立即减少。因此,如果你重复执行
ALTER INSTANCE RELOAD TLS
语句,使用大CRL文件,进程驻留内存可能会因为这个原因增长。默认情况下,
RELOAD TLS
操作如果配置值不允许创建新的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
语句不写入二进制日志(因此不复制)。