【PostgreSQL 创新营】第六课:PostgreSQL复制原理及高可用集群 答疑汇总

本文涉及的产品
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 【PostgreSQL 创新营】第六课:PostgreSQL复制原理及高可用集群 答疑汇总

Q1:刘海清,如何在从库备份,选择什么软件或者命令
1)生产建议使用从库进行备份。数据备份的方式有:pg_dump、pg_dumpall、pg_rman、barman、pg_basebackup等
2)日志备份可以通过:从库设置archive_mode = always方式实现日志记录。linux平台下可每日定时tar + rsync备份到远端

Q2:两个数据库如何实现增量同步?有更新逻辑时如何处理?
1)增量同步的方式有:
物理同步:基于流复制协议,将增量的redo回放到从库。如有更新逻辑,会将对应的redo回放,更新对应buffer
逻辑同步:同步模式设置为:logical。可使用内置的逻辑复制方式,即发布端创建PUBLICATION,订阅端创建SUBSCRIPTION。当然也可以使用wal2json等插件
2)物理同步是整库的复制,类似oracle的DG。逻辑复制可以针对具体表等
3)使用逻辑同步时建议表均有主键,以实现更好的性能

Q3:PG如何做基于流复制的跨数据中心(跨子网)自动故障转移解决方案,要求对应用透明,不用改连接串
1)跨数据中心想实现应用透明,不改连接串。通常应用访问DNS域名,具体解析到那个数据中心由高可用去判断
2)跨数据中心的自动故障转移方案:使用partoni(推荐)、pg_auto_failover

Q4:pg 9.4有这个逻辑复制订阅功能吗?
有,从PG 9.4开始的

Q5:PG如何从WAL日志解析出具体SQL?有什么好的工具推荐吗?
可以使用wal2json、alidecode、pgoutput、decoderbufs等

Q6:PG中,业务误操作后快速闪回具体某张表的某些操作?
开源版暂时没有闪回功能。可以基于流复制搭建专门的从库用于误操作恢复(基于时间点恢复),有快照可以加快恢复速度

Q7:PG的流复制在备库应用日志时,是直接修改数据文件的物理块吗?不用翻译成SQL重跑
物理复制不需要

Q8:刚老师讲的partoni做高可用可能会丢数据是在什么场景下?
建议从数据库端实现数据的一致性保障!

Q9:ECOX开源吗?
商业系统,可自行下载测试:https://w3.ww-it.cn/Fileud/lists/cate_id/30

Q10:siupan,pg_auto_failover是否可用于生产环境?
建议复查代码逻辑

Q11:repmgr里面的witness什么场景下必须用?没有好像也影响不大
通常用于仲裁节点,建议核查文档

Q12:pg的日志数据解析工具有么,支持kafka,或者直接到clickhouse类数仓的
1)日志解析:logical 模式plugin解析redo log

2)同步依赖CDC工具,详见:
正确的配置和使用 Debezium CDC 捕获、同步 PG 逻辑增量数据
https://github.com/digoal/blog/blob/master/202011/20201127_02.md

Q13:请问下从库的统计信息都是为零的,在从库执行计划是怎么生产的,会参考主库的统计信息吗?
1)正常情况下从库也是有统计信息的
2)可以核查是否是基于规则的,或者硬版本

Q14:PG可以用这个逻辑复制订阅功能吗?
理论上内核为PG 9.4以后的支持,详见GP文档官方文档

Q15:请问流复制一个主节点支持多少个从节点?
1)受限于max_wal_senders参数配置
2)受限于具体的硬件可用资源

Q16:个人在实现WAL逻辑复制工具时,通过创建复制槽时,获取快照,然后根据快照实现一些业务操作,但在业务操作出错时,如果获取先前的快照 名称,看文档上创建复制槽时的快照 仅在当时有效,再连接就获取不到了,请问有什么解决方案?
1)逻辑复制槽是全局的,与是否当前会话无关
2)快照可以export导出给其他会话。例如:备份数据。可当前启动事务并创建快照,然后创建逻辑复制槽,其他会话可正常使用该逻辑复制槽。当前会话导出全量数据。从而全量+增量备份

