【DB吐槽大会】第33期 - PG 逻辑复制不支持DDL

简介: 大家好,这里是DB吐槽大会,第33期 - PG 逻辑复制不支持DDL

背景


1、产品的问题点

  • PG 逻辑复制不支持DDL

2、问题点背后涉及的技术原理

  • DDL无法从WAL中解析, 因此逻辑复制不能支持DDL.

3、这个问题将影响哪些行业以及业务场景

  • 使用逻辑复制的业务, 例如单元化部署, 同步数据到其他单元. 同步数据到OLAP业务库, 同步到消息队列, 同步到搜索引擎等.

4、会导致什么问题?

  • 当数据结构发生变化后, 无法捕获这个变化, 使得逻辑同步出现异常.

5、业务上应该如何避免这个坑

  • 统一协调管理DDL, 使用barrier, 在执行DDL前确保下游已同步完所有增量, 然后上下游执行DDL, 并放开barrier, 允许DML操作.
  • 如果是PG到PG的同步, 可以使用event trigger捕获DDL, 存储在表中, 这个表的内容作为DML解析传到下游订阅节点. 下游订阅节点在这个表上创建触发器, 在触发器内完成DDL回放.

6、业务上避免这个坑牺牲了什么, 会引入什么新的问题

  • 复杂度增加了, 一般用户搞不定

7、数据库未来产品迭代如何修复这个坑

  • 希望内置DDL同步功能.



相关文章
|
SQL 自然语言处理 监控
PostgreSQL插件汇总
一专多长的数据库——PostgreSQL
3269 0
|
SQL 关系型数据库 分布式数据库
PostgreSQL 在线修改数据类型 - online ddl 方法之一
标签 PostgreSQL , online ddl , trigger , ddl 事务 背景 有张表的主键id是serial,但现在不够了,需要升级成bigserial,有什么优雅的方法吗?我看下来好像会锁表很久(因为数据量挺大) 如果直接alter table,由于数据类型从4字节改成了8字节,而tuple结构是在METADATA里面的,不是每行都有,所以DEFORM需要依赖METADATA,目前来说,这种操作需要rewrite table。
4551 0
|
存储 关系型数据库 数据库
用Patroni配置PostgreSQL高可用集群
Patroni是Zalando开发的数据库高可用管理软件,用于编排和自动化PostgreSQL集群的管理过程。Patroni 需要一系列其他组件的支持,通过利用第三方分布式一致性软件,组建并实现数据库高可用方案。
用Patroni配置PostgreSQL高可用集群
|
SQL 消息中间件 存储
PostgreSQL CDC的最佳实践
PostgreSQL CDC的最佳实践
PostgreSQL CDC的最佳实践
|
消息中间件 SQL 分布式计算
一篇文章搞定数据同步工具SeaTunnel
一篇文章搞定数据同步工具SeaTunnel
10011 1
|
SQL 缓存 Java
flink cdc 同步问题之如何同步多张库表
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
SQL 关系型数据库 数据库
PostgreSQL从小白到高手教程 - 第44讲:pg流复制部署
PostgreSQL技术大讲堂 - 第44讲:pg流复制部署
569 0
|
存储 SQL 缓存
一文带你了解MySQL之Adaptive Hash Index
在InnoDB体系架构图的内存结构中,还有一块区域名为:Adaptive Hash Index,翻译成中文:自适应哈希索引,缩写:AHI,它是一个纯内存结构,我们今天就来了解它。
2785 0
|
关系型数据库 API 数据库
基于Patroni的PostgreSQL高可用环境部署
在部署PostgreSQL到生产环境中时,选择适合的高可用方案是一项必不可少的工作。本文介绍基于Patroni的PostgreSQL高可用的部署方法,供大家参考。
7891 1
|
SQL JSON NoSQL
阿里云DTS踩坑经验分享系列|链路内ETL使用手册
DTS是一个数据迁移和同步服务,通常用于数据搬迁或实时数据传输。DTS在数据同步链路基础上,提供流式数据ETL数据处理功能,支持使用DSL(Domain Specific Language)脚本语言灵活地定义数据处理逻辑。
95069 3