更新时间:2024-10-08 GMT+08:00

教程:设置只读逻辑集群并绑定用户

场景介绍

如果在不同时段内业务流量差异非常大,3节点集群又无法满足高峰期的吞吐量要求,但扩容至6节点又存在资源浪费或费用较高问题。用户可通过本章教程再结合定时增删DWS 3.0逻辑集群功能,实现类似于“晚上低峰期3节点,白天6节点,高峰期9节点”的弹性扩展功能。

本章演示了一组新扩容逻辑集群(无业务数据)配置为只读,并将部分用户切换到此只读逻辑集群上,实现用户创建的表都仍然在其原始的NodeGroup上,但计算逻辑都切到只读逻辑集群上执行效果。

前提条件

参见创建GaussDB(DWS)存算分离3.0集群章节创建6个节点的集群,并已划分为两个逻辑集群v3_logical和lc1,其中lc1暂无业务数据。

配置只读逻辑集群,并将用户切换到只读逻辑集群上

  1. 以系统管理员dbadmin连接数据库,执行以下SQL语句查看逻辑集群创建成功。

    1
    SELECT group_name FROM PGXC_GROUP;
    

  2. 设置逻辑集群lc1为只读。

    1
    2
    3
    SET xc_maintenance_mode=on;
    ALTER NODE GROUP lc1 SET READ ONLY;
    SET xc_maintenance_mode=off;
    

  3. 创建用户。

    1
    create user testuser password 'testuser12#$%';
    

  4. 绑定用户到逻辑集群lc1,如下语句中的testuser、lc1等变量需结合实际情况替换。

    首先我们需要找到用户的NodeGroup,如果能查到记录,将其设置到该用户的default_storage_nodegroup上,以便该用户创建的表都仍然在其原始的NodeGroup上;若查不到记录,直接进行后面的两条alter语句即可。
    1
    2
    SELECT nodegroup FROM pg_user WHERE usename='testuser';
    ALTER USER testuser SET default_storage_nodegroup='nodegroup'; //这里nodegroup需替换为上述SQL查到的NodeGroup名
    

    同时将用户绑定到新的只读逻辑集群上,这样该用户的计算逻辑都会切到只读逻辑集群上执行。

    1
    2
    ALTER USER testuser NODE GROUP lc1;
    ALTER USER testuser SET enable_cudesc_streaming=ON;