首页 > 其他分享 >LightDB支持从节点转发DML

LightDB支持从节点转发DML

时间:2023-07-06 10:01:29浏览次数:43  
标签:lightdb standby DML primary -- lt 转发 test LightDB

LightDB, 是一个Enterprise Postgres, 恒生电子生产.

它在22.1(2022Q1)版引入一个实验性功能, standby(从节点)可接受写数据请求, 转发给主节点处理; 如果是只读请求, 在standby执行.

在ligitdb.conf的shared_preload_libraries选项后面添加lt_standby_forward以加载插件, 如:

shared_preload_libraries='lt_stat_statements,lt_stat_activity,lt_prewarm,lt_cron,lt_hint_plan,lt_show_plans,lt_standby_forward'

使用lt_standby_forward.enable_forward控制, session级别, 默认off. 可以写在lightdb.conf中, db实例级别生效.

lt_standby_forward.enable_forward = on

启用后, 如下图, client连standby, 如果发送insert等'写SQL', standby会通过conn2转发给primary.

flowchart client--conn1-->standby--conn2-->primary

当客户端使用用户user1连接standby上的db1时, 上图conn2的连接参数看起来像下面这样(不需要配置, 举例说明原理):

primary_conninfo dbname=db1 user=user1 application_name=lt_standby_forward options='-c opt1=value1 -c opt2=value2'

使用示例:

-- 连standby
$ ltsql -p 18989 -U lightdb
ltsql (13.8-22.3)

lightdb@lt_test=> 
lightdb@lt_test=> select pg_is_in_recovery();
 pg_is_in_recovery 
-------------------
 t
(1 row)

lightdb@lt_test=> create table t1(id int); --已加载库, 未启用
ERROR:  cannot execute CREATE TABLE in a read-only transaction
lightdb@lt_test=> set lt_standby_forward.enable_forward = on; --启用转发功能
SET
lightdb@lt_test=> create table t1(id int);
CREATE TABLE
lightdb@lt_test=> insert into t1 values(1),(2);
INSERT 0 2
lightdb@lt_test=> select * from t1;
 id 
----
  1
  2
(2 rows)

lightdb@lt_test=> select pg_is_in_recovery(); --上面是t(true), 现在是f(false), 说明这条语句被转发了
 pg_is_in_recovery 
-------------------
 f
(1 row)

lightdb@lt_test=> select pid,application_name from pg_stat_replication; -- standby上查不到replication
 pid | application_name 
-----+------------------
(0 rows)

上面的连接(ltsql)不要关闭, 新开一个连接连primary

--连primary
$ ltsql -p 8989 -U lightdb
ltsql (13.8-22.3)

lightdb@lt_test=> select pid,application_name from pg_stat_replication; -- primary上可以查到replication
  pid  | application_name 
-------+------------------
 12556 | walreceiver

 lightdb@lt_test=> select datname,usename,application_name,client_addr from pg_stat_activity where application_name like '%standby%'; -- primary上可以查到conn2, 前提是前面连standby不要断开
 datname | usename |  application_name  | client_addr 
---------+---------+--------------------+-------------
 lt_test | lightdb | lt_standby_forward | 127.0.0.1
(1 row)

根据文档, 有一些限制:

  1. 转发delete, update, update, insert, select with modifying CTE
  2. 转发调用会修改数据 (volatile) 的函数的select/call
  3. 只读事务在standby执行, 否则转发到primary
  4. 事务中不能含有DDL
  5. 视图会在standby展开,转发给primary. 如果视图中有当前用户无权限访问的对象, 则查询失败
  6. set命令会在standby和primary上都执行; show命令在standby执行; 不支持在连接建立后set xxx_timeout参数; timeout参数在ltsql/jdbc连接串中指定
  7. 不支持COPY FROM
  8. 不支持create temp/unlogged table
  9. 上面未提及的命令会转发到primary

(LightDB, 转发DML, DML转发, forward)

标签:lightdb,standby,DML,primary,--,lt,转发,test,LightDB
From: https://www.cnblogs.com/faxx/p/17531281.html

相关文章

  • 二层转发过程
    一、什么是二层转发? 二层转发就是基于MAC地址进行数据包转发。详解:1、二层指的就是网络七层模型中的数据链路层。2、数据链路层传输的数据单元叫-- 帧   以太帧格式       前两个字段分别是目的地址和源地址字段。第3个字段是2字节的类型字段,用来标识......
  • 腾讯云服务器配置https转发到其他端口号
    1.服务器域名解析 2.域名申请免费ssl证书 3.把证书下载到服务器解压4.配置nginx的配置文件server{listen18080ssl;server_namewww.shoubanchengshi.com;#需要将yourdomain.com替换成证书绑定的域名。ssl_certificate/www/server......
  • Nginx七层转发&URL转发
    URL转发应用场景根据HTTP的URL转发的场景,被称之为七层转发(应用层转发),然而LVS的负载均衡一般用于TCP的转发,也就被称之为4层转发。利用Nginx的七层转发,可以实现动静分离,移动、PC端页面区分,交给不同的后端服务器处理,让用户得到更佳的访问体验。通过$http_user_agent获取,根据该变......
  • 云平台软件与传统组态软件的区别 [转发]
    远程设备运维云平台的架构一般都是控制器+网关+云平台软件,网关作为桥梁嫁接的作用,将控制器的数据上送到云,并接受来自云的命令,在权限许可的情况下,将命令转发到控制器。 咋一看,云平台软件和普通的组态软件功能感觉很像,只不过是从局域网变成了互联网,二者有什么区别呢?是不是云平台......
  • Kong入门学习实践(5)API网关路由转发
    最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看。由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版。本篇,我们学习快速配置一个最常见的基本功能:API网关场景下的路由转发。API网关路由需求在API网关的需求场景中,......
  • Request请求转发
       ......
  • 使用lightdb-em或Prometheus+grafana监控lightdb/PostgreSQL
    lightdb提供了一体化的运维监控平台lightdb-em,支持集中式的监控所有的lightdb实例以及postgresql,包括单机、高可用、分布式。其架构如下: lightdb-em功能:  详细的使用可以参考官方文档,运维指南。安装包可从lightdb官网下载。如果不想使用lightdb-em......
  • lightdb 23.2新特性一览
    lightdb将于2023.6.30发布23.2版本,下面我们先来看一下这个版本的主要增强。oracle兼容Oracle兼容仍然是这个版本的主要改进之一。1、等待事件完全准确2、oracle(+)外关联,实际机制和https://www.jianshu.com/p/0d7fadda9ef13、支持boolean和numeric自动比较转换4、pl/sql中g......
  • RHEL 网络配置 --- IP转发
    一、概要1.环境RockyLinux9.1CentOS7.9二、配置1.sysctl服务(1)检查状态systemctlstatussysctl(2)开启sudosystemctlstartsysctlsudosystemctlenablesysctl2.操作IP转发(1)查看状态sysctlnet.ipv4.ip_forward输出net.ipv4.ip_forward=0,0......
  • 请求转发和重定向
    请求转发(Forward)和重定向(Redirect)是Web开发中两种常见的页面跳转方式,它们有不同的实现机制和应用场景。请求转发(Forward):请求转发是在服务器内部完成的,浏览器并不知道页面发生了转发。在服务器端,通过调用HttpServletRequest对象的forward()方法将请求转发到另一个资源(如Servle......