首页 > 其他分享 >openGauss 逻辑复制支持DDL操作

openGauss 逻辑复制支持DDL操作

时间:2024-05-13 14:42:48浏览次数:23  
标签:订阅 创建 CREATE 复制 DDL dzy openGauss true

逻辑复制支持DDL操作

功能描述

Vastbase在逻辑复制过程中支持如下DDL操作:

  • CREATE/DROP TABLE|TABLE PARTITION
  • CREATE/DROP INDEX

注意事项

  • 只支持行存表的DDL操作。

  • 不支持列存,ustore存储引擎。

  • 在订阅端手动删除表会导致DDL同步失败,发布订阅阻塞。

  • 不支持在对表进行相关的表结构操作中调用VOLATILE函数。

    在为表增加一个字段并指定默认值中执行了VOLATILE函数,而这个函数中进行了创建表的DDL操作,这样在新增字段并为其计算默认值的过程中会因为调用VOLATILE函数写入其他DDL日志,导致后续在解码时读取到这个DDL日志时进行了重复的操作。

语法格式

CREATE PUBLICATION pub_name FOR ALL TABLES with(publish='insert,update,delete,truncate',ddl='table');

参数说明

  • pub_name

    创建的发布名称。

  • ddl='table'

    ddl='table'为语法扩充,表示支持TABLE相关的DDL语法。如果需要其他DDL语法,则设置ddl='all'。在设置ddl='all'时,只允许FOR ALL TABLES选项。

示例

前置步骤: 搭建逻辑复制环境。

1、修改配置文件$PGDATA/postgresql.conf(发布端和订阅端都要修改)。

wal_level=logical

2、在$PGDATA/pg_hba.conf配置文件中添加如下配置参数(发布端和订阅端都要修改)。

host replication all 0.0.0.0/0 md5

3、在发布端创建数据库dzy_soudb。

CREATE DATABASE dzy_soudb;
\c dzy_soudb

4、在订阅端执行加密操作。

vb_guc generate -S Aa123456 -D $GAUSSHOME/bin -o subscription

5、在订阅端创建数据库dzy_desdb。

CREATE DATABASE dzy_desdb;
\c dzy_desdb

功能使用示例: 对创建发布之前的表进行alter table操作。

1、创建测试表(发布端和订阅端都要创建)。

CREATE TABLE logical_tb1_中文名(col1 boolean[],col2 boolean);

2、在主库创建发布pub1。

CREATE PUBLICATION pub1 FOR ALL TABLES with(publish='insert,update,delete,truncate',ddl='all');

3、查询系统表PG_PUBLICATION。

SELECT * FROM pg_publication;

返回结果为:

 pubname | pubowner | puballtables | pubinsert | pubupdate | pubdelete | pubtruncate | pubddl
---------+----------+--------------+-----------+-----------+-----------+-------------+--------
 pub1    |       10 | t            | t         | t         | t         | t           |     -1
(1 row)

4、在从库创建订阅(一定要保证先创建发布端)。

创建订阅时指定的端口应为主库端口+1。用户应该对连接信息做相应修改。

CREATE SUBSCRIPTION sub1 CONNECTION 'host=xxx.xx.xxx.xxx port=xxxx user=vbadmin dbname=dzy_soudb password=xxxxxx' PUBLICATION pub1;

5、查询系统表PG_SUBSCRIPTION。

SELECT * FROM pg_subscription;

返回结果为:

 subdbid | subname | subowner | subenabled |                                                                   subconninfo
                                                     | subslotname | subsynccommit | subpublications | subbinary | submatchddlowner
---------+---------+----------+------------+---------------------------------------------------------------------------------------------
-----------------------------------------------------+-------------+---------------+-----------------+-----------+------------------
   18797 | sub1    |       10 | t          | host=xxx.xx.xxx.xxx port=xxxx user=vbadmin dbname=dzy_soudb password=encryptOpt+BKUB13sXBzye
v0xiJw2EC+kcKn+Ei+hgvT2psOYfbzje8ptkXS/GkzStq9v3uFz  | sub1        | off           | {pub1}          | f         | t
(1 row)

6、在订阅端刷新订阅。

ALTER SUBSCRIPTION sub1 REFRESH PUBLICATION;  

7、在发布端进行数据插入。

