PostgreSQL码农集散地

每天5分钟PG聊通透第28期,为什么备份会导致数据库膨胀!

参考文档点击文末 阅读原文 打开; 推荐 《最好的PostgreSQL学习镜像 》 ;

每天5分钟PG聊通透第28期,为什么这样备份会导致数据库膨胀!

备份、订阅、恢复

4、为什么逻辑备份可能导致实例膨胀?

https://www.bilibili.com/video/BV1Z14y1Z7nm/

这和垃圾回收的机制有关, 最早的XID之后产生的垃圾tuple, 都不会被回收.

逻辑备份会开启一个RR事务, 备份持续时间越久, 不可被回收的垃圾堆积的概率就越大. 所以越有可能膨胀.

例如备份持续了5个小时, 这5个小时里面有10亿条记录被update或delete, 那么这些垃圾tuple都不能在备份结束前被回收, 导致碰撞.

《PostgreSQL垃圾回收代码分析 - why postgresql cann't reclaim tuple is HEAPTUPLE_RECENTLY_DEAD》

《PostgreSQL 实时健康监控 大屏 - 高频指标 - 珍藏级》

《PostgreSQL DBA最常用SQL》

-- 膨胀点查询  
select * from (
select datname,usename,least(xact_start, query_start) as least_start,  
greatest(age(backend_xid), age(backend_xmin)) as greatest_age,  
now()-least(xact_start, query_start) as old_ts, 
query  
from pg_stat_activity  
where ltrim(lower(query),' ') !~ '^vacuum'  
and not (query ~ 'autovacuum' and backend_type <> 'client backend')  
and pid <> pg_backend_pid()  
order by greatest(age(backend_xid), age(backend_xmin)) desc nulls last limit 1  
) t1 
union all 
select * from (
select database,owner,prepared,age(transaction),now()-prepared,'2pc xact: '||gid from pg_prepared_xacts
order by age(transaction) desc nulls last limit 1 
) t2 ;

膨胀点监测 - 多久以前的垃圾可以被回收

时间间隔越大,说明越容易导致膨胀。

排查这几个方向,长事务,长SQL,2PC,持有SNAPSHOT的QUERY。必要时把不合理的老的会话干掉。

with a as  
(select min(xact_start) m from pg_stat_activity where backend_xid is not null or backend_xmin is not null),  
b as (select min(prepared) m from pg_prepared_xacts)  
select now()-least(a.m,b.m) from a,b;  

今日荐书

彩蛋: 国产数据库周边生态

当然一款数据库要流行起来, 除了自己要强大, 还离不开生态. 用好周边生态工具, 管理水平战胜90%老司机!!! 下面简单介绍一下国产数据库周边生态.

1、管控软件

鸣嵩 (前阿里云数据库总经理 / 研究员)等大佬们创业创办的云猿生, 核心产品是 KubeBlocks . 他们的理念是让管理数据库和搭积木一样简单, 如果你要管理很多套并且种类(OLTP\OLAP\NoSQL\KV\TS\MQ等)很多的数据库产品, 推荐首选.
  • https://github.com/apecloud/kubeblocks
PG中文社区核心委员 唐成 老师的公司乘数开源的 Clup , 专用管理PostgreSQL和PolarDB的集群管理软件, 如果你要管理很多套数据库, 推荐选择. 并且Clup还提供了企业版、自研的连接池、分布式存储、一体机、备份平台等, 是企业用户推荐之选.
  • https://www.csudata.com/
若航 开源的 pigsty , 集成了300多个PG插件的PG集群和PolarDB集群管理软件, 如果你要管理很多套PG或PolarDB数据库, 且对插件有特别多的需求, 推荐选择.
  • https://pigsty.cc/zh/

2、审计监控诊断优化

翟总 (曾经是我背后的男人)到海信聚好看后研发的 DBdoctor , 采用ebpf技术, 在对数据库几乎没有影响的情况下实时监控数据库和服务器的各项指标, 发现和诊断问题根因非常方便.
  • https://www.dbdoctor.cn/
天舟 老哥的核心产品 Bytebase 是位于您和数据库之间的中间件。它是数据库 DevOps 的 GitLab/GitHub,专为开发人员、DBA 和平台工程师打造。
  • https://bytebase.cc/docs/introduction/what-is-bytebase/
PawSQL , SQL优化和诊断产品. D-Smart , Oracle老前辈 白老大 出品, 专注企业级市场, 将业界顶级DBA经验的产品化作品, 产品功能包括数据库监控、诊断、优化等.
  • https://www.modb.pro/db/567140

3、国产数据库IDE

IDE是开发者的必备工具,例如社区有pgAdmin, 国产IDE则可以看看老程序猿 达刚 老师的 DeskUI :
  • https://www.deskui.com

4、数据同步&迁移&备份恢复

NineData , 老领导出去创业做的产品, 产品涵盖了数据同步、迁移、备份、比对、devops、chatDBA等.
  • https://www.ninedata.cloud/home
DSG , 非常老牌的数据库同步迁移企业级产品, 支持各种数据库的异构和同构迁移, 用他们的话说, 没有dsg搞不定的迁移, 比goldengate还牛.
  • https://www.dsgdata.com/

公开课

如果你对PolarDB学习感兴趣可以阅读这个公开课系列:


除了PolarDB还非常值得关注的几款PG栈国产数据库:

  • HaloDB (基于PG兼容PostgreSQL、Oracle、MySQL. http://www.halodbtech.com/ )、
  • IvorySQL (基于开源PG兼容PG、Oracle. https://www.ivorysql.org/zh-cn/ )、
  • ProtonBase (云原生分布式数仓. https://protonbase.com/ )、
  • 成都 文武 数据库(https://ww-it.cn)

参考文档点击 阅读原文 获得
感谢关注我的github (https://github.com/digoal/blog) 及视频号: