教程:新物理集群劃分為邏輯集群
更新時間 2024-12-06 19:50:37
最近更新時間: 2024-12-06 19:50:37
分享文章
本章節演示一套全新6節點物理集群(無業務數據)劃分為2套邏輯集群的操作。
場景介紹
本章節演示一套全新6節點物理集群(無業務數據)劃分為2套邏輯集群的操作。
前提條件
創建6個節點的集群。
劃分邏輯集群
- 在集群管理頁面,單擊指定集群名稱進入集群詳情頁面,左導航欄單擊“邏輯集群管理”。
- 進入邏輯集群頁面,單擊右上角“添加邏輯集群”,從右側勾選1個主機環(3個節點)到左側列表中,并輸入邏輯集群名稱lc1,單擊“確定”。
等待約2分鐘,邏輯集群添加成功。
- 重復以上步驟,劃分第二套邏輯集群lc2。
創建邏輯集群關聯用戶并跨邏輯集群查詢數據
- 以系統管理員dbadmin連接數據庫,執行以下SQL語句查看邏輯集群創建成功。
SELECT group_name FROM PGXC_GROUP;
- 創建兩個用戶u1和u2,分別關聯邏輯集群lc1和邏輯集群lc2。
CREATE USER u1 NODE GROUP "lc1" password ' {password} ';
CREATE USER u2 NODE GROUP "lc2" password ' {password} ';
- 切換到用戶u1,創建表t1,并插入數據。
SET ROLE u1 PASSWORD ' {password} ';
CREATE TABLE u1.t1 (id int);
INSERT INTO u1.t1 VALUES (1),(2);
- 切換到用戶u2,創建表t2,并插入數據。
SET ROLE u2 PASSWORD ' {password} ';
CREATE TABLE u2.t2 (id int);
INSERT INTO u2.t2 VALUES (1),(2);
- 同時使用u2查詢u1.t1表。返回結果提示沒有權限。
SELECT * FROM u1.t1;
- 切換回系統管理員dbadmin,查詢表u1.t1和u2.t2分別創建到了集群lc1和lc2中,分別對應企業的兩塊業務,實現了基于邏輯集群的數據隔離。
SET ROLE dbadmin PASSWORD ' {password} ';
SELECT p.oid,relname,pgroup,nodeoids FROM pg_class p LEFT JOIN pgxc_class pg ON p.oid = pg.pcrelid WHERE p.relname = 't1';
SELECT p.oid,relname,pgroup,nodeoids FROM pg_class p LEFT JOIN pgxc_class pg ON p.oid = pg.pcrelid WHERE p.relname = 't2';
- 將邏輯集群lc1的訪問權限授予用戶u2,同時將SCHEMA u1訪問權限、表u1.t1訪問權限授予用戶u2。
GRANT usage ON NODE GROUP lc1 TO u2;
GRANT usage ON SCHEMA u1 TO u2;
GRANT select ON TABLE u1.t1 TO u2;
說明劃分邏輯集群后,相當于在原來物理集群的基礎上,再增加一層邏輯集群(NODE GROUP)的權限隔離。所以跨邏輯集群訪問數據,首先要授權用戶有邏輯集群(NODE GROUP層)權限,其次是SCHEMA權限,最后是單張表TABLE權限。如果沒有授予邏輯集群的權限,會提示類似permission denied for node group xx的錯誤信息。
- 再次切換到u2用戶,查詢u1.t1表,查詢成功,邏輯集群既實現了數據隔離,又可以在用戶授權后進行跨邏輯集群訪問。
SET ROLE u2 PASSWORD ' {password} ';
SELECT * FROM u1.t1;