Q17:pg的从库 能支持延时从库么
支持的。可以在recovery.conf添加参数,例:recovery_min_apply_delay = '48h'

Q18:pg页内组织tuple,是不是很容易在页间移数据?
是的。如进行垃圾回收,会挪动组内tuple。详解可观看视频答疑

Q19:pg加索引可以加参数不锁表,加列可以不锁表吗
1)正常情况下(不需要rewrite table),加列是当即生效的。这个也是有区别于MySQL的
2)建议业务时间段内频繁使用的大表,选定闲时做加列操作

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
存储 关系型数据库 数据库
用Patroni配置PostgreSQL高可用集群
Patroni是Zalando开发的数据库高可用管理软件,用于编排和自动化PostgreSQL集群的管理过程。Patroni 需要一系列其他组件的支持,通过利用第三方分布式一致性软件,组建并实现数据库高可用方案。
用Patroni配置PostgreSQL高可用集群
|
关系型数据库 MySQL Nacos
nacos数据库使用PostgreSQL及集群配置
从Nacos2.2版本开始,Nacos提供了数据源扩展插件,以便让需要进行其他数据库适配的用户自己编写插件来保存数据。
|
2月前
|
运维 监控 关系型数据库
【一文搞懂PGSQL】7. PostgreSQL + repmgr + witness 高可用架构
该文档介绍了如何构建基于PostgreSQL的高可用架构,利用repmgr进行集群管理和故障转移,并引入witness节点增强网络故障检测能力。repmgr是一款轻量级的开源工具,支持一键部署、自动故障转移及分布式节点管理。文档详细描述了环境搭建步骤,包括配置postgresql参数、安装与配置repmgr、注册集群节点以及配置witness节点等。此外,还提供了故障手动与自动切换的方法及常用命令,确保集群稳定运行。
|
监控 关系型数据库 Go
《打造高可用PostgreSQL:策略与工具》
《打造高可用PostgreSQL:策略与工具》
215 0
|
5月前
|
负载均衡 监控 关系型数据库
PostgreSQL从小白到高手教程 - 第48讲:PG高可用实现keepalived
PostgreSQL技术大讲堂 - 第48讲:PG高可用实现keepalived
206 1
|
5月前
|
关系型数据库 测试技术 数据库
`pg_rewind` 是 PostgreSQL 数据库的一个工具,用于将一个数据库集群回退到指定的时间点
pg_rewind 是 PostgreSQL 数据库的一个工具,用于将一个数据库集群回退到指定的时间点。这对于恢复数据或解决某些问题非常有用。 简单来说,如果你有一个 PostgreSQL 数据库集群并且你知道在某个时间点它是健康的,但之后出现了问题,你可以使用 pg_rewind 来将数据库回退到那个时间点,从而恢复到已知的、健康的、一致的状态。 使用 pg_rewind 的基本步骤如下: 确定基准时间:首先,你需要确定一个基准时间点,知道在该时间点上数据库是健康的。 备份当前数据库:在执行 pg_rewind 之前,确保你已经备份了当前的数据库。 执行 pg_rewind:使用
178 1
|
10月前
|
关系型数据库 数据安全/隐私保护 PostgreSQL
基于Docker快速搭建 PostgreSQL 高可用方案
基于Docker快速搭建 PostgreSQL 高可用方案
681 0
|
消息中间件 关系型数据库 Kafka
TiDB实时同步数据到PostgreSQL(一) ---- 搭建kafka集群
TiDB实时同步数据到PostgreSQL的第一篇,主要介绍kafka集群的搭建。
|
9天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
43 6
|
7天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
39 3
Mysql(4)—数据库索引

相关产品

  • 云原生数据库 PolarDB
  • 云数据库 RDS PostgreSQL 版