基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
如何设置租户全局只读
更新时间:2026-06-10 01:56
本文将介绍如何将租户设置为全局只读。
适用版本
OceanBase 数据库所有版本。
适用场景
将租户设置为全局只读适用于以下场景:
租户数据迁移,需要停止对源库的写操作。
租户租约到期,需要停止租户的写操作。
租户存储空间达到上限,需要停止租户的写操作。
限制租户使用的方法包括:
使用 sys 租户锁定业务租户,但该操作影响较大,会使租户无法登录,无法读写数据。
撤回租户账号权限,但该操作效果有限,账号较多时操作繁琐。
设置租户全局只读。
本文通过配置全局变量 tx_read_only 的方法将租户设置为全局只读,有关 tx_read_only 的详细信息,请参见《OceanBase 数据库 参考指南》中的 系统变量 章节。
配置步骤
使用 root 用户登录租户,其中
tenant_name为租户名称。[admin@hostname ~]# obclient -hxxx.xxx.xx.xxx -P2881 -uroot@<tenant_name> -p -A将
tx_read_only设置为 ON,表示开启租户全局只读。obclient> SET GLOBAL tx_read_only='ON';
配置后验证
在该租户上执行 SELECT 命令,如果没有返回错误,则说明租户可读。
obclient> SELECT * FROM fruit;
+------+
| id |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.01 sec)
在租户上执行 INSERT、UPDATE 或 DELETE 命令,如果返回错误信息 Cannot execute statement in a READ ONLY transcation 则说明租户的全局只读已生效。
obclient> INSERT INTO fruit VALUES (3);
ERROR 1792 (25006): Cannot execute statement in a READ ONLY transcation