AnalyticDB PostgreSQL版Serverless模式提供了資料共用功能,可以實現跨執行個體查詢共用資料。本文將指導您快速完成資料共用的建立和使用的全流程。
教程說明
請準備兩個Serverless版本執行個體:執行個體A和執行個體B。執行個體A和執行個體B屬於同一個阿里雲帳號,且位於同一地區。建立Serverless版本執行個體,請參見建立執行個體。
本教程將為執行個體A和執行個體B開通資料共用。開通後,為執行個體A的源庫建立一個Share,並將測試表加入Share,然後將Share授權給執行個體B的目標庫。執行個體B的目標庫在訂閱Share後,可以查詢源庫測試表的資料。
操作步驟
- 將Serverless版本執行個體加入資料共用。
- 登入雲原生資料倉儲AnalyticDB PostgreSQL版控制台。
- 在控制台左上方,選擇執行個體所在地區。
- 在左側導覽列中,單擊資料共用。
- 在數據共享實例頁面,選中需要加入資料共用的執行個體,單擊添加。說明 只有加入資料共用的執行個體才能實現執行個體間共用資料。此處請選擇至少兩個執行個體。本教程中,執行個體A用於共用資料,執行個體B使用執行個體A共用的資料。
- 在添加共享實例對話方塊中,單擊確定。說明 添加資料共用過程需要5~10分鐘左右,添加成功後可以跨執行個體訪問共用資料。
- 使用用戶端工具分別串連執行個體A和執行個體B。具體操作,請參見用戶端串連。本教程的用戶端工具以psql和DMS為例。
- 在執行個體A上建立源庫,並查詢源庫的UUID。
- 在執行個體A上建立源庫db01。
CREATE DATABASE db01;
- 查詢源庫的UUID為步驟8做準備。
執行
\c db01;
切換到db01庫,再執行以下語句查詢UUID。SELECT current_database_uuid();
- 在執行個體A上建立源庫db01。
- 在執行個體B上建立目標庫,並查詢目標庫的UUID。
- 在執行個體B上建立目標庫db02。
CREATE DATABASE db02;
- 查詢目標庫的UUID為步驟5做準備。
執行
\c db02;
切換到db02庫,再執行以下語句查詢UUID。SELECT current_database_uuid();
- 在執行個體B上建立目標庫db02。
- 在源庫上建立Share,並賦權給目標庫。
- 切換至源庫。
- psql
\c db01;
- DMS
- 在左側已登入執行個體中找到執行個體A。
- 單擊db01庫。
- 雙擊public Schema切換到目標庫。
您可以使用以下函數確認當前使用的資料庫是否正確:
SELECT current_database();
返回資訊如下時,表示當前使用的資料庫為db01:
current_database ------------------ db01 (1 row)
- psql
- 建立Share。
CREATE DATASHARE s01;
- 將Share賦權給目標庫。
GRANT USAGE ON DATASHARE s01 TO DATABASE "<target_dbuuid>";
<target_dbuuid>"
為步驟4中查詢到的目標庫db02的UUID。
- 切換至源庫。
- 在源庫db01中建立測試表t1_1,並在表中插入測試資料。
CREATE TABLE t1_1 (a int, b int, c int, d int) DISTRIBUTED BY (a); INSERT INTO t1_1 SELECT v,v,v,v FROM generate_series(1, 10) AS v;
表結構如下:
a | b | c | d ----+----+----+---- 1 | 1 | 1 | 1 2 | 2 | 2 | 2 5 | 5 | 5 | 5 6 | 6 | 6 | 6 7 | 7 | 7 | 7 9 | 9 | 9 | 9 10 | 10 | 10 | 10 3 | 3 | 3 | 3 4 | 4 | 4 | 4 8 | 8 | 8 | 8 (10 rows)
- 將測試表加入Share。
ALTER DATASHARE s01 ADD TABLE t1_1;
- 為目標庫db02訂閱Share。
- 切換到目標庫。
- psql
\c db02;
- DMS
- 在左側已登入執行個體中找到執行個體B。
- 單擊db02庫。
- 雙擊public Schema切換到目標庫。
您可以使用以下函數確認當前使用的資料庫是否正確:
SELECT current_database();
返回資訊如下時,表示當前使用的資料庫為db02:
current_database ------------------ db02 (1 row)
- psql
- 訂閱Share,並設定Share的本地別名。
IMPORT DATASHARE s01 AS s01a FROM DATABASE "<source_dbuuid>";
<source_dbuuid>
為步驟3中查詢到的目標庫db01的UUID。
- 切換到目標庫。
- 在目標庫db02中查詢源庫db01共用的資料。
SELECT * FROM s01a.public.t1_1 ORDER BY 1;
返回資訊如下:
a | b | c | d ----+----+----+---- 1 | 1 | 1 | 1 2 | 2 | 2 | 2 5 | 5 | 5 | 5 6 | 6 | 6 | 6 7 | 7 | 7 | 7 9 | 9 | 9 | 9 10 | 10 | 10 | 10 3 | 3 | 3 | 3 4 | 4 | 4 | 4 8 | 8 | 8 | 8 (10 rows)