云数据库 PostgreSQL 使用 starrocks_fdw 实现读写分离

云数据库 PostgreSQL 支持自研的 starrocks_fdw 插件,让你能够将 starrocks 中的表作为 PostgreSQL 的外部表,从而实现冷热存储分离。该插件的使用兼容 mysql_fdw 插件,以下为一个使用示例,更多详细的参数及使用请参考 mysql_fdw 页面。这篇的前提是你已经部署完毕 starrocks ,且可以访问。同时你已经购买了云数据库 PostgreSQL 实例。

相关产品
云数据库 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.*.*.*', port '9030',instanceid 'ins-******',access_type '2',region 'ap-guangzhou', uin '1000******', own_uin '1000*******', vpcid 'vpc-*****', subnetid 'vpc-*****');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-> select * FROM pg_foreign_server; srvname | srvowner | srvfdw | srvtype | srvversion | srvoptions ———–+———-+——–+———+————+——————————————————————————————————————————————————————————— server_sr | 16385 | 16495 | | | {host=10.*.*.*,port=9030,instanceid=ins-*****,access_type=2,region=ap-guangzhou,uin=1000*******,own_uin=1000******,vpcid=vpc-*****,subnetid=vpc-*****,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 | 1 3 | 3 2 | 2(3 rows)

赞 (0)
上一篇 4天前
下一篇 4天前