h5n1
(H5n1)
2
tidb_restricted_read_only
从 v5.2.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 默认值:
OFF
- 可选值:
OFF
和 ON
- 该变量可以控制整个集群的只读状态。开启后(即该值为
ON
),整个集群中的 TiDB 服务器都将进入只读状态,只有 SELECT
、 USE
、 SHOW
等不会修改数据的语句才能被执行,其他如 INSERT
、 UPDATE
等语句会被拒绝执行。
- 该变量开启只读模式只保证整个集群最终进入只读模式,当变量修改状态还没被同步到其他 TiDB 服务器时,尚未同步的 TiDB 仍然停留在非只读模式。
- 在变量开启时,正在执行的 SQL 语句不会受影响,只对新执行的 SQL 语句进行是否只读的检查。
- 在变量开启时,对于尚未提交的事务:
- 如果有尚未提交的只读事务,可正常提交该事务。
- 如果尚未提交的事务为非只读事务,在事务内执行写入的 SQL 语句会被拒绝。
- 如果尚未提交的事务已经有数据改动,其提交也会被拒绝。
- 当集群开启只读模式后,所有用户(包括
SUPER
用户)都无法执行可能写入数据的 SQL 语句,除非该用户被显式地授予了 RESTRICTED_REPLICA_WRITER_ADMIN
权限。
- 拥有
RESTRICTED_VARIABLES_ADMIN
或 SUPER
权限的用户可以修改该变量。如果用户开启了安全增强模式 (Security Enhanced Mode),则只有 RESTRICTED_VARIABLES_ADMIN
权限的用户才能修改该变量。