GaussDB 设置数据库只读
Gauss没有严格意义上的只读模式,只能通过调整参数或设置事务模式可以将后续登录的SESSION或者当前事务设置为只读模式。
1. 设置数据库只读
注意,这里设置只读只对新session生效,而且数据库不需要重启也永久生效。
alter user {
user_name} set default_transaction_read_only=on;
2. 设置数据库可写
注意,这里设置只读只对新session生效,而且数据库不需要重启也永久生效。
alter user {
user_name} set default_transaction_read_only=off;
3. 示例
- 设置用户只读
GAUSSDB1=# alter user user_ufo set default_transaction_read_only=on;
ALTER ROLE
- 杀掉用户连接
注意用户名需要大写匹配
select pg_terminate_backend(PID) from pg_stat_activity where usename = 'USER_UFO' ;
- 重连用户session
重新登录即可,对于应用来说,一般是有重连机制的。
[dbadmin@cn-north3a-DBA-DB01 ~]$ gsql -h111.111.111.111 -p8635 -Uuser_ufo -dufo
Password for user benchmarksql:
gsql (9.2.1)
Type "help" for help.
ufo=>
ufo=>
ufo=> select * from test;
ID | NAME
----+------
1 | ufo111
2 | ufo112
(2 rows)
- 测试用户读写
ufo=> insert into test values ('3', 'ufo113');
ERROR: cannot execute INSERT in a read-only transaction
ufo=>