云数据库 PostgreSQL 支持自研的 starrocks_fdw 插件,让您能够将 starrocks 中的表作为 PostgreSQL 的外部表,从而实现冷热存储分离。该插件的使用兼容 mysql_fdw 插件,以下为一个使用示例,更多详细的参数及使用请参考 mysql_fdw 官网。本文的前提是您已经部署完毕 starrocks ,且可以访问。同时您已经购买了云数据库 PostgreSQL 实例。
本文中,已经购买一个云数据库 PostgreSQL 实例,且在同一个 VPC 下的 CVM 上已经自建一个 starrocks。下面将为您一一描述操作过程。
说明:
starocks_fdw 插件当前只支持 v13.14_r1.17及以上的 PG13版本。
在 starrocks 上准备数据
新建表格 sr_m1:
mysql> CREATE TABLE sr_m1 (-> id int not null,-> str INT-> );Query OK, 0 rows affected (0.02 sec)
插入数据:
mysql> insert into sr_m1(id,str)values(1,1),(2,2),(3,3);Query OK, 3 rows affected (0.48 sec){'label':'insert_61cc249a-758a-11ef-a99a-5254006f765d', 'status':'VISIBLE', 'txnId':'1024'}
检查数据插入成功:
mysql> select * from sr_m1;+------+------+| id | str |+------+------+| 1 | 1 || 3 | 3 || 2 | 2 |+------+------+3 rows in set (0.01 sec)
在云数据库 PostgreSQL 上创建插件
新建 database 并切换至该数据库,如您已有数据库可以忽略:
postgres=> create database am_sr;CREATE DATABASEpostgres=> \\c am_srpsql (14.11, server 13.14)You are now connected to database "am_sr" as user "dbadmin".am_sr=>
创建插件:
am_sr=> create extension starrocks_fdw;CREATE EXTENSION
在云数据库 PostgreSQL 上创建外部服务和用户映射
am_sr=> CREATE SERVER server_sr FOREIGN DATA WRAPPER starrocks_fdw OPTIONS (host '10.21.0.11', port '9030',instanceid 'ins-xxx3tfi5',access_type '2',region 'ap-guangzhou', uin '100033123456', own_uin '100033456789', vpcid 'vpc-fqxagfew', subnetid 'vpc-fqxawe23');CREATE SERVER
创建用户映射,假设云数据库 PostgreSQL 的用户是
dbadmin
,希望使用用户名root
和密码123456
连接到 starrocks,则命令如下:am_sr=> CREATE USER MAPPING for dbadmin SERVER server_sr OPTIONS (password '123456', username 'root');CREATE USER MAPPING
您可以使用如下命令查看当前已经新建的外部服务:
am_sr-> FROM pg_foreign_server;srvname | srvowner | srvfdw | srvtype | srvversion |srvoptions-----------+----------+--------+---------+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------server_sr | 16385 | 16495 | | | {host=10.21.0.11,port=9030,instanceid=ins-xxx3tfi5,access_type=2,region=ap-guangzhou,uin=100033123456,own_uin=100033456789,vpcid=vpc-fqxagfew,subnetid=vpc-fqxawe23,linkid=352}(1 row)
您同时可以使用如下命令查看当前已经建立的用户映射:
am_sr=> SELECT um.umid, um.srvid, fs.srvname, um.umuser, r.rolname AS usename, um.umoptions FROM pg_user_mappings um JOIN pg_foreign_server fs ON um.srvid = fs.oid JOIN pg_roles r ON um.umuser = r.oid;umid | srvid | srvname | umuser | usename | umoptions-------+-------+-----------+--------+---------+---------------------------------16499 | 16498 | server_sr | 16385 | dbadmin | {password=123456,username=root}(1 row)
在云数据库 PostgreSQL 上创建外部表
创建表格:
am_sr=> CREATE TABLE sr (id INT NOT NULL,str INT) PARTITION BY RANGE (id);CREATE TABLE
创建外部表:
am_sr=> CREATE foreign TABLE sr_m PARTITION OF sr FOR VALUES FROM (1) TO (10) SERVER server_sr OPTIONS (dbname 'my_database', table_name 'sr_m1');CREATE FOREIGN TABLE
查询数据:
am_sr=> select * from sr;id | str----+-----1 | 13 | 32 | 2(3 rows)