前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PostgreSQL pg_catcheck 系统文件的缺失的检查员

PostgreSQL pg_catcheck 系统文件的缺失的检查员

作者头像
AustinDatabases
发布2021-02-26 11:21:32
5180
发布2021-02-26 11:21:32
举报
文章被收录于专栏:AustinDatabases

POSTGRESQL 如果系统文件丢失或者无法使用,怎么办, 那堆系统文件都在哪里,怎么检测, 此刻是不是心里有慌的一匹的感觉. pg_catcheck 会帮助PGER 们来好好的来管管此事.举例,我们当访问某个对象的时候无法访问的时候, 如 could not open file base / xxxxxx, 到底是怎么回事.

pg_catcheck 是检查在pg_namespace.oid中不存在的relnamespace,通过 pg_catcheck 来的检测来说明当前PG的系统文件中的文件和关系是否一一对应.

pg_catcheck 对于某一个数据库是可以进行相关的数据一致性的判断, 命令和psql 是类似的,如果是对于详细信息展示,也是有命令可以支持的,添加 -v 命令可以对于检查的数据库的内部信息进行一个全面的扫描.

下面的检测我特意从数据库(运行)删除了一些数据文件,然后通过pg_catcheck来进行检测, 通过检测可以发现有数据丢失的情况.

这个工具负责的区域,和原因,主要是PG 存储的metadata 中对于 SQL objects 类似表,function, 等这些信息被称作system catalog table, 用户是不能修改这些信息,必须通过 create alter , drop 等方式来进行,如果系统的catalog出现问题,那么访问数据的时候会出现问题,并且tongguo pg_dump来备份也是无法进行的.

pg_catcheck本身是不能告诉你,为什么system catlog出现什么问题,何时发生的,发生的原因是什么,pg_catcheck 能告诉你的就是系统的catalog出问题了,你需要注意了

上图告知了,两个文件,并且物理位置和实际的表,VIEW 名都给出那两个system object 出现问题了,文件丢失了(这边先删除做的实验)

另外检测这个问题还可以通过 initdb -k 的参数来进行, 这个在PG 12 中可以开始使用用来对数据库的数据进行校验并反馈的系统表里面. 在初始化的时候天剑 -k 或者 --data-checksums ,但用这个功能需要注意

1 对于大型的数据库操作可能需要比较长的时间, 系统需要在关闭的状态下进行

2 对于正在复制的系统,不要轻易启动或者关闭这个参数,如果要关闭,需要将所有的复制的机器全部关闭,否则会造成在切换的过程中,数据损坏导致整体数据库无法在使用.

pg_checksums -c -D /pgdata/data/ -e -v

通过上面的命令来开启数据文件的检测

https://www.postgresql.org/docs/12/app-pgchecksums.html

具体的命令可以查看上面的连接

所以相比较危险性和功能, pg_catcheck 可以满足系统文件缺失判断的基本功能,并且可以在数据库系统启动的状态下,工作,而其他的方式就需要关闭数据库来操作,这点也是值得考虑的问题.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档