tencent cloud

云数据库 PostgreSQL

动态与公告
产品动态
产品简介
产品概述
产品特性
产品优势
应用场景
信息安全说明
地域和可用区
产品功能列表
大版本生命周期说明
MSSQL 兼容版
产品计费
计费概述
实例类型与规格
购买方式
退费说明
欠费说明
备份空间收费说明
快速入门
创建 PostgreSQL 实例
连接 PostgreSQL 实例
管理 PostgreSQL 实例
数据导入
通过 DTS 迁移数据
内核能力介绍
内核版本概述
内核版本更新动态
查看内核版本
自研内核功能介绍
数据库审计
审计服务说明
开通审计服务
查看审计日志
修改审计服务
审计性能说明
用户指南
实例管理
升级实例
CPU 弹性扩容
只读实例
账号管理
数据库管理
参数管理
日志管理及分析
备份与恢复
数据迁移
插件管理
网络管理
访问管理
数据安全
租户及资源隔离
安全组
监控与告警
标签
AI 实践
使用 tencentdb_ai 插件调用大模型
使用 tencentdb_ai 插件构建 AI 应用
结合 Supabase 快速构建基于云数据库 PostgreSQL 的后端服务
实践教程
跨库访问
如何在 PostgreSQL 中自动创建分区
基于 pg_roaringbitmap 实现超大规模标签查找
一条 SQL 实现查询附近的人
如何配置云数据库 PostgreSQL 作为 GitLab 外部数据源
通过 cos_fdw 插件支持分级存储能力
通过 pgpool 实现读写分离
通过 auto_explain 插件实现慢 SQL 分析
使用 pglogical 进行逻辑复制
使用 Debezium 采集 PostgreSQL 数据
在 CVM 本地搭建 PostgreSQL 异地灾备环境
只读实例与只读组实践教程
如何使用云函数定时操作数据库
表膨胀处理
性能白皮书
测试方法
测试结果
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Read-only Replica APIs
Backup and Recovery APIs
Parameter Management APIs
Security Group APIs
Performance Optimization APIs
Account APIs
Specification APIs
Network APIs
Data Types
Error Codes
常见问题
相关协议
Service Level Agreement
Terms of Service
词汇表
联系我们

使用 starocks_fdw 实现读写分离

PDF
聚焦模式
字号
最后更新时间: 2025-04-30 12:09:26
云数据库 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 DATABASE
postgres=> \\c am_sr
psql (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 | 1
3 | 3
2 | 2
(3 rows)


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