每天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
-
https://www.csudata.com/
-
https://pigsty.cc/zh/
2、审计监控诊断优化
翟总 (曾经是我背后的男人)到海信聚好看后研发的 DBdoctor , 采用ebpf技术, 在对数据库几乎没有影响的情况下实时监控数据库和服务器的各项指标, 发现和诊断问题根因非常方便.-
https://www.dbdoctor.cn/
-
https://bytebase.cc/docs/introduction/what-is-bytebase/
-
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
-
https://www.dsgdata.com/
公开课
如果你对PolarDB学习感兴趣可以阅读这个公开课系列:
- 国庆拿下这个国产信创数据库
-
国产数据库PolarDB公开课-1 架构解读
-
国产数据库PolarDB公开课-2 快速体验
-
国产数据库PolarDB公开课-3 安装部署
- 国产数据库PolarDB公开课-4 日常运维
-
国产数据库PolarDB公开课-5 特性解读与体验
-
国产数据库PolarDB公开课-6 使用PostgreSQL开源工具/插件
-
国产数据库PolarDB公开课-7 应用场景与实践
-
国产数据库PolarDB公开课-7.1 TPCH测试
-
国产数据库PolarDB公开课-8 生态
-
国产数据库PolarDB公开课-9 参与开源社区
除了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) 及视频号: