tencent cloud

文档反馈

使用 starocks_fdw 实现读写分离

最后更新时间:2024-10-28 14:56:56
    云数据库 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)
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持