【DB吐槽大会】第47期 - PG 崩溃恢复能快点吗

简介: 大家好,这里是DB吐槽大会,第47期 - PG 崩溃恢复能快点吗

背景


1、产品的问题点

  • PG 崩溃恢复能快点吗

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

  • 数据库进程被KILL -9、OOM、数据库强制非正常停库、或者操作系统、存储或其他故障导致数据库非正常停库时, 数据库再次启动需要进行恢复.
  • 恢复需要用到从上一个完成的检查点的逻辑开始位点处的WAL日志 - 到最新的WAL日志文件之间的所有WAL文件.
  • 需要多少个wal文件取决于检查点的长短, 通常内存很大的机器, 会设置较大的shared buffer, 同时设置较长的checkpoint周期来优化数据库写性能.
  • 恢复过程中被恢复的数据块包含full page时, 只需要从wal拿对应full page+wal增量record进行恢复, 但是恢复过程中数据块可能从shared buffer挤出, 那么就需要从datafile读取对应块然后+wal record恢复.
  • 这可能是非常耗费IO的操作

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

  • 所有行业, 特别是规格大的实例

4、会导致什么问题?

  • IO如果较差的话, 崩溃恢复速度慢.
  • 特别是在业务高峰期, 如果出现OOM的话, 崩溃恢复时间长对业务造成的影响巨大

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

  • 使用standby, 如主库崩溃, 激活从库.
  • 不管是数据文件还是wal文件都使用性能好(IOPS 以及 吞吐、RT)的SSD
  • 缩短checkpoint周期, 让一个周期内的wal文件尽量的少

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

  • 使用HA架构会增加风险和复杂度, 例如双节点的异步HA, 可能丢数据风险. 三节点的同步HA, 成本高, 复杂度高.
  • 使用很好的SSD, 增加了成本
  • 提高checkpoint频率, 会损耗写性能. 并且会导致full page增加, 使得产生更多的wal文件

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

  • 希望内核层面支持更友好的恢复功能
  • 并行的恢复, 提高恢复速度. 目前PolarDB支持并行wal回放
  • 例如可以支持立即开放只读功能, 恢复过程允许只读操作,自动过滤不一致数据块,或自动使用旧快照

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课15 集成DeepSeek等大模型
本文介绍了如何在PolarDB数据库中接入私有化大模型服务,以实现多种应用场景。实验环境依赖于Docker容器中的loop设备模拟共享存储,具体搭建方法可参考相关系列文章。文中详细描述了部署ollama服务、编译并安装http和openai插件的过程,并通过示例展示了如何使用这些插件调用大模型API进行文本分析和情感分类等任务。此外,还探讨了如何设计表结构及触发器函数自动处理客户反馈数据,以及生成满足需求的SQL查询语句。最后对比了不同模型的回答效果,展示了deepseek-r1模型的优势。
1066 3
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课13 单机版转换为集群版
本文介绍如何将“本地存储实例”转换为“共享存储实例”,依赖于先前搭建的实验环境。主要步骤包括:准备PFS二进制文件、格式化共享盘为pfs文件系统、启动pfsd服务、停库并拷贝数据到pfs内、修改配置文件,最后启动实例。通过这些操作,成功实现了从本地存储到共享存储的转换,并验证了新实例的功能。相关系列文章和视频链接提供了更多背景信息和技术细节。
447 0
|
存储 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 1 架构解读
PolarDB 是阿里云研发的云原生分布式数据库,基于 PostgreSQL 开源版本,旨在解决传统数据库在大规模数据和高并发场景下的性能和扩展性问题。其主要特点包括: 1. **存储计算分离架构**:通过将计算与存储分离,实现极致弹性、共享一份数据以降低成本、透明读写分离。 2. **HTAP 架构**:支持混合事务处理和分析处理(HTAP),能够在同一系统中高效执行 OLTP 和 OLAP 查询。 3. **优化的日志复制机制**:采用只复制元数据的方式减少网络传输量,优化页面回放和 DDL 锁回放过程。 4. **并行查询与索引创建**:引入 MPP 分布式执行引擎。
761 8
|
关系型数据库 分布式数据库 PolarDB
PolarDB开源数据库进阶课9 读写分离
本文介绍了如何配置读写分离工具pgpool-II for PolarDB,使应用程序能够透明地实现读写分离。
582 1
|
存储 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 8 数据库生态
PolarDB是一款开源的云原生分布式数据库,源自阿里云商业产品。为降低使用门槛,PolarDB携手伙伴打造了完整的开源生态,涵盖操作系统、芯片、存储、集成管控、监控、审计、开发者工具、数据同步、超融合计算、ISV软件、开源插件、人才培养、社区合作及大型用户合作等领域。通过这些合作伙伴,PolarDB提供了丰富的功能和服务,支持多种硬件和软件环境,满足不同用户的需求。更多信息请访问[PolarDB开源官方网站](https://openpolardb.com/home)。
816 4
|
存储 NoSQL 算法
Redis 搭建分片集群
Redis 搭建分片集群
592 2
|
NoSQL Redis
Redis Cluster集群主从切换踩坑记
Redis Cluster经过运行一段时间后,会经常发生主从关系的自动切换,应该是redis.conf里的集群节点的超时时限参数cluster-node-timeout有关。
13948 0
|
负载均衡 关系型数据库 PostgreSQL
Pgpool-II实现高可用+读写分离+负载均衡(八)---- 维护工具
Pgpool提供了一些维护工具,用于日常观察Pgpool运行状态、上线、下线节点等操作。主要有:pcp_stop_pgpool,pcp_node_count,pcp_node_info,pcp_health_check_stats,pcp_proc_count,pcp_proc_info,pcp_detach_node,pcp_attach_node,pcp_recovery_node,pcp_promote_node,pcp_pool_status,pcp_watchdog_info,pcp_reload_config
|
缓存 安全 网络安全
【Git】Git 拉取的快速方法(含项目示例)
当你尝试从官方仓库下载文件时,有时可能会遇到下载速度过慢的问题。在这种情况下,你可以尝试使用代理服务来加速下载过程。其中一个常用的代理服务是 ghproxy(https://ghproxy.com/)。
1266 0
|
弹性计算 异构计算 AI芯片
阿里云GPU服务器租用Nvidia和AMD性能价格详解
阿里云GPU服务器租用Nvidia和AMD性能价格详解,阿里云GPU服务器租用价格表包括包年包月价格、一个小时收费以及学生GPU服务器租用费用,阿里云GPU计算卡包括NVIDIA V100计算卡、T4计算卡、A10计算卡和A100计算卡,GPU云服务器gn6i可享受3折优惠,阿里云百科分享阿里云GPU服务器租用价格表、GPU一个小时多少钱以及学生GPU服务器收费价格表
1252 0