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

openGauss 逻辑复制支持DDL操作

时间:2024-05-14 16:41:04浏览次数:25  
标签:订阅 创建 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/techbing/p/18191598

相关文章

  • openGauss 慢SQL诊断
    慢SQL诊断背景信息在SQL语句执行性能不符合预期时,可以查看SQL语句执行信息,便于事后分析SQL语句执行时的行为,从而诊断SQL语句执行出现的相关问题。前提条件数据库实例运行正常。查询SQL语句信息,需要正确设置GUC参数track_stmt_stat_level。只能用系统管理员和监控管理员权限......
  • JDBC连接openGauss6.0和PostgreSQL16.2性能对比
    本文分享自华为云社区《JDBC连接openGauss6.0和PostgreSQL16.2性能对比》,作者:Gauss松鼠会小助手。PostgreSQLvsopenGauss01前置准备安装JDK:详细安装步骤请问度娘,输入能正常返回即已安装[root@db06~]#java-versionopenjdkversion"1.8.0_262"OpenJDKRuntimeEnvir......
  • BMP图片的复制#显示到显示屏
    复制BMP图片#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<unistd.h>#include<sys/mman.h>#include<stdlib.h>/**复制bmp图片***/#pragmapack(1)//定义BMP文件头部结构ty......
  • NumPy 数组复制与视图详解
    NumPy数组的复制与视图NumPy数组的复制和视图是两种不同的方式来创建新数组,它们之间存在着重要的区别。复制复制会创建一个包含原始数组相同元素的新数组,但这两个数组拥有独立的内存空间。这意味着对复制进行的任何更改都不会影响原始数组,反之亦然。创建副本可以使用以下方......
  • docker 环境如何复制到另外一台
    如何将Docker环境复制到另外一台机器在使用Docker进行软件开发和部署时,我们经常会面临需要将一个已经配置好的Docker环境复制到另外一台机器上的情况。本文将介绍一种简单的方法来解决这个问题,并提供相应的代码示例。问题背景假设我们在一台机器上已经成功配置好了一个Doc......
  • openGauss 开启RemoveIPC引起的core问题
    开启RemoveIPC引起的core问题问题现象操作系统配置中RemoveIPC参数设置为yes,数据库运行过程中出现宕机,并显示如下日志消息。FATAL:semctl(1463124609,3,SETVAL,0)failed:Invalidargument原因分析当RemoveIPC参数设置为yes时,操作系统会在对应用户退出时删除IPC资源(共......
  • openGauss 例行维护表
    例行维护表为了保证数据库的有效运行,数据库必须在插入/删除操作后,基于客户场景,定期做VACUUMFULL和ANALYZE,更新统计信息,以便获得更优的性能。相关概念使用VACUUM、VACUUMFULL和ANALYZE命令定期对每个表进行维护,主要有以下原因:VACUUMFULL可回收已更新或已删除的数据所占据的......
  • openGauss 例行维护
    例行维护检查时间一致性检查应用连接数例行维护表例行重建索引数据安全维护建议为保证openGauss数据库中的数据安全,避免丢失数据,非法访问数据等事故发生,请仔细阅读以下内容。慢SQL诊断......
  • openGauss 快速设置
    快速设置首先在postgresql.conf中设置配置选项:wal_level=logical对于一个基础设置来说,其他所需的设置使用默认值就足够了。需要调整pg_hba.conf以允许复制(这里的值取决于实际的网络配置以及用于连接的用户):hostallrepuser0.0.0.0/0sha256然后在发布......
  • openGauss 逻辑复制
    逻辑复制逻辑解码使用逻辑复制工具复制数据发布订阅详情查看:https://opengauss.org详情查看:https://docs-opengauss.osinfra.cn......