insert into logical_tb1_中文名 values ('{true,true,true}',false),('{true,false,true}',false),('{true,true,true}',true),('{false,true,true}',false),('{false,true,true}',true);

8、在发布端执行ALTER TABLE删除列操作。

ALTER TABLE logical_tb1_中文名 drop COLUMN col2;

9、订阅端查询结果。

select * from logical_tb1_中文名;

返回结果为:

  col1
---------
 {t,t,t}
 {t,f,t}
 {t,t,t}
 {f,t,t}
 {f,t,t}
(5 rows)

详情查看:https://opengauss.org

详情查看:https://docs-opengauss.osinfra.cn

标签:订阅,创建,CREATE,复制,DDL,dzy,openGauss,true
From: https://www.cnblogs.com/renxyz/p/18189150

相关文章

  • openGauss 配置设置
    配置设置发布订阅要求设置一些配置选项。在发布者端,wal_level必须被设置为logical,而max_replication_slots中设置的值必须至少是预期要连接的订阅数加上保留给表同步的连接数。发布端参数max_wal_senders应满足:max_wal_senders>=max_replication_slots+同时连接的物理复制槽......
  • openGauss 内存不足问题
    内存不足问题问题现象客户端或日志里出现错误:memoryusagereachthemax_dynamic_memory。原因分析出现内存不足可能因GUC参数max_process_memory值设置较小相关,该参数限制一个openGauss实例可用最大内存。处理分析通过工具gs_guc适当调整max_process_memory参数值。注意需......
  • openGauss 慢SQL诊断
    慢SQL诊断背景信息在SQL语句执行性能不符合预期时,可以查看SQL语句执行信息,便于事后分析SQL语句执行时的行为,从而诊断SQL语句执行出现的相关问题。前提条件数据库实例运行正常。查询SQL语句信息,需要正确设置GUC参数track_stmt_stat_level。只能用系统管理员和监控管理员权限......
  • 启停openGauss
    启停openGauss启动openGauss以操作系统用户omm登录数据库主节点。使用以下命令启动openGauss。gs_ctlstart-D/opt/data说明:如果提示找不到gs_ctl,请检查是否source过环境变量文件(默认是~/.bashrc),若不想source环境变量文件也可以手动切换到安装路径下执行该命令。......
  • openGauss 高危操作一览表
    高危操作一览表各项操作请严格遵守指导书操作,同时避免执行如下高危操作。表1中描述在产品的操作与维护阶段,进行日常操作时应注意的严禁操作。表1禁用操作操作名称操作风险严禁修改数据目录下文件名,权限,内容不能修改,不能删除内容。导致数据库节点实例出现严重错误,......
  • openGauss 监控
    监控因为逻辑复制是基于与物理流复制相似的架构的,一个发布节点上的监控也类似于对物理复制主节点的监控。有关订阅的监控信息在pg_stat_subscription中可以看到。每一个订阅工作者在这个视图都有一行。一个订阅能有零个或者多个活跃订阅工作者取决于它的状态。通常,对于一个已......
  • openGauss 架构
    架构发布者上的更改会在它们发生时实时传送给订阅者。订阅者按照数据在发布者上被提交的顺序应用数据,这样任意单一订阅中的发布的事务一致性才能得到保证。逻辑复制被构建在一种类似于物理流复制的架构上。它由“walsender”和“apply”进程实现。walsender进程开始对WAL的逻辑......
  • openGauss 管理并发写入操作
    管理并发写入操作事务隔离说明写入和读写操作并发写入事务的潜在死锁情况并发写入示例......
  • openGauss 检查时间一致性
    检查时间一致性数据库事务一致性通过逻辑时钟保证,与操作系统时间无关,但是系统时间不一致会导致诸多潜在问题,主要是后台运维和监控功能异常,因此在月度检查时建议检查各个节点的时间一致性。操作步骤以操作系统用户omm登录数据库主节点。创建记录openGauss各节点的配置文件(m......
  • openGauss 检查应用连接数
    检查应用连接数如果应用程序与数据库的连接数超过最大值,则新的连接无法建立。建议每天检查连接数,及时释放空闲的连接或者增加最大连接数。操作步骤以操作系统用户omm登录数据库主节点。使用如下命令连接数据库。gsql-dpostgres-p8000postgres为需要连接的数据库名......