### 13.1.5 ALTER实例语句

[](<>)

```
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
}
```

`改变实例`定义适用于MySQL服务器实例的操作。声明支持以下行动：

-   [](<>) `ALTER实例{ENABLE | DISABLE}INNODB REDO_LOG`

    此操作启用或禁用`InnoDB`重做日志记录。默认情况下启用重做日志记录。此功能仅用于将数据加载到新的MySQL实例中。该语句不会写入二进制日志。这个操作是在MySQL 8.0.21中引入的。

    警告

    *不要在生产系统上禁用重做日志记录。*虽然允许在禁用重做日志记录时关闭并重新启动服务器，但在禁用重做日志记录时意外的服务器停止可能会导致数据丢失和实例损坏。

    一[`更改实例[ENABLE | DISABLE]INNODB重做日志`](alter-instance.html)操作需要独占备份锁，这会阻止其他[`改变实例`](alter-instance.html)操作不能同时执行。另外[`改变实例`](alter-instance.html)操作必须等待锁释放后才能执行。

    有关更多信息，请参阅[禁用重做日志记录](innodb-redo-log.html#innodb-disable-redo-logging).

-   [](<>) `ALTER INSTANCE旋转INNODB主密钥`

    此操作会旋转用于加密的主加密密钥`InnoDB`表空间加密。关键点旋转需要[`加密_密钥_管理员`](privileges-provided.html#priv_encryption-key-admin)或[`超级的`](privileges-provided.html#priv_super)特权要执行此操作，必须安装并配置钥匙圈插件。有关说明，请参阅[第6.4.4节，“MySQL密钥环”](keyring.html).

    `ALTER INSTANCE旋转INNODB主密钥`支持并发DML。但是，它不能与同时运行[`创建表格。。。加密`](create-table.html)或[`改变桌子。。。加密`](alter-table.html)操作和锁被用来防止并发执行这些语句时可能出现的冲突。如果其中一个冲突语句正在运行，则必须先完成该语句，然后才能继续另一个语句。

    `ALTER INSTANCE旋转INNODB主密钥`语句被写入二进制日志，以便可以在复制的服务器上执行。

    额外的`ALTER INSTANCE旋转INNODB主密钥`使用信息，请参阅[第15.13节，“InnoDB静态数据加密”](innodb-data-encryption.html).

-   [](<>) `ALTER INSTANCE ROTATE BINLOG主密钥`

    此操作会旋转用于二进制日志加密的二进制日志主密钥。二进制日志主密钥的密钥旋转需要[`BINLOG_加密_管理`](privileges-provided.html#priv_binlog-encryption-admin)或[`超级的`](privileges-provided.html#priv_super)特权如果[`binlog_加密`](replication-options-binary-log.html#sysvar_binlog_encryption)系统变量设置为`关`。要执行此操作，必须安装并配置钥匙圈插件。有关说明，请参阅[第6.4.4节，“MySQL密钥环”](keyring.html).

    `ALTER INSTANCE ROTATE BINLOG主密钥`操作不会写入二进制日志，也不会在副本上执行。因此，二进制日志主密钥轮换可以在复制环境中执行，包括MySQL版本的混合。要在所有适用的源服务器和副本服务器上定期轮换二进制日志主密钥，可以在每台服务器上启用MySQL事件调度器，并发出`ALTER INSTANCE ROTATE BINLOG主密钥`使用[`创建事件`](create-event.html)陈述如果由于怀疑当前或以前的任何二进制日志主密钥可能已被泄露而轮换二进制日志主密钥，请在每个适用的源和副本服务器上发出该语句，以验证是否立即符合要求。

    额外的`ALTER INSTANCE ROTATE BINLOG主密钥`使用信息，包括如果进程未正确完成或被意外的服务器停止中断时该怎么办，请参阅[第17.3.2节，“加密二进制日志文件和中继日志文件”](replication-binlog-encryption.html).

-   [](<>) `改变实例重新加载TLS`

    此操作根据定义上下文的系统变量的当前值重新配置TLS上下文。它还会更新反映活动上下文值的状态变量。此操作需要[`连接管理`](privileges-provided.html#priv_connection-admin)特权有关重新配置TLS上下文的更多信息，包括哪些系统和状态变量与上下文相关，请参阅[服务器端运行时配置和监控加密连接](using-encrypted-connections.html#using-encrypted-connections-server-side-runtime-configuration).

    默认情况下，该语句会重新加载主连接接口的TLS上下文。如果`频道`子句（从MySQL 8.0.21开始提供）中，该语句将重新加载指定通道的TLS上下文：`梅因`对于主连接接口，`mysql_管理员`用于管理连接接口。有关不同接口的信息，请参阅[第5.1.12.1节“连接接口”](connection-interfaces.html)。更新的TLS上下文属性在性能架构中公开[`tls_频道_状态`](performance-schema-tls-channel-status-table.html)桌子看见[第27.12.21.7节，“tls\_频道\_“状态表”](performance-schema-tls-channel-status-table.html).

    更新主接口的TLS上下文也可能会影响管理接口，因为除非为该接口配置了一些非默认TLS值，否则它将使用与主接口相同的TLS上下文。

    笔记

    当您重新加载TLS上下文时，OpenSSL将重新加载包含CRL（证书吊销列表）的文件，作为该过程的一部分。如果CRL文件很大，服务器会分配一大块内存（文件大小的十倍），在加载新实例而尚未释放旧实例时，内存会加倍。释放大量分配后，进程驻留内存不会立即减少，因此如果`改变实例重新加载TLS`语句重复使用大型CRL文件时，进程驻留内存的使用可能会因此而增加。

    默认情况下`重新加载TLS`如果配置值不允许创建新的TLS上下文，则操作将回滚并显示错误，且不起作用。以前的上下文值将继续用于新连接。如果可选`无错误回滚`子句，并且无法创建新上下文，不会发生回滚。相反，会生成一条警告，并对应用该语句的接口上的新连接禁用加密。

    `改变实例重新加载TLS`语句不会写入二进制日志（因此不会被复制）。TLS配置是本地的，取决于不一定存在于所有相关服务器上的本地文件。

-   [](<>) `改变实例重新加载密钥环`

    如果安装了密钥环组件，此操作会告诉组件重新读取其配置文件，并重新初始化内存中的任何密钥环数据。如果在运行时修改组件配置，则在执行此操作之前，新配置不会生效。重新加载钥匙圈需要[`加密_密钥_管理员`](privileges-provided.html#priv_encryption-key-admin)特权此操作是在MySQL 8.0.24中添加的。

    此操作仅允许重新配置当前安装的密钥环组件。它不允许更改已安装的组件。例如，如果更改已安装钥匙圈组件的配置，[`改变实例重新加载密钥环`](alter-instance.html#alter-instance-reload-keyring)使新配置生效。另一方面，如果更改服务器清单文件中命名的keyring组件，[`改变实例重新加载密钥环`](alter-instance.html#alter-instance-reload-keyring)无效，当前组件仍在安装中。

    `改变实例重新加载密钥环`语句不会写入二进制日志（因此不会被复制）。